Heim > Datenbank > MySQL-Tutorial > Hauptteil

MySQL – Klassiker und Lösungen zur Datenentwicklung

php是最好的语言
Freigeben: 2018-08-08 12:02:49
Original
1370 Leute haben es durchsucht

Datenentwicklung – Klassisch

  • 1. Sortieren nach Nachnamen:

Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
Nach dem Login kopieren
  • 2. Datenbankverschlüsselung:

select encrypt('原始密码')select pwdencrypt('原始密码')select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')select pwdencrypt('原始密码')select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
Nach dem Login kopieren
  • 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)
Nach dem Login kopieren
  • 4. Überprüfen Sie die Festplattenpartition:

EXEC master..xp_fixeddrives
Nach dem Login kopieren
  • 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 '不相等'
Nach dem Login kopieren
  • 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 '?'
Nach dem Login kopieren
  • 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
Nach dem Login kopieren

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
Nach dem Login kopieren
  • 9: Alle Benutzertabellen in der aktuellen Datenbank abrufen

select Name from sysobjects where xtype='u' and status>=0
Nach dem Login kopieren
  • 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 = '表名')
两种方式的效果相同
Nach dem Login kopieren
  • 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 '%表名%'
Nach dem Login kopieren
  • 12: Alle gespeicherten Prozeduren in der aktuellen Datenbank anzeigen

select name as 存储过程名称 from sysobjects where xtype='P'
Nach dem Login kopieren
  • 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
Nach dem Login kopieren
  • 14: Felder und Datentypen einer bestimmten Tabelle abfragen

select column_name,data_type from information_schema.columnswhere table_name = &#39;表名&#39;
Nach dem Login kopieren
  • 15: Datenoperationen zwischen verschiedenen Serverdatenbanken

--创建链接服务器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;
Nach dem Login kopieren
--查询示例select * from ITSV.数据库名.dbo.表名
Nach dem Login kopieren
--导入示例select * into 表 from ITSV.数据库名.dbo.表名
--以后不再使用时删除链接服务器exec sp_dropserver  &#39;ITSV &#39;, &#39;droplogins &#39;
Nach dem Login kopieren
  • –Remote-/LAN-Daten verbinden (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.表名)
Nach dem Login kopieren
  • – Lokale Tabelle in Remote-Tabelle importieren

insert openrowset( &#39;SQLOLEDB &#39;, &#39;sql服务器名 &#39;; &#39;用户名 &#39;; &#39;密码 &#39;,数据库名.dbo.表名)select *from 本地表
Nach dem Login kopieren
  • – Lokale Tabelle aktualisieren

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
Nach dem Login kopieren
  • –Für die Verwendung von openquery muss eine Verbindung erstellt werden

--首先创建一个连接创建链接服务器exec sp_addlinkedserver   &#39;ITSV &#39;, &#39; &#39;, &#39;SQLOLEDB &#39;, &#39;远程服务器名或ip地址 &#39;
Nach dem Login kopieren
--查询select *FROM openquery(ITSV,  &#39;SELECT *  FROM 数据库.dbo.表名 &#39;)
Nach dem Login kopieren
--把本地表导入远程表insert openquery(ITSV,  &#39;SELECT *  FROM 数据库.dbo.表名 &#39;)select * from 本地表
Nach dem Login kopieren
--更新本地表update bset b.列B=a.列BFROM openquery(ITSV,  &#39;SELECT * FROM 数据库.dbo.表名 &#39;) as a 
inner join 本地表 b on a.列A=b.列A
Nach dem Login kopieren
  • –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 本地表
Nach dem Login kopieren
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, &#39;NULL&#39;
6,set nocount {on|off}
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。
Nach dem Login kopieren
    SET NOCOUNT 
    为 OFF 时,返回计数
    常识

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

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage