程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL高手篇:精典SQLFAQ收藏

SQL高手篇:精典SQLFAQ收藏

編輯:關於SqlServer
 1. 行列轉換--普通
  
  假設有張學生成績表(CJ)如下
  Name  Subject   Result
  張三  語文    80
  張三  數學    90
  張三  物理    85
  李四  語文    85
  李四  數學    92
  李四  物理    82
  
  想變成
  姓名  語文  數學  物理
  張三  80   90   85
  李四  85   92   82
  
  declare @sql varchar(4000)
  set @sql = 'select Name'
  select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
  from (select distinct Subject from CJ) as a
  select @sql = @sql+' from test group by name'
  exec(@sql)
  
  2. 行列轉換--合並
  
  有表A,
  id pid
  1  1
  1  2
  1  3
  2  1
  2  2
  3  1
  如何化成表B:
  id pid
  1 1,2,3
  2 1,2
  3 1
  
  創建一個合並的函數
  create function fmerg(@id int)
  returns varchar(8000)
  as
  begin
  declare @str varchar(8000)
  set @str=''
  select @str=@str+','+cast(pid as varchar) from 表A where id=@id
  set @str=right(@str,len(@str)-1)
  return(@str)
  End
  go
  
  --調用自定義函數得到結果
  select distinct id,dbo.fmerg(id) from 表A
  
  3. 如何取得一個數據表的所有列名
  
  方法如下:先從SYSTEMOBJECT系統表中取得數據表的SYSTEMID,然後再SYSCOLUMN表中取得該數據表的所有列名。
  SQL語句如下:
  declare @objid int,@objname char(40)
  set @objname = 'tablename'
  select @objid = id from sysobjects where id = object_id(@objname)
  select 'Column_name' = name from syscolumns where id = @objid order by colid
  
  是不是太簡單了? 呵呵 不過經常用阿.
  
  4. 通過SQL語句來更改用戶的密碼
  
  修改別人的,需要sysadmin role
  EXEC sp_password NULL, 'newpassWord', 'User'
  
  如果帳號為SA執行EXEC sp_password NULL, 'newpassWord', sa
  
  5. 怎麼判斷出一個表的哪些字段不允許為空?
  
  select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE='NO' and TABLE_NAME=tablename
  
  6. 如何在數據庫裡找到含有相同字段的表?
  
  a. 查已知列名的情況
  SELECT b.name as TableName,a.name as columnname
  From syscolumns  a INNER JOIN  sysobjects b
  ON a.id=b.id
  AND b.type='U'
  AND a.name='你的字段名字'
  
  b. 未知列名查所有在不同表出現過的列名
  Select o.name As tablename,
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved