Maison >base de données >tutoriel mysql >MySQL – classiques et solutions du développement de données

MySQL – classiques et solutions du développement de données

php是最好的语言
php是最好的语言original
2018-08-08 12:02:491407parcourir

Développement de données - Classique

  • 1. Trier par traits de nom de famille :

Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
  • 2. Cryptage de la base de données :

select encrypt('原始密码')select pwdencrypt('原始密码')select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')select pwdencrypt('原始密码')select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
  • 3. Récupérer les champs de la table :

declare @list varchar(1000),@sql nvarchar(1000) 
select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'set @sql='select '+right(@list,len(@list)-1)+' from 表A' exec (@sql)
  • 4. Vérifiez la partition du disque dur :

EXEC master..xp_fixeddrives
  • 5. Comparez les tableaux A et B pour voir s'ils sont égaux :

if (select checksum_agg(binary_checksum(*)) from A)
     =
    (select checksum_agg(binary_checksum(*)) from B)
print '相等'elseprint '不相等'
  • 6. Supprimez tous les processus de profileur :

DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocessesWHERE program_name IN('SQL profiler',N'SQL 事件探查器')
EXEC sp_msforeach_worker '?'
  • 7. Recherche d'enregistrements :

开头到N条记录Select Top N * From 表
-------------------------------N到M条记录(要有主索引ID)Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID   Desc
----------------------------------N到结尾记录
Select Top N * From 表 Order by ID Desc

Exemple de cas 1 : Une table contient plus de 10 000 enregistrements. Le premier champ de la table, RecID, est un champ d'écriture auto-croissant. une instruction SQL pour rechercher les 31e au 40e enregistrements de la table.
select top 10 recid from A where recid not  in(select top 30 recid
de A) Analyse : Si écrit comme ceci, certains problèmes surviendront si recid a un index logique dans le tableau.
select top 10 recid from A where…… est recherché à partir de l'index, et la sélection suivante des 30 meilleurs récits de A est recherchée dans la table de données. De cette façon, l'ordre dans l'index peut être incompatible avec celui de la table de données, ce qui entraîne. la requête n'étant pas les données originales souhaitées.

Solution

1,用order by select top 30 recid from A order by ricid 如果该字段不是自增长,就会出现问题2,在那个子查询中也加条件:select top 30 recid from A where recid>-1例2:查询表中的最后以条记录,并不知道这个表共有多少数据,以及表结构。set @s = 'select top 1 * from T   where pid not in (select top ' + str(@count-1) + ' pid  from  T)'print @s      exec  sp_executesql  @s
  • 9 : Récupérer toutes les tables utilisateur de la base de données actuelle

select Name from sysobjects where xtype='u' and status>=0
  • 10 : Récupérer tous les champs d'une table

select name from syscolumns where id=object_id('表名')select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '表名')
两种方式的效果相同
  • 11 : Afficher les vues et les procédures stockées liées à une table, fonction

select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
  • 12 : Afficher toutes les procédures stockées dans la base de données actuelle

select name as 存储过程名称 from sysobjects where xtype='P'
  • 13 : Interroger toutes les bases de données créées par l'utilisateur

select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')
或者select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
  • 14 : Interroger les champs et les types de données d'une certaine table

select column_name,data_type from information_schema.columnswhere table_name = &#39;表名&#39;
  • 15 : Opérations de données entre différentes bases de données de serveur

--创建链接服务器exec sp_addlinkedserver   &#39;ITSV &#39;, &#39; &#39;, &#39;SQLOLEDB &#39;, &#39;远程服务器名或ip地址 &#39;exec sp_addlinkedsrvlogin  &#39;ITSV &#39;, &#39;false &#39;,null, &#39;用户名 &#39;, &#39;密码 &#39;
--查询示例select * from ITSV.数据库名.dbo.表名
--导入示例select * into 表 from ITSV.数据库名.dbo.表名
--以后不再使用时删除链接服务器exec sp_dropserver  &#39;ITSV &#39;, &#39;droplogins &#39;
  • –Connecter données distantes/LAN (openrowset/openquery/opendatasource)

--1、openrowset--查询示例select * from openrowset( &#39;SQLOLEDB &#39;, &#39;sql服务器名 &#39;; &#39;用户名 &#39;; &#39;密码 &#39;,数据库名.dbo.表名)--生成本地表select * into 表 from openrowset( &#39;SQLOLEDB &#39;, &#39;sql服务器名 &#39;; &#39;用户名 &#39;; &#39;密码 &#39;,数据库名.dbo.表名)
  • –Importer une table locale dans une table distante

insert openrowset( &#39;SQLOLEDB &#39;, &#39;sql服务器名 &#39;; &#39;用户名 &#39;; &#39;密码 &#39;,数据库名.dbo.表名)select *from 本地表
  • – mettre à jour la table locale

update bset b.列A=a.列A from openrowset( &#39;SQLOLEDB &#39;, &#39;sql服务器名 &#39;; &#39;用户名 &#39;; &#39;密码 &#39;,数据库名.dbo.表名)as a inner join 本地表 bon a.column1=b.column1
  • – l'utilisation d'openquery nécessite la création d'une connexion

--首先创建一个连接创建链接服务器exec sp_addlinkedserver   &#39;ITSV &#39;, &#39; &#39;, &#39;SQLOLEDB &#39;, &#39;远程服务器名或ip地址 &#39;
--查询select *FROM openquery(ITSV,  &#39;SELECT *  FROM 数据库.dbo.表名 &#39;)
--把本地表导入远程表insert openquery(ITSV,  &#39;SELECT *  FROM 数据库.dbo.表名 &#39;)select * from 本地表
--更新本地表update bset b.列B=a.列BFROM openquery(ITSV,  &#39;SELECT * FROM 数据库.dbo.表名 &#39;) as a 
inner join 本地表 b on a.列A=b.列A
  • –3. opendatasource/openrowset

SELECT   *FROM   opendatasource( &#39;SQLOLEDB &#39;,  &#39;Data Source=ip/ServerName;User ID=登陆名;Password=密码 &#39; ).test.dbo.roy_ta
--把本地表导入远程表insert opendatasource( &#39;SQLOLEDB &#39;,  &#39;Data Source=ip/ServerName;User ID=登陆名;Password=密码 &#39;).数据库.dbo.表名select * from 本地表
SQL Server基本函数
1.字符串函数 长度与分析用
1,datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格
2,substring(expression,start,length) 取子串,字符串的下标是从“1”,start为起始位置,length为字符串长度,实际应用中以len(expression)取得其长度
3,right(char_expr,int_expr) 返回字符串右边第int_expr个字符,还用left于之相反
4,isnull( check_expression , replacement_value )如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作类
5,Sp_addtype自定義數據類型
例如:EXEC sp_addtype birthday, datetime, 'NULL'
6,set nocount {on|off}
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。
    SET NOCOUNT 
    为 OFF 时,返回计数
    常识

    在SQL查询中:from后最多可以跟多少张表或视图:256在SQL语句中出现 Order by,查询时,先排序,后取在SQL中,一个字段的最大容量是8000,而对于nvarchar(4000),由于nvarchar是Unicode码。

Connexes recommandations :

Collection d'instructions MYSQL classiques - Développement

Méthode d'installation manuelle de la base de données MySQL et solution chinoise

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn