Datenentwicklung – Klassisch
1. Sortieren nach Nachnamen:
Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
2. Datenbankverschlüsselung:
select encrypt('原始密码')select pwdencrypt('原始密码')select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')select pwdencrypt('原始密码')select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
3. Rufen Sie die Felder in der Tabelle ab:
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. Überprüfen Sie die Festplattenpartition:
EXEC master..xp_fixeddrives
5. Vergleichen Sie die Tabellen A und B auf Gleichheit:
if (select checksum_agg(binary_checksum(*)) from A) = (select checksum_agg(binary_checksum(*)) from B) print '相等'elseprint '不相等'
6. Alle Profiler-Prozesse beenden:
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. Datensatzsuche:
开头到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
Fallbeispiel 1: Eine Tabelle enthält mehr als 10.000 Datensätze. Das erste Feld der Tabelle, RecID, ist ein sich selbst erhöhendes Feld. Schreiben Sie eine SQL-Anweisung, um den 31. bis 40. Datensatz der Tabelle zu finden.
select top 10 recid from A where recid not in(select top 30 recid
aus A) Analyse: Wenn recid so geschrieben wird, treten einige Probleme auf, wenn recid einen logischen Index in der Tabelle hat.select top 10 recid from A where……
wird aus dem Index durchsucht, und die nachfolgende ausgewählte Top-30-Liste aus A wird in der Datentabelle durchsucht. Auf diese Weise stimmt die Reihenfolge im Index möglicherweise nicht mit der in der Datentabelle überein, was dazu führt Die Abfrage entspricht nicht den ursprünglich gewünschten Daten.
Lösung
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: Alle Benutzertabellen in der aktuellen Datenbank abrufen
select Name from sysobjects where xtype='u' and status>=0
10: Alle Felder einer Tabelle abrufen
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: Ansichten, gespeicherte Prozeduren und Funktionen im Zusammenhang mit einer Tabelle anzeigen
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
12: Alle gespeicherten Prozeduren in der aktuellen Datenbank anzeigen
select name as 存储过程名称 from sysobjects where xtype='P'
13: Alle von der Datenbank erstellten gespeicherten Prozeduren abfragen Benutzerdatenbank
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: Felder und Datentypen einer bestimmten Tabelle abfragen
select column_name,data_type from information_schema.columnswhere table_name = '表名'
15: Datenoperationen zwischen verschiedenen Serverdatenbanken
--创建链接服务器exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 'exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '
--查询示例select * from ITSV.数据库名.dbo.表名
--导入示例select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器exec sp_dropserver 'ITSV ', 'droplogins '
–Remote-/LAN-Daten verbinden (openrowset/openquery/opendatasource)
--1、openrowset--查询示例select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)--生成本地表select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
– Lokale Tabelle in Remote-Tabelle importieren
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)select *from 本地表
– Lokale Tabelle aktualisieren
update bset b.列A=a.列A from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 bon a.column1=b.column1
–Für die Verwendung von openquery muss eine Verbindung erstellt werden
--首先创建一个连接创建链接服务器exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询select *FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')select * from 本地表
--更新本地表update bset b.列B=a.列BFROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a inner join 本地表 b on a.列A=b.列A
–3. opendatasource/openrowset
SELECT *FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta --把本地表导入远程表insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.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码。
Verwandte Empfehlungen:
Sammlung klassischer MYSQL-Anweisungen – Entwicklung
Manuelle Installationsmethode für MySQL-Datenbanken und chinesische Lösung
Das obige ist der detaillierte Inhalt vonMySQL – Klassiker und Lösungen zur Datenentwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!