當前位置:首頁 » 編程語言 » sql語句經典

sql語句經典

發布時間: 2022-11-19 10:50:09

sql資料庫語句大全

SQL資料庫語句大全:

1、選擇:select * from table1 where 范圍

2、插入:insert into table1(field1,field2) values(value1,value2)

3、刪除:delete from table1 where 范圍

4、更新:update table1 set field1=value1 where 范圍

5、排序:select * from table1 order by field1,field2 [desc]

6、總數:select count as totalcount from table1

7、求和:select sum(field1) as sumvalue from table1

② 常見的99中sql語句

1. select * from emp;

2. select empno, ename, job from emp;

3. select empno編號, ename姓名, job工作from emp;

4. select job from emp;

5. select distinct job from emp;

6. select distinct empno, job from emp;

說明:因為雇員編號不重復,所以此時證明所有的列沒有重復,所以不能消除掉重復的列.

7.查詢出雇員的編號,姓名,工作,但是顯示的格式:編號是: 7369的雇員,姓名是: smith,工作是: clear

select '編號是: ' || empno || '的雇員,姓名是: ' || ename || ',工作是: ' || job from emp;

8.求出每個雇員的姓名及年薪

select ename, sal * 12 income from emp;

9.求出工資大於1500的所有雇員信息

select * from emp where sal > 1500;

10.查詢每月可以得到獎金的雇員信息

select * from emp where comm is not null;

11.查詢沒有獎金的雇員信息

select * from emp where comm is null;

12.查詢出基本工資大於1500同時可以領取獎金的雇員信息

select * from emp where sal > 1500 and comm is not null;

13.查詢出基本工資大於1500或者可以領取獎金的雇員信息

select * from emp where sal > 1500 or comm is not null;

14.查詢出基本工資不大於1500或者不可以領取獎金的雇員信息

select * from emp where not(sal > 1500 and comm is not null);

15.查詢基本工資大於1500,但是小於3000的全部雇員信息

select * from emp where sal > 1500 and sal < 3000;

16.查詢基本工資大於等於1500,但是小於等於3000的全部雇員信息

select * from emp where sal >= 1500 and sal <= 3000;

select * from emp where sal between 1500 and 3000;

17.查詢出在1981年僱傭的全部雇員信息(1981年1月1日 到1981年12月31日之間的僱傭的雇員)

select * from emp where hiredate between '1-1月-81' and '31-12月-81';

18.要求查詢出姓名是smith的雇員信息

select * from emp where ename = 'SMITH';

19.要求查詢出雇員是7369, 7499, 7521的雇員的具體信息

select * from emp where empno = 7369 or empno = 7499 or empno = 7521;

select * from emp where empno in(7369, 7499, 7521);

20.要求查詢出雇員不是7369, 7499, 7521的雇員的具體信息

select * from emp where empno not in(7369, 7499, 7521);

21.要求查詢出姓名是smith, allen, king的雇員信息

select * from emp where ename in('SMITH', 'ALLEN', 'KING');

22.查詢出所有雇員姓名中第二個字母包含"M"的雇員信息

select * from emp where ename like '_M%';

23.查詢出雇員姓名中包含字母M的雇員信息

select * from emp where ename like '%M%';

24.要求查詢出在1981年僱傭的雇員信息

select * from emp where hiredate like '%81%';

25.查詢工資中包含5的雇員信息

select * from emp where sal like '%5%';

26.查詢雇員編號不是7369的雇員信息

select * from emp where empno != 7369;

select * from emp where empno <> 7369;

27.要求按照工資由低到高排序

select * frm emp order by sal;

select * from emp order by sal asc;

28.要求按照工資由高到低排序

select * from emp order by sal desc;

29.要求查詢出20部門的所有雇員信息,查詢的信息按照工資由高到低排序,如果工資相等,則按照僱傭日期由早到晚排序.

select * from emp where deptno = 20 order by sal desc, hiredate asc;

30.將小寫字母變為大寫字母

select upper('hello') from al;

31.將大寫字母變為小寫字母

select lower('HELLO WORLD') from al;

32.要求查詢出姓名是smith的雇員信息

select * from emp where ename = upper('smith');

33.使用initcap()函數將單詞的第一個字母大寫

select initcap('hello world') from al;

34.將雇員表中的雇員姓名變為開頭字母大寫

select initcap(ename) from emp;

35.將字元串"hello"和"world"進行串聯

select concat('hello ', 'world') from al;

36.對字元串進行操作的常用字元處理函數

select substr('hello', 1, 3)截取字元串, length('hello')字元串的長度, replace('hello', 'l', 'x')字元串替換from al;

select substr('hello', 0, 3)截取字元串, length('hello')字元串的長度, replace('hello', 'l', 'x')字元串替換from al;

37.顯示所有雇員的姓名及姓名的後三個字元

select ename, substr(ename, length(ename) -2) from emp;

select ename, substr(ename, -3, 3) from emp;

38.使用數值函數執行四捨五入操作

select round(789.536) from al;

39.要求將789.536數值保留兩位小數

select round(789.536, 2) from al;

40.要求將789.536數值中的整數的十位進行四捨五入進位

select round(789.536, -2) from al;

41.採用trunc()函數不會保留任何小數,而且小數點也不會執行四捨五入的操作

select trunc(789.536) from al;

42.通過trunc()也可以指定小數點的保留位數

select trunc(789.536, 2) from al;

43.作用負數表示位數

select trunc(789.536, -2) from al;

44.使用mod()函數可以進行取余的操作

select mod(10, 3) from al;

45.顯示10部門雇員進入公司的星期數(當前日期-僱傭日期=天數/ 7 =星期數)

select empno, ename, round((sysdate - hiredate) / 7) from emp where deptno = 10;

46.日期函數

months_between():求出給定日期范圍的月數

add_months():在指定的日期上加上指定的月數,求出之後的日期

next_day():指定日期的下一個日期

last_day():求出給定日期當月的最後一天日期

47.

select empno, ename, months_between(sysdate, hiredate) from emp;

select empno, ename, round(months_between(sysdate, hiredate)) from emp;

48. select sysdate, add_months(sysdate, 4) from al;

49. select next_day(sysdate, '星期一') from al;

50. select last_day(sysdate) from al;

51.轉換函數

to_char():轉換成字元串

to_number():轉換成數字

to_date():轉換成日期

52.查詢所有雇員的雇員編號,姓名,僱傭日期

select empno,

ename,

to_char(hiredate, 'yyyy') year,

to_char(hiredate, 'mm') months,

to_char(hiredate, 'dd') day

from emp;

select empno, ename, to_char(hiredate, 'yyyy-mm-dd') from emp;

select empno, ename, to_char(hiredate, 'fmyyyy-mm-dd') from emp;

53.查詢所有雇員的編號,姓名和工資

select empno, ename, sal from emp;

select empno, ename, to_char(sal, '99,999') from emp;

select empno, ename, to_char(sal, 'L99,999') from emp;

select empno, ename, to_char(sal, '$99,999') from emp;

54. select to_number('123') + to_number('123') from al;

55.將一個字元串轉換成日期類型

select to_date('2009-01-01', 'yyyy-mm-dd') from al;

56.求出每個雇員的年薪(要求加上獎金)

select empno, ename, sal, comm, (sal + comm) * 12 from emp;

select empno, ename, sal, comm, nvl(comm, 0), (sal + nvl(comm, 0)) * 12 income from emp;

57. decode()函數類似於if....elsif...else語句

select decode(1, 1, '內容是1', 2, '內容是2', 3, '內容是3') from al;

58.查詢出雇員的編號,姓名,僱傭日期及工作,要求將雇員的工作替換成以下信息:

select empno雇員編號,

ename雇員姓名,

hiredate僱傭日期,

decode(job,

'CLERK', '業務員',

'SALESMAN', '銷售人員',

'MANAGER', '經理',

'ANALYST', '分析員',

'PRESIDENT', '總裁'

)職位

from emp;

59.笛卡爾積(交差連接)

select * from emp, dept;

select * from emp cross join dept;

60.內連接

select * from emp e, dept d where e.deptno = d.deptno;

select * from emp e inner join dept d on e.deptno = d.deptno;

select * from emp e join dept d on e.deptno = d.deptno;

61.自然連接

select * from emp natural join dept;

select * from emp e join dept d using(deptno);

62.要求查詢出雇員的編號,姓名,部門的編號,名稱,地址

select e.empno, e.ename, d.deptno, d.dname, d.loc from emp e, dept d where e.deptno = d.deptno;

63.要求查詢出雇員的姓名,工作,雇員的直接上級領導姓名

select e.ename, e.job, m.ename from emp e, emp m where e.mgr = m.empno;

64.要求查詢出雇員的姓名,工作,雇員的直接上級領導姓名以及部門名稱

select e.ename, e.job, m.ename, d.dname from emp e, emp m, dept d where e.mgr = m.empno and e.deptno = d.deptno;

65.要求查詢出每個雇員的姓名,工資,部門名稱,工資在公司的等級(salgrade),及其領導的姓名及工資所在公司的等級

select e.ename, e.sal, d.dname, s.grade, m.ename, m.sal, ms.grade

from emp e, dept d, salgrade s, emp m, salgrade ms

where e.deptno = d.deptno

and e.sal between s.losal and s.hisal

and e.mgr = m.empno

and m.sal between ms.losal and ms.hisal;

select e.ename,

e.sal,

d.dname,

decode(s.grade, 1, '第五等級', 2, '第四等級', 3, '第三等級', 4, '第二等級', 5, '第一等級'),

m.ename,

m.sal,

decode(ms.grade, 1, '第五等級', 2, '第四等級', 3, '第三等級', 4, '第二等級', 5, '第一等級')

from emp e, dept d, salgrade s, emp m, salgrade ms

where e.deptno = d.deptno and e.sal between s.losal and s.hisal and e.mgr = m.empno

and m.sal between ms.losal and ms.hisal;

66. select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno = d.deptno;

select empno, ename, d.deptno, dname, loc from emp e inner join dept d on e.deptno = d.deptno;

67.左外連接

select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno = d.deptno(+);

select empno, ename, d.deptno, dname, loc from emp e left outer join dept d on e.deptno = d.deptno;

select empno, ename, d.deptno, dname, loc from emp e left join dept d on e.deptno = d.deptno(+);

68.右外連接

select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno(+) = d.deptno;

select empno, ename, d.deptno, dname, loc from emp e right outer join dept d on e.deptno = d.deptno;

select empno, ename, d.deptno, dname, loc from emp e right join dept d on e.deptno = d.deptno;

69. select e.empno, e.ename, m.empno, m.ename from emp e, emp m where e.mgr = m.empno;

70. select e.empno, e.ename, m.empno, m.ename from emp e, emp m where e.mgr = m.empno(+);

71.

select * from emp e, dept d where e.deptno = d.deptno and d.deptno = 30;

select * from emp e inner join dept d on e.deptno = d.deptno where d.deptno = 30;

select * from emp e join dept d on e.deptno = d.deptno where d.deptno = 30;

select * from emp e natural join dept d where deptno = 30;

select * from emp e join dept d using(deptno) where deptno = 30;

72.

select e.ename, d.deptno, d.dname, d.loc from emp e right outer join dept d on e.deptno = d.deptno;

select e.ename, d.deptno, d.dname, d.loc from emp e right join dept d on e.deptno = d.deptno;

select e.ename, d.deptno, d.dname, d.loc from emp e, dept d where e.deptno(+) = d.deptno;

73. select count(ename) from emp;

74. select min(sal) from emp;

75. select max(sal) from emp;

76. select sum(sal) from emp;

77. select avg(sal) from emp;

78. select sum(sal) from emp where deptno = 20;

79. select avg(sal) from emp where deptno = 20;

80.求出每個部門的雇員數量

select deptno, count(deptno) from emp group by deptno;

select deptno, count(empno) from emp group by deptno;

81.求出每個部門的平均工資

select deptno, avg(sal) from emp group by deptno;

82.按部門分組,並顯示部門的名稱,及每個部門的員工數

select d.dname, count(e.empno) from emp e, dept d

where e.deptno = d.deptno

group by d.dname;

select d.deptno, d.dname, temp.c

from (select deptno, count(e.empno) c from emp e group by e.deptno) temp, dept d

where temp.deptno = d.deptno;

83.要求顯示出平均工資大於2000的部門編號和平均工資

select deptno, avg(sal) from emp group by deptno having avg(sal) > 2000;

84.顯示非銷售人員工作名稱以及從事同一工作雇員的月工資的總和,並且要滿足從事同一工作的雇員的月工資合計大於5000,輸出結果按月工資的合計升序排序.

select job, sum(sal) su from emp where job <> 'SALESMAN' group by job having sum(sal) > 5000 order by su;

select temp.job, sum(temp.sal) s

from (select job, sal from emp e where job <> 'SALESMAN') temp

group by temp.job

having sum(temp.sal) > 5000

order by s;

85.求出平均工資最高的部門工資

select max(avg(sal)) from emp group by deptno;

86.要求查詢出比雇員編號為7654工資高的所有雇員信息

select * from emp where sal >(select sal from emp where empno = 7654);

87.要求查詢出工資比7654高,同時與7788從事相同工作的全部雇員信息

select * from emp

where sal >(select sal from emp where empno = 7654)

and job = (select job from emp where empno = 7788);

88.要求查詢出工資最低的雇員姓名,工作,工資

select ename, job, sal from emp where sal = (select min(sal) from emp);

89.要求查詢出:部門名稱,部門的員工數,部門的平均工資,部門的最低收入雇員的姓名

select d.dname, temp.c, temp.a, e.ename

from dept d,

(select deptno, count(empno) c, avg(sal) a, min(sal) m from emp group by deptno) temp,

emp e

where d.deptno = temp.deptno and e.sal = temp.m;

select d.deptno, temp.dname, temp.c, temp.a, e.ename, e.sal

from

(select d.dname , count(e.empno) c, avg(e.sal) a, min(e.sal) m

from emp e, dept d

where e.deptno = d.deptno

group by d.dname) temp,

emp e,

dept d

where temp.m = e.sal

and temp.dname = d.dname;

90.求出每個部門的最低工資的雇員的信息

select * from emp where sal in(select min(sal) from emp group by deptno);

select * from emp where sal =any(select min(sal) from emp group by deptno);

select * from

(select min(sal) m from emp group by deptno) temp,

emp e

where e.sal = temp.m;

91.範例90中,比子查詢條件中最低(小)的工資要大的雇員信息

select * from emp where sal >any(select min(sal) from emp group by deptno);

select * from emp where sal > (select min(min(sal)) from emp group by deptno);

92.範例90中,比子查詢條件中最高(大)的工資要小的雇員信息

select * from emp where sal

select * from emp where sal < (select max(min(sal)) from emp group by deptno);

93.範例90中,比子查詢條件中最高(大)的工資要大的雇員信息

select * from emp where sal >all(select min(sal) from emp group by deptno);

select * from emp where sal > (select max(min(sal)) from emp group by deptno);

94.範例90中,比子查詢條件中最低(小)的工資要小的雇員信息

select * from emp where sal

select * from emp where sal < (select min(min(sal)) from emp group by deptno);

95.查找出20部門中沒有獎金的雇員信息

select * from emp where (sal, nvl(comm, -1)) in (select sal, nvl(comm, -1) from emp where deptno = 20);

select * from emp where deptno = 20 and comm is null;

96. union操作符返回兩個查詢選定的所有不重復的行

select deptno from emp union select deptno from dept;

97. union all操作符合並兩個查詢選定的所有行,包括重復的行

select deptno from emp union all select deptno from dept;

98. intersect操作符只返回兩個查詢都有的行

select deptno from emp intersect select deptno from dept;

99. minus操作符只返回由第一個查詢選定但是沒有被第二個查詢選定的行,也就是在第一個查詢結果中排除在第二個查詢結果中出現的行

select deptno from dept minus select deptno from emp;

��O������dL

③ 簡單介紹幾個常用的SQL查詢語句

我們使用資料庫的時候,最常用的就是SQL語句了,那麼在SQL語句中比較常用的有哪些呢?下面我給大家分享一下。

首先是select語句,它經常被用於數據查詢,通過select我們可以快速的檢索自己想要的數據,如下圖所示

然後是update語句,update是進行數據更新的語句,更新的時候一定要指定where條件,如下圖所示

接下來是insert語句,insert被用來進行數據插入,運用它的時候一定注意插入的欄位順序,如下圖所示

最後是delete語句,delete被用來刪除表中的數據,進行刪除操作的時候也要注意指定刪除條件,如下圖所示

④ 常見的SQL語句有哪些

(1)更新數據記錄:
sql="update數據表set欄位名=欄位值where條件表達式"
sql="update數據表set欄位1=值1,欄位2=值2……欄位n=值nwhere條件表達式"

(2)添加數據記錄:
sql="insertinto數據表(欄位1,欄位2,欄位3…)values(值1,值2,值3…)"
sql="insertinto目標數據表select*from源數據表"(把源數據表的記錄添加到目標數據表)

(3)刪除數據記錄:
sql="deletefrom數據表where條件表達式"
sql="deletefrom數據表"(將數據表所有記錄刪除)

(4)數據記錄篩選:
sql="select*from數據表where欄位名=欄位值orderby欄位名[desc]"
sql="select*from數據表where欄位名like'%欄位值%'orderby欄位名[desc]"
sql="selecttop10*from數據表where欄位名orderby欄位名[desc]"
sql="select*from數據表where欄位名in('值1','值2','值3')"
sql="select*from數據表where欄位名between值1and值2"

(5)數據表的建立和刪除:
CREATETABLE數據表名稱(欄位1類型1(長度),欄位2類型2(長度)……)
例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ())
DROPTABLE數據表名稱(永久性刪除一個數據表)

(6)數據記錄統計函數:
AVG(欄位名)得出一個表格欄平均值
COUNT(*|欄位名)對數據行數的統計或對某一欄有值的數據行數統計
MAX(欄位名)取得一個表格欄最大的值
MIN(欄位名)取得一個表格欄最小的值
SUM(欄位名)把數據欄的值相加
引用以上函數的方法:
sql="selectsum(欄位名)as別名from數據表where條件表達式"
setrs=conn.excute(sql)
用rs("別名")獲取統的計值,其它函數運用同上。

(6)復制資料庫的表
select * into 新表名 from 要復制的表的表名 where 1=2
要完全復制把where 1=2 去了就可以了
(7)刪除某個表的一個列
alter table bankbill drop column zsl
alter table xx alter/add/drop column xx

(8)模糊查詢
Sql="select top 10 * from 數據表 where 欄位名 order by 欄位名 [desc]"
查找資料庫中前10記錄
Sql="select top n * form 數據表 order by newid()"
隨機取出資料庫中的若干條記錄的方法
top n,n就是要取出的記錄數
Sql="select * from 數據表 where 欄位名 in ('值1','值2','值3')"

⑤ 求一些sql資料庫數據查詢的一些經典語句

1、說明:創建資料庫CREATE DATABASE database-name 2、說明:刪除資料庫drop database dbname3、說明:備份sql server--- 創建 備份數據的 deviceUSE masterEXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 開始 備份BACKUP DATABASE pubs TO testBack 4、說明:創建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
--建表、建約束、關系
create table tableok
(
col1 int, col2_notnull int not null,
col3_default nchar(1) not null default('男'),
--默認男
col4_default datetime not null default(getdate()),
--默認得到系統時間
col5_check int not null check(col5_check>=18 and col5_check<=55), --添加約束,數據值在18到55之間
col6_check nchar(9) not null check(col6_check like 'msd0902[0-9][^6-9]'),
--添加約束,數據值前7位必須是『msd0902』,倒數第兩位可以是0-9中任意一個數字,最後一位不是6-9之間的數字。
cola_primary nchar(5) not null primary key,
--建立主鍵
colb_unique int unique,
--唯一約束
col7_Identity int not null identity(100,1),
--自增長,從100開始,每列值增加1個
col8_identity numeric(5,0) not null identity(1,1)
--自增長,從1開始,每列值增加1個,最大值是5位的整數
col9_guid uniqueidentifier not null default(newid())
--使用newid()函數,隨機獲取列值
)

--alter
--主外鍵/引用/關系 約束
alter table 從表名 [with check]--啟用 with nocheck--禁用約束
add constraint FK_主表名_從表名
foreign key (從表中的欄位名) references 主表名 (主表中的欄位名)

--其它非主外鍵約束
alter table wf
add constraint 約束名 約束類型 具體的約束說明

alter table wf--修改聯合主鍵
add constraint Pk_cola_primary primary key(cola_primary,col1)

根據已有的表創建新表: A:create table tab_new like tab_old (使用舊表創建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、說明:刪除新表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註:索引是不可更改的,想更改必須刪除重新建。9、說明:創建視圖:create view viewname as select statement 刪除視圖:drop view viewname10、說明:幾個簡單的基本的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%』 ---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 table111、說明:幾個高級查詢運算詞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.cB:right (outer) join: 右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。 C:full/cross (outer) join: 全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。12、分組:Group by: 一張表,一旦分組 完成後,查詢後只能得到組相關的信息。 組相關的信息:(統計信息) count,sum,max,min,avg 分組的標准) 在SQLServer中分組時:不能以text,ntext,image類型的欄位作為分組依據 在selecte統計函數中的欄位,不能和普通的欄位放在一起;
13、對資料庫進行操作: 分離資料庫: sp_detach_db; 附加資料庫:sp_attach_db 後接表明,附加需要完整的路徑名14.如何修改資料庫的名稱:sp_renamedb 'old_name', 'new_name'

二、提升
1、說明:復製表(只復制結構,源表名:a 新表名:b) (Access可用)法一:select * into b from a where 1<>1(僅用於SQlServer)法二:select top 0 * into b from a2、說明:拷貝表(拷貝數據,源表名: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 '"&Server.MapPath(".")&"\data.mdb" &"' 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 a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) 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 time2select 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 table1.field1=table2.field1 )
11、說明:四表聯查問題:select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、說明:日程安排提前五分鍾提醒 SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
13、說明:一條sql 語句搞定資料庫分頁select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位具體實現:關於資料庫分頁:
declare @start int,@end int
@sql nvarchar(600)
set @sql=』select top』+str(@end-@start+1)+』+from T where rid not in(select top』+str(@str-1)+』Rid from T where Rid>-1)』
exec sp_executesql @sql
注意:在top後不能直接跟一個變數,所以在實際應用中只有這樣的進行特殊的處理。Rid為一個標識列,如果top後還有具體的欄位,這樣做是非常有好處的。因為這樣可以避免 top的欄位如果是邏輯索引的,查詢的結果後實際表中的不一致(邏輯索引中的數據有可能和數據表中的不一致,而查詢時如果處在索引則首先查詢索引)
14、說明:前10條記錄select top 10 * form table1 where 范圍
15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、說明:隨機取出10條數據select top 10 * from tablename order by newid()
18、說明:隨機選擇記錄select newid()
19、說明:刪除重復記錄1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)2),select distinct * into temp from tablename delete from tablename insert into tablename select * from temp評價: 這種操作牽連大量的數據的移動,這種做法不適合大容量但數據操作3),例如:在一個外部表中導入數據,由於某些原因第一次只導入了一部分,但很難判斷具體位置,這樣只有在下一次全部導入,這樣也就產生好多重復的欄位,怎樣刪除重復欄位
alter table tablename--添加一個自增列add column_b int identity(1,1) delete from tablename where column_b not in(select max(column_b) from tablename group by column1,column2,...)alter table tablename drop column column_b
20、說明:列出資料庫里所有的表名select name from sysobjects where type='U' // U代表用戶
21、說明:列出表裡的所有的列名select name from syscolumns where id=object_id('TableName')
22、說明:列示type、vender、pcs欄位,以type欄位排列,case可以方便地實現多重選擇,類似select 中的case。select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type顯示結果:type vender pcs電腦 A 1電腦 A 1光碟 B 2光碟 A 2手機 B 3手機 C 3
23、說明:初始化表table1
TRUNCATE TABLE table1
24、說明:選擇從10到15的記錄select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc

⑥ sql 常用語句


insert
into
表名
(欄位1,
欄位2,欄位3,欄位4,...)
values(欄位1的值,
欄位2的值,欄位3的值,欄位4的值,...)

delete
from
表名
where
條件

update
表名
set
欄位1
=
欄位1的值,
欄位2
=
欄位2的值,
欄位3
=
欄位3的值,...
(逗號分隔)

select
*
from
表名
where
條件

⑦ 15個MySQL常用基本SQL語句

在學習SQL語句之前,首先需要區分幾個概念,我們常說的資料庫是指資料庫軟體,例如MySQL、Oracle、SQL Server等,而本文提到的資料庫是指資料庫軟體中的一個個用於存儲數據的容器。

在MySQL中,資料庫稱為database,數據表稱為table,一個資料庫軟體中有多個資料庫(databases),每個資料庫中又可以有多個數據表(tables),最終,數據是存儲在數據表中。

資料庫和數據表之間的關系可以用下面這個圖來表示,對於一個資料庫來說,有多個數據表。

在正式開始寫SQL語句之前,需要說明兩點。

這里通過MySQL Workbench來寫SQL代碼,在Workbench中,執行一條SQL語句的方式有兩種。

了解了這之後,接下來介紹一些常見的命令,分兩部分:資料庫常用命令和數據表常用命令。

1、查看有哪些資料庫

2、創建資料庫

創建一個名為Testdb的資料庫。

3、創建資料庫並指定編碼格式

有些時候,為了防止中文亂碼,創建資料庫的時候需要指定編碼格式。

4、使用某個資料庫

使用mydb這個資料庫,或者進入mydb這個資料庫。

5、刪除資料庫

刪除Testdb這個資料庫。

1、查看有哪些數據表

進入某個資料庫之後,想查看有哪些數據表,SQL語句為:

mydb是一個新建的資料庫,所以自然是沒有數據表。

2、創建數據表

建表SQL語句格式為:

說明: 每個欄位以逗號分隔,最後一個欄位不加逗號。

例如,給定一個學員信息表,如下表所示。

根據以上表格,建表SQL語句如下。

以上語句中,primary key表示主鍵,意思是這個欄位作為記錄的唯一標識,就像每個人的身份證號,都是唯一確定的。

3、查看錶結構

查看錶結構的SQL命令為:

執行該命令會顯示表stuinfo的基本結構,例如有哪些欄位,每個欄位是什麼類型,誰是主鍵等。

4、修改數據表

修改數據表通過drop子句進行,比如,建完表後,想增加一個欄位,SQL語句的格式為:

想在指定位置增加一個欄位,例如,在某個欄位後增加一個欄位,SQL語句的格式為:

如果在某個欄位之前增加欄位,用before即可。

例如,在欄位age後增加一個欄位major(專業),SQL語句為:

執行這個命令,再通過describe查看錶結構,會發現表中多了一個欄位major。

如果要刪除major這個欄位,通過drop子句,SQL語句為:

5、重命名表

重命名表通過alter+rename來實現,SQL語句格式為:

這里為了不影響之前創建的表,我們創建一個新表,SQL語句如下。

以上創建一個名為stuInfoTest的表,現在想將它的名稱改成stuinfotest1,SQL語句為:

6、刪除數據表

刪除數據表通過drop進行,SQL語句格式為:

例如,刪除數據表stuinfotest1,SQL語句為:

7、插入記錄

此時的表stuinfo是空的,沒有數據,我們要向表中插入記錄。

插入記錄通過insert into進行,SQL語句格式為:

例如,向表stuinfo插入一條記錄,SQL語句為:

注意:上方是一條SQL語句,為了可讀性換行,記住一條SQL語句默認以分號結尾。

如果需要一次性插入多條記錄,SQL語句格式為:

例如,向表stuinfo再插入兩條記錄,SQL語句為:

注意:如果設置了主鍵,插入記錄的主鍵欄位是不能重復的,也就是不能插入重復的記錄。

作業:大家可以按照上述方法將上面的學員信息表中的所有記錄都插入表stuinfo中。

8、查詢記錄

有了數據之後,就可以查詢記錄了,查詢記錄通過select子句進行。

例如,想查詢表stuinfo中的所有記錄,SQL語句為:

執行之後,就可以看到表stuinfo中的所有記錄了。

如果想查詢符合某個條件的記錄,就要用到where子句了,SQL格式為:

例如,想查詢stuid為20161001的記錄,SQL語句為:

9、刪除記錄

刪除記錄通過delete子句進行,SQL語句格式為:

例如,想刪除stuid為20161002的記錄,SQL語句為:

10、修改記錄

修改記錄通過update子句進行,update就是更新的意思,SQL語句格式為:

例如,想將學號(stuid)為20161001的記錄的姓名(stuname)更新為Jack,SQL語句為:

以上,就是MySQL中的基本SQL語句。

零基礎如何學習數據分析?查看下方專欄。

⑧ 資料庫常用sql語句有哪些

資料庫常用sql語句有哪些

SQL語句有哪些?SQL語句無論是種類還是數量都是繁多的,很多語句也是經常要用到的,下文我為大家分享的就是SQL的常用語句,僅供參考!

50個常用的sql語句

