SQL Server 查詢語句
---建立表
CREATE TABLE test(a INT ,b INT,c VARCHAR(10))
---插入數據
INSERT INTO *
( a, b, c )
SELECT 1,2,'x'
UNION ALL
SELECT 1,2,''
UNION ALL
SELECT 2,3,'y'
UNION ALL
SELECT 2,3,'z'
UNION ALL
SELECT 2,3,''
UNION ALL
SELECT 2,4,''
UNION all
SELECT 2,5,''
---查詢
SELECT a,b,c
FROM
(
SELECT ROW_NUMBER() OVER(PARTITION BY a,b ORDER BY a,b) AS id,a,b,c
FROM test
) t1
WHERE id=1 OR ISNULL(c,'')<>''
結果:
1 2 x
2 3 y
2 3 z
2 4
2 5 sql2005及以上版本可用
sql查詢語句大全
一、基礎 1、說明:創建數據庫 Create DATABASE database-name 2、說明:刪除數據庫 drop database dbname 3、說明:備份sql server --- 創建 備份數據的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_*' --- 開始 備份 BACKUP DATABASE pubs TO testBack 4、說明:創建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根據已有的表創建新表: A:create table tab_new like tab_old (使用舊表創建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、說明:刪除新表 drop table tabname 6、說明:增加一個列 Alter table tabname add column col type 注:列增加后將不能刪除。
DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。 7、說明:添加主鍵: Alter table tabname add primary key(col) 說明:刪除主鍵: Alter table tabname drop primary key(col) 8、說明:創建索引:create [unique] index idxname on tabname(col….) 刪除索引:drop index idxname on tabname 注:索引是不可更改的,想更改必須刪除重新建。
9、說明:創建視圖:create view viewname as select statement 刪除視圖:drop view viewname 10、說明:幾個簡單的基本的sql語句 選擇:select * from table1 where 范圍 插入:insert into table1(field1,field2) values(value1,value2) 刪除:delete from table1 where 范圍 更新:update table1 set field1=value1 where 范圍 查找:select * from table1 where field1 like '%value1%' (所有包含'value1'這個模式的字符串)---like的語法很精妙,查資料! 排序:select * from table1 order by field1,field2 [desc] 總數:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1[separator] 11、說明:幾個高級查詢運算詞 A: UNION 運算符 UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。
兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。 B: EXCEPT 運算符 EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。
當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。 C: INTERSECT 運算符 INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。
當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。 注:使用運算詞的幾個查詢結果行必須是一致的。
12、說明:使用外連接 A、left outer join: 左外連接(左連接):結果集既包括連接表的匹配行,也包括左連接表的所有行。 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right outer join: 右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full outer join: 全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。 [編輯本段]二、提升 1、說明:復制表(只復制結構,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1 法二:select top 0 * into b from a 2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3、說明:跨數據庫之間表的拷貝(具體數據使用絕對路徑) (Access可用) insert into b(a, b, c) select d,e,f from b in '具體數據庫' where 條件 例子:..from b in '"&*h("."&"\*" &"' where.. 4、說明:子查詢(表名1:a 表名2:b) select a,b,c from a where a IN (select d from b 或者: select a,b,c from a where a IN (1,2,3) 5、說明:顯示文章、提交人和最后回復時間 select *,*me,*e from table a,(select max(adddate) adddate from table where *=*) b 6、說明:外連接查詢(表名1:a 表名2:b) select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 7、說明:在線視圖查詢(表名1:a select * from (Select a,b,c FROM a) T where t.a > 1; 8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括 select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 數值1 and 數值2 9、說明:in 的使用方法 select * from table1 where a [not] in ('值1','值2','值4','值6') 10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息 delete from table1 where not exists ( select * from table2 where *1=*1 11、說明:四表聯查問題: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c 。
SQL Server 的查詢語句
我有些SQL的課件。
二九零七八四八零七,你密我我發資料給你。 Upper(str):小寫轉換成大寫; Lower(str):大寫轉換成小寫; Space(n):產生長度為n的空字符串; Replicate(str,n):重復n次字符串; Stuff(str1,start,length,str2):在str1中從start開始長度為length的子串用str2代替; Reverse(str):反向字符串; Ltrim(str):刪除字符串左邊的空格; Rtrim(str):刪除字符串右邊的空格; Charindex(str1,str2[,start]):在串2中搜索串1的起始位置; Patindex('%pattern%',str):在字串中搜索模式出現的起始位置; Substring(str,start,length):從start開始長度為length的子串。
Left(str,n):從左邊開始截取長度為n的子串; Right(str,n):從右邊開始截取長度為n的子串; Ascii(str):求字符串最左端字符的ASCII碼; Char(n):ASCII碼轉換成字符; Str(num):數值型轉換成字符型數據 Dateadd(datepart,number,date):date與number之和; Datepart:year,month,day,hour,minute,second等 Datediff(datepart,number,date):date與number之差; Datename(datepart,date):給出date中datepart指定部分所對應的字符串; Dateaprt(datepart,date):給出date中datepart指定部分所對應的整數值; Getdate():當前系統的日期和時間; Day(date):提取天數; Month(date):提取月數; Year(date):提取年份 Avg(數值型):求平均值; SUM(數值型):求總和; COUNT():求某一列中值的個數; MIN( ):求最小值; MAX(): 求最大值 inner join : 內聯 Left outer join:左外聯 Right outer join:右外聯 Full outer join:全外聯 Cross join:交叉連接 內連接用比較運算符比較表中列值,返回符合連接條件的數據行,從而將兩張表連接成一張新表。 1、等值連接 2、不等值連接 3、自然連接 在連接條件中使用=比較被連接列的列值,因為連接列值相等的列,因此連接的列會出現兩次,產生冗余行。
例6.45 Select * From stud_info INNER JOIN stud_grade ON stud_*_id=stud_*_id Order by stud_*_id 內連接僅查詢符合條件的行,而外連接的查詢結果除了包括符合連接條件的行外,將無法連接的列置NULL。 1、分類左外連接:left outer join通過左向外連接引用左表的所有行; 右外連接:right outer join通過右向外連接引用右表的所有行; 全外連接:full outer join返回兩張表的所有行; 例6.49 Select stud_*_id,stud_*, stud_*,stud_* From stud_info LEFT OUTER JOIN stud_grade ON stud_*>stud_* Order by stud_*_id,stud_*_id 例6.50 Select stud_*_id,stud_*, stud_*,stud_* From stud_info LEFT OUTER JOIN stud_grade ON stud_*_id=stud_*_id Order by stud_*_id,stud_*_id 包括兩張表中的全部記錄,若另一張表中無對應列則以NULL填充。
例6.52 Select lesson_*_name,teacher_*, teacher_*r_id From lesson_info FULL OUTER JOIN teacher_info ON lesson_*_id=teacher_*_id Order by lesson_*_name。
sql server 查詢語句
我建了3個表,如下圖,有個別字段不一定想同,但是和你貼圖中表格結構一樣
(userid 和uid 主外鍵關系,pid 和 phoneid 主外鍵關系)
查詢 userId , zhucount ,sum(phoncount), count(phoneid)
由于我沒有用不常用的sql關鍵字,都是平常常用sql關鍵字,所以語句雖然很長。
其實很簡單可以分成 2 部分來看,然后把 2 個部分再合并起來就是
1、查詢 userId , zhucount ,sum(phoncount)
select userid,zhucount,phoncount from users a left join (select uid,sum(phoncount)as phoncount from users_msg group by uid) b on *=*
結果
2、查 count(phoneid)
select *,sum(*) as countPhoneid from (select uid,pid,phoncount,counts from users_msg b,(select phoneid,count(phoneid)as counts from users_msg_count group by phoneid) c where *=*d) b group by *
結果
最后合并:
select userid,zhucount,phoncount,countPhoneid as phoneid from (select userid,zhucount,phoncount from users a left join (select uid,sum(phoncount)as phoncount from users_msg group by uid) b on *=*) a1 left join (select *,sum(*) as countPhoneid from (select uid,pid,phoncount,counts from users_msg b,(select phoneid,count(phoneid)as counts from users_msg_count group by phoneid) c where *=*d) b group by *) b1 on *=*
結果
SQL Server 數據庫查詢語句的語法有哪些
一、 簡單查詢 簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。
它們分別說明所查詢列、查詢的表或視圖、以及搜索條件等。 例如,下面的語句查詢testtable表中姓名為“張三”的nickname字段和email字段。
SELECT nickname,email FROM testtable WHERE name='張三' (一) 選擇列表 選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變量(包括局部變量和全局變量)等構成。 1、選擇所有列 例如,下面語句顯示testtable表中所有列的數據: SELECT * FROM testtable 2、選擇部分列并指定它們的顯示次序 查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。
例如: SELECT nickname,email FROM testtable 3、更改列標題 在選擇列表中,可重新指定列標題。定義格式為: 列標題=列名 列名 列標題 如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列標題: SELECT 昵稱=nickname,電子郵件=email FROM testtable 4、刪除重復行 SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認為ALL。
使用DISTINCT選項時,對于所有重復的數據行在SELECT返回的結果集合中只保留一行。 5、限制返回的行數 使用TOP n [PERCENT]選項限制返回的數據行數,TOP n說明返回n行,而TOP n PERCENT時,說明n是表示一百分數,指定返回的行數等于總行數的百分之幾。
例如: SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable (二)FROM子句 FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。
在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定: SELECT username,* FROM usertable,citytable WHERE usertable.。
SQL Server的四個查詢語句,題目在內容里
select * from 員工基本信息表 where 員工姓名 like '張%' order by 入職日期 desc
select * from 員工基本信息表 where datepart(month,出生日期)=datepart(month,dateadd(m,1,getdate()))
select 部門編號,a.部門名稱,b.人數 from 部門信息表 a inner join (
select 員工所屬部門,count(*) 人數 from 員工信息表 group by 員工所屬部門)b
on a.部門名稱=b.員工所屬部門
order by 部門編號
update 員工信息表 set 員工狀態='離職' from (
select 員工姓名,max(入職日期) 最新入職日期 from 員工信息表 group by 員工姓名 having count(*)>1)a
where 員工信息表.員工姓名=a.員工姓名 and 員工信息表.入職日期a.最新入職日期你自己看看吧。閑來沒事。哎。蛋疼。
轉載請注明出處華閱文章網 » server查詢語句