MYSQL經典語句大全——開發篇

 1.按姓氏筆畫排序:
  select * from tablename order by customername collate chinese_prc_stroke_ci_as //從少到多
  2.數據庫加密:
  select encrypt(‘原始密碼’)
  select pwdencrypt(‘原始密碼’)
  select pwdcompare(‘原始密碼’,’加密后密碼’) = 1–相同;否則不相同 encrypt(‘原始密碼’)
  select pwdencrypt(‘原始密碼’)
  select pwdcompare(‘原始密碼’,’加密后密碼’) = 1–相同;否則不相同
  3.取回表中字段:
  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.查看硬盤分區:
  exec master..xp_fixeddrives
  5.比較a,b表是否相等:
  if (select checksum_agg(binary_checksum(*)) from a)=(select checksum_agg(binary_checksum(*)) from b)
  print ‘相等’
  else
  print ‘不相等’
  6.殺掉所有的事件探察器進程:
  declare hcforeach cursor global for select ‘kill ‘+rtrim(spid) from master.dbo.sysprocesses where program_name in(‘sql profiler’,n’sql 事件探查器’)
  exec sp_msforeach_worker ‘?’
  7.記錄搜索:
  開頭到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
  案例
  例如1:一張表有一萬多條記錄,表的第一個字段 recid 是自增長字段, 寫一個sql語句, 找出表的第31到第40個記錄。
  select top 10 recid from a where recid not ?in(select top 30 recid from a)
  分析:如果這樣寫會產生某些問題,如果recid在表中存在邏輯索引。
  select top 10 recid from a where……是從索引中查找,而后面的select top 30 recid from a則在數據表中查找,這樣由于索引中的順序有可能和數據表中的不一致,這樣就導致查詢到的不是本來的欲得到的數據。
  解決方案
  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:獲取當前數據庫中的所有用戶表
  select name from sysobjects where xtype=’u’ and status>=0
  10:獲取某一個表的所有字段
  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:查看與某一個表相關的視圖、存儲過程、函數
  select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like ‘%表名%’
  12:查看當前數據庫中所有存儲過程
  select name as 存儲過程名稱 from sysobjects where xtype=’p’
  13:查詢用戶創建的所有數據庫
  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:查詢某一個表的字段和數據類型
  select column_name,data_type from information_schema.columns where table_name = ‘表名’
  15:不同服務器數據庫之間的數據操作
  –創建鏈接服務器
  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 ‘
  –連接遠程/局域網數據(openrowset/openquery/opendatasource)
  –1、openrowset
  –查詢示例
  select * from openrowset( ‘sqloledb ‘, ‘sql服務器名 ‘; ‘用戶名 ‘; ‘密碼 ‘,數據庫名.dbo.表名)
  –生成本地表
  select * into 表 from openrowset( ‘sqloledb ‘, ‘sql服務器名 ‘; ‘用戶名 ‘; ‘密碼 ‘,數據庫名.dbo.表名)
  –把本地表導入遠程表
  insert openrowset( ‘sqloledb ‘, ‘sql服務器名 ‘; ‘用戶名 ‘; ‘密碼 ‘,數據庫名.dbo.表名)
  select *from 本地表
  –更新本地表
  update b set b.列a=a.列a from openrowset( ‘sqloledb ‘, ‘sql服務器名 ‘; ‘用戶名 ‘; ‘密碼 ‘,數據庫名.dbo.表名)as a inner join 本地表 b on a.column1=b.column1
  –openquery用法需要創建一個連接
  –首先創建一個連接創建鏈接服務器
  exec sp_addlinkedserver ? ‘itsv ‘, ‘ ‘, ‘sqloledb ‘, ‘遠程服務器名或ip地址 ‘
  –查詢
  select * from openquery(itsv, ?‘select * ?from?數據庫.dbo.表名 ‘)
  –把本地表導入遠程表
  insert openquery(itsv, ?‘select * ?from?數據庫.dbo.表名 ‘)
  select * from 本地表
  –更新本地表
  update b set b.列b=a.列b
  from 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 本地表

?以上就是mysql經典語句大全——開發篇的內容,更多相關內容請關注PHP中文網(www.php.cn)!?

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享