Student(S#,Sname,Sage,Ssex) 學生表

Course(C#,Cname,T#) 課程表

SC(S#,C#,score) 成績表

Teacher(T#,Tname) 教師表

問題:

1、查詢“001”課程比“002”課程成績高的所有學生的學號;

select a.S# from (select s#,score from SC where C#='001') a,(select s#,score

from SC where C#='002') b

where a.score>b.score and a.s#=b.s#;

2、查詢平均成績大於60分的同學的學號和平均成績;

select S#,avg(score)

from sc

group by S# having avg(score) >60;

3、查詢所有同學的學號、姓名、選課數、總成績;

select Student.S#,Student.Sname,count(SC.C#),sum(score)

from Student left Outer join SC on Student.S#=SC.S#

group by Student.S#,Sname

4、查詢姓“李”的老師的個數;

select count(distinct(Tname))

from Teacher

where Tname like '李%';

5、查詢沒學過“葉平”老師課的同學的學號、姓名;

select Student.S#,Student.Sname

from Student

where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='葉平');

6、查詢學過“001”並且也學過編號“002”課程的同學的學號、姓名;

select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');

7、查詢學過“葉平”老師所教的所有課的同學的學號、姓名;

select S#,Sname

from Student

where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='葉平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='葉平'));

8、查詢課程編號“002”的成績比課程編號“001”課程低的所有同學的學號、姓名;

Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2

from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;

9、查詢所有課程成績小於60分的同學的學號、姓名;

select S#,Sname

from Student

where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);

10、查詢沒有學全所有課的同學的學號、姓名;

select Student.S#,Student.Sname

from Student,SC

where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);

11、查詢至少有一門課與學號為“1001”的同學所學相同的同學的學號和姓名;

select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';

12、查詢至少學過學號為“001”同學所有一門課的其他同學學號和姓名;

select distinct SC.S#,Sname

from Student,SC

where Student.S#=SC.S# and C# in (select C# from SC where S#='001');

13、把“SC”表中“葉平”老師教的課的成績都更改為此課程的平均成績;

update SC set score=(select avg(SC_2.score)

from SC SC_2

where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='葉平');

14、查詢和“1002”號的同學學習的課程完全相同的其他同學學號和姓名;

select S# from SC where C# in (select C# from SC where S#='1002')

group by S# having count(*)=(select count(*) from SC where S#='1002');

15、刪除學習“葉平”老師課的SC表記錄;

Delect SC

from course ,Teacher

where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='葉平';

16、向SC表中插入一些記錄,這些記錄要求符合以下條件:沒有上過編號“003”課程的同學學號、2、

號課的平均成績;

Insert SC select S#,'002',(Select avg(score)

from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');

17、按平均成績從高到低顯示所有學生的“資料庫”、“企業管理”、“英語”三門的課程成績,按如下形式顯示: 學生ID,,資料庫,企業管理,英語,有效課程數,有效平均分

SELECT S# as 學生ID

,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 資料庫

,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企業管理

,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英語

,COUNT(*) AS 有效課程數, AVG(t.score) AS 平均成績

FROM SC AS t

GROUP BY S#

ORDER BY avg(t.score)

18、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分

SELECT L.C# As 課程ID,L.score AS 最高分,R.score AS 最低分

FROM SC L ,SC AS R

WHERE L.C# = R.C# and

L.score = (SELECT MAX(IL.score)

FROM SC AS IL,Student AS IM

WHERE L.C# = IL.C# and IM.S#=IL.S#

GROUP BY IL.C#)

AND

R.Score = (SELECT MIN(IR.score)

FROM SC AS IR

WHERE R.C# = IR.C#

GROUP BY IR.C#

);

19、按各科平均成績從低到高和及格率的百分數從高到低順序

SELECT t.C# AS 課程號,max(course.Cname)AS 課程名,isnull(AVG(score),0) AS 平均成績

,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分數

FROM SC T,Course

where t.C#=course.C#

GROUP BY t.C#

ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC

20、查詢如下課程平均成績和及格率的百分數(用"1行"顯示): 企業管理(001),馬克思(002),OO&UML (003),資料庫(004)

SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企業管理平均分

,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企業管理及格百分數

,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 馬克思平均分

,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 馬克思及格百分數

,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分

,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分數

,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 資料庫平均分

,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 資料庫及格百分數

FROM SC

21、查詢不同老師所教不同課程平均分從高到低顯示

SELECT max(Z.T#) AS 教師ID,MAX(Z.Tname) AS 教師姓名,C.C# AS 課程ID,MAX(C.Cname) AS 課程名稱,AVG(Score) AS 平均成績

FROM SC AS T,Course AS C ,Teacher AS Z

where T.C#=C.C# and C.T#=Z.T#

GROUP BY C.C#

ORDER BY AVG(Score) DESC

22、查詢如下課程成績第 3 名到第 6 名的學生成績單:企業管理(001),馬克思(002),UML (003),資料庫(004)

[學生ID],[學生姓名],企業管理,馬克思,UML,資料庫,平均成績

SELECT DISTINCT top 3

SC.S# As 學生學號,

Student.Sname AS 學生姓名 ,

T1.score AS 企業管理,

T2.score AS 馬克思,

T3.score AS UML,

T4.score AS 資料庫,

ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 總分

FROM Student,SC LEFT JOIN SC AS T1

ON SC.S# = T1.S# AND T1.C# = '001'

LEFT JOIN SC AS T2

ON SC.S# = T2.S# AND T2.C# = '002'

LEFT JOIN SC AS T3

ON SC.S# = T3.S# AND T3.C# = '003'

LEFT JOIN SC AS T4

ON SC.S# = T4.S# AND T4.C# = '004'

WHERE student.S#=SC.S# and

ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)

NOT IN

(SELECT

DISTINCT

TOP 15 WITH TIES

ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)

FROM sc

LEFT JOIN sc AS T1

ON sc.S# = T1.S# AND T1.C# = 'k1'

LEFT JOIN sc AS T2

ON sc.S# = T2.S# AND T2.C# = 'k2'

LEFT JOIN sc AS T3

ON sc.S# = T3.S# AND T3.C# = 'k3'

LEFT JOIN sc AS T4

ON sc.S# = T4.S# AND T4.C# = 'k4'

ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);

23、統計列印各科成績,各分數段人數:課程ID,課程名稱,[100-85],[85-70],[70-60],[ <60]

SELECT SC.C# as 課程ID, Cname as 課程名稱

,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]

,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70]

,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60]

,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]

FROM SC,Course

where SC.C#=Course.C#

GROUP BY SC.C#,Cname;

24、查詢學生平均成績及其名次

SELECT 1+(SELECT COUNT( distinct 平均成績)

FROM (SELECT S#,AVG(score) AS 平均成績

FROM SC

GROUP BY S#

) AS T1

WHERE 平均成績 > T2.平均成績) as 名次,

S# as 學生學號,平均成績

FROM (SELECT S#,AVG(score) 平均成績

FROM SC

GROUP BY S#

) AS T2

ORDER BY 平均成績 desc;

25、查詢各科成績前三名的記錄:(不考慮成績並列情況)

SELECT t1.S# as 學生ID,t1.C# as 課程ID,Score as 分數

FROM SC t1

WHERE score IN (SELECT TOP 3 score

FROM SC

WHERE t1.C#= C#

ORDER BY score DESC

)

ORDER BY t1.C#;

26、查詢每門課程被選修的學生數

select c#,count(S#) from sc group by C#;

27、查詢出只選修了一門課程的全部學生的學號和姓名

select SC.S#,Student.Sname,count(C#) AS 選課數

from SC ,Student

where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;

28、查詢男生、女生人數

Select count(Ssex) as 男生人數 from Student group by Ssex having Ssex='男';

Select count(Ssex) as 女生人數 from Student group by Ssex having Ssex='女';

29、查詢姓“張”的.學生名單

SELECT Sname FROM Student WHERE Sname like '張%';

30、查詢同名同性學生名單,並統計同名人數

select Sname,count(*) from Student group by Sname having count(*)>1;;

31、1981年出生的學生名單(註:Student表中Sage列的類型是datetime)

select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age

from student

where CONVERT(char(11),DATEPART(year,Sage))='1981';

32、查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時,按課程號降序排列

Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;

33、查詢平均成績大於85的所有學生的學號、姓名和平均成績

select Sname,SC.S# ,avg(score)

from Student,SC

where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;

34、查詢課程名稱為“資料庫”,且分數低於60的學生姓名和分數

Select Sname,isnull(score,0)

from Student,SC,Course

where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname='資料庫'and score <60;

35、查詢所有學生的選課情況;

SELECT SC.S#,SC.C#,Sname,Cname

FROM SC,Student,Course

where SC.S#=Student.S# and SC.C#=Course.C# ;

36、查詢任何一門課程成績在70分以上的姓名、課程名稱和分數;

SELECT distinct student.S#,student.Sname,SC.C#,SC.score

FROM student,Sc

WHERE SC.score>=70 AND SC.S#=student.S#;

37、查詢不及格的課程,並按課程號從大到小排列

select c# from sc where scor e <60 order by C# ;

38、查詢課程編號為003且課程成績在80分以上的學生的學號和姓名;

select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';

39、求選了課程的學生人數

select count(*) from sc;

40、查詢選修“葉平”老師所授課程的學生中,成績最高的學生姓名及其成績

select Student.Sname,score

from Student,SC,Course C,Teacher

where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='葉平' and SC.score=(select max(score)from SC where C#=C.C# );

41、查詢各個課程及相應的選修人數

select count(*) from sc group by C#;

42、查詢不同課程成績相同的學生的學號、課程號、學生成績

select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;

43、查詢每門功成績最好的前兩名

SELECT t1.S# as 學生ID,t1.C# as 課程ID,Score as 分數

FROM SC t1

WHERE score IN (SELECT TOP 2 score

FROM SC

WHERE t1.C#= C#

ORDER BY score DESC

)

ORDER BY t1.C#;

44、統計每門課程的學生選修人數(超過10人的課程才統計)。要求輸出課程號和選修人數,查詢結果按人數降序排列,查詢結果按人數降序排列,若人數相同,按課程號升序排列

select C# as 課程號,count(*) as 人數

from sc

group by C#

order by count(*) desc,c#

45、檢索至少選修兩門課程的學生學號

select S#

from sc

group by s#

having count(*) > = 2

46、查詢全部學生都選修的課程的課程號和課程名

select C#,Cname

from Course

where C# in (select c# from sc group by c#)

47、查詢沒學過“葉平”老師講授的任一門課程的學生姓名

select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='葉平');

48、查詢兩門以上不及格課程的同學的學號及其平均成績

select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#;

49、檢索“004”課程分數小於60,按分數降序排列的同學學號

select S# from SC where C#='004'and score <60 order by score desc;

50、刪除“002”同學的“001”課程的成績

delete from Sc where S#='001'and C#='001';

;

⑨ sql查詢語句大全

SELECT * FROM TWS2F14CCC260D71 WHERE 地類='1999資源清查有林地'

⑩ SQL的經典語句有哪些

SQL分類:
DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE)
DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT)
DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,簡要介紹基礎語句:
1、說明:創建資料庫
CREATE DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:備份sql server
--- 創建 備份數據的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始 備份
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
註:索引是不可更改的,想更改必須刪除重新建。
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%』 ---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
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:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
其次,大家來看一些不錯的sql語句
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 '"&Server.MapPath(".")&"\data.mdb" &"' 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 a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) 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 table1.field1=table2.field1 )
11、說明:四表聯查問題:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、說明:日程安排提前五分鍾提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
13、說明:一條sql 語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位
14、說明:前10條記錄
select top 10 * form table1 where 范圍
15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、說明:隨機取出10條數據
select top 10 * from tablename order by newid()
18、說明:隨機選擇記錄
select newid()
19、說明:刪除重復記錄
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、說明:列出資料庫里所有的表名
select name from sysobjects where type='U'
21、說明:列出表裡的所有的
select name from syscolumns where id=object_id('TableName')
22、說明:列示type、vender、pcs欄位,以type欄位排列,case可以方便地實現多重選擇,類似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
顯示結果:
type vender pcs
電腦 A 1
電腦 A 1
光碟 B 2
光碟 A 2
手機 B 3
手機 C 3
23、說明:初始化表table1
TRUNCATE TABLE table1
24、說明:選擇從10到15的記錄
select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc
隨機選擇資料庫記錄的方法(使用Randomize函數,通過SQL語句實現)
對存儲在資料庫中的數據來說,隨機數特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP「找個隨機數」然後列印出來。實際上常見的解決方案是建立如下所示的循環:
Randomize
RNumber = Int(Rnd*499) +1

While Not objRec.EOF
If objRec("ID") = RNumber THEN
... 這里是執行腳本 ...
end if
objRec.MoveNext
Wend
這很容易理解。首先,你取出1到500范圍之內的一個隨機數(假設500就是資料庫內記錄的總數)。然後,你遍歷每一記錄來測試ID 的值、檢查其是否匹配RNumber。滿足條件的話就執行由THEN 關鍵字開始的那一塊代碼。假如你的RNumber 等於495,那麼要循環一遍資料庫花的時間可就長了。雖然500這個數字看起來大了些,但相比更為穩固的企業解決方案這還是個小型資料庫了,後者通常在一個資料庫內就包含了成千上萬條記錄。這時候不就死定了?
採用SQL,你就可以很快地找出准確的記錄並且打開一個只包含該記錄的recordset,如下所示:
Randomize
RNumber = Int(Rnd*499) + 1

SQL = "SELECT * FROM Customers WHERE ID = " & RNumber

set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email")
不必寫出RNumber 和ID,你只需要檢查匹配情況即可。只要你對以上代碼的工作滿意,你自可按需操作「隨機」記錄。Recordset沒有包含其他內容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時間。
再談隨機數
現在你下定決心要榨乾Random 函數的最後一滴油,那麼你可能會一次取出多條隨機記錄或者想採用一定隨機范圍內的記錄。把上面的標准Random 示例擴展一下就可以用SQL應對上面兩種情況了。
為了取出幾條隨機選擇的記錄並存放在同一recordset內,你可以存儲三個隨機數,然後查詢資料庫獲得匹配這些數字的記錄:
SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3
假如你想選出10條記錄(也許是每次頁面裝載時的10條鏈接的列表),你可以用BETWEEN 或者數學等式選出第一條記錄和適當數量的遞增記錄。這一操作可以通過好幾種方式來完成,但是 SELECT 語句只顯示一種可能(這里的ID 是自動生成的號碼):
SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"
注意:以上代碼的執行目的不是檢查資料庫內是否有9條並發記錄。
隨機讀取若干條記錄,測試過
Access語法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
Sql server:select top n * from 表名 order by newid()
mysql select * From 表名 Order By rand() Limit n
Access左連接語法(最近開發要用左連接,Access幫助什麼都沒有,網上沒有Access的SQL說明,只有自己測試, 現在記下以備後查)
語法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...
使用SQL語句 用...代替過長的字元串顯示
語法:
SQL資料庫:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
Access資料庫:SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;
Conn.Execute說明
Execute方法
該方法用於執行SQL語句。根據SQL語句執行後是否返回記錄集,該方法的使用格式分為以下兩種:
1.執行SQL查詢語句時,將返回查詢得到的記錄集。用法為:
Set 對象變數名=連接對象.Execute("SQL 查詢語言")
Execute方法調用後,會自動創建記錄集對象,並將查詢結果存儲在該記錄對象中,通過Set方法,將記錄集賦給指定的對象保存,以後對象變數就代表了該記錄集對象。
2.執行SQL的操作性語言時,沒有記錄集的返回。此時用法為:
連接對象.Execute "SQL 操作性語句" [, RecordAffected][, Option]
·RecordAffected 為可選項,此出可放置一個變數,SQL語句執行後,所生效的記錄數會自動保存到該變數中。通過訪問該變數,就可知道SQL語句隊多少條記錄進行了操作。
·Option 可選項,該參數的取值通常為adCMDText,它用於告訴ADO,應該將Execute方法之後的第一個字元解釋為命令文本。通過指定該參數,可使執行更高效。
·BeginTrans、RollbackTrans、CommitTrans方法
這三個方法是連接對象提供的用於事務處理的方法。BeginTrans用於開始一個事物;RollbackTrans用於回滾事務;CommitTrans用於提交所有的事務處理結果,即確認事務的處理。
事務處理可以將一組操作視為一個整體,只有全部語句都成功執行後,事務處理才算成功;若其中有一個語句執行失敗,則整個處理就算失敗,並恢復到處里前的狀態。
BeginTrans和CommitTrans用於標記事務的開始和結束,在這兩個之間的語句,就是作為事務處理的語句。判斷事務處理是否成功,可通過連接對象的Error集合來實現,若Error集合的成員個數不為0,則說明有錯誤發生,事務處理失敗。Error集合中的每一個Error對象,代表一個錯誤信息。
SQL語句大全精要
2006/10/26 13:46
DELETE語句
DELETE語句:用於創建一個刪除查詢,可從列在 FROM 子句之中的一個或多個表中刪除記錄,且該子句滿足 WHERE 子句中的條件,可以使用DELETE刪除多個記錄。
語法:DELETE [table.*] FROM table WHERE criteria
語法:DELETE * FROM table WHERE criteria='查詢的字'
說明:table參數用於指定從其中刪除記錄的表的名稱。
criteria參數為一個表達式,用於指定哪些記錄應該被刪除的表達式。
可以使用 Execute 方法與一個 DROP 語句從資料庫中放棄整個表。不過,若用這種方法刪除表,將會失去表的結構。不同的是當使用 DELETE,只有數據會被刪除;表的結構以及表的所有屬性仍然保留,例如欄位屬性及索引。

UPDATE
有關UPDATE,急!!!!!!!!!!!
在ORACLE資料庫中
表 A ( ID ,FIRSTNAME,LASTNAME )
表 B( ID,LASTNAME)
表 A 中原來ID,FIRSTNAME兩個欄位的數據是完整的
表 B中原來ID,LASTNAME兩個欄位的數據是完整的
現在要把表 B中的LASTNAME欄位的相應的數據填入到A表中LASTNAME相應的位置。兩個表中的ID欄位是相互關聯的。
先謝謝了!!!!
update a set a.lastname=(select b.lastname from b where a.id=b.id)

掌握SQL四條最基本的數據操作語句:Insert,Select,Update和Delete。
練掌握SQL是資料庫用戶的寶貴財 富。在本文中,我們將引導你掌握四條最基本的數據操作語句—SQL的核心功能—來依次介紹比較操作符、選擇斷言以及三值邏輯。當你完成這些學習後,顯然你已經開始算是精通SQL了。
在我們開始之前,先使用CREATE TABLE語句來創建一個表(如圖1所示)。DDL語句對資料庫對象如表、列和視進行定義。它們並不對表中的行進行處理,這是因為DDL語句並不處理資料庫中實際的數據。這些工作由另一類SQL語句—數據操作語言(DML)語句進行處理。
SQL中有四種基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由於這是大多數SQL用戶經常用到的,我們有必要在此對它們進行一一說明。在圖1中我們給出了一個名為EMPLOYEES的表。其中的每一行對應一個特定的雇員記錄。請熟悉這張表,我們在後面的例子中將要用到它。

熱點內容
php解壓程序 發布:2025-01-15 17:06:22 瀏覽:140
刷助力腳本 發布:2025-01-15 17:02:31 瀏覽:518
c盤里的用戶文件夾可以刪除 發布:2025-01-15 16:56:45 瀏覽:949
虛幻4編譯到哪裡 發布:2025-01-15 16:50:19 瀏覽:754
透明度漸變android 發布:2025-01-15 16:45:08 瀏覽:833
dos連接oracle資料庫 發布:2025-01-15 16:41:39 瀏覽:904
網路配置比較低怎麼做 發布:2025-01-15 16:35:38 瀏覽:361
android彈出鍵盤監聽 發布:2025-01-15 16:35:11 瀏覽:207
uz畫圖編程 發布:2025-01-15 16:32:44 瀏覽:883
ppt怎麼解壓 發布:2025-01-15 16:14:58 瀏覽:849