當前位置:首頁 » 編程語言 » 記錄sql語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

記錄sql語句

發布時間: 2023-03-25 18:35:59

❶ 如何一次插入多條記錄的sql語句

在使用SQL資料庫的時候,我們也許會需要一次像資料庫中添加多條記錄,那麼我們可以使用SQL語句來實現,該語句具體如下:x0dx0a--添加一條記錄 x0dx0aINSERT INTO tableName(col1,col2,col3) VALUES (1,2,3) x0dx0a x0dx0a--添加多條記錄 x0dx0aINSERT INTO tableName(col1,col2,col3) x0dx0aSELECT 3,4,5 x0dx0aUNION ALL x0dx0aSELECT 6,7,8 x0dx0a x0dx0a--從另外的一張表中讀取多條數據添加到新表中 x0dx0aINSERT INTO tableName(col1,col2,col3) x0dx0aSELECT a,b,c FROM tableA x0dx0a x0dx0a--從其他的多張表中讀取數據添加到新表中 x0dx0aINSERT INTO tableName(col1,col2,col3) x0dx0aSELECT a,b,c FROM tableA WHERE a=1 x0dx0aUNION ALL x0dx0aSELECT a,b,c FROM tableB WHERE a=2 x0dx0a上邊代碼中的into都可以省略!x0dx0a上邊代碼中的union all如果換成union,則相同記錄只插入一次,不會重復插入。x0dx0a另外一種方法是SQL Server2008特有的,所以,如果你不是SQL Server2008,就不能使用這種方法了。 x0dx0aINSERT INTO MyTable(ID,NAME)VALUES(7,顛'),(8,顜'),(9,顝')x0dx0acreate table [TEST]x0dx0a(x0dx0a [NUM_ID] int primary keyx0dx0a)x0dx0agox0dx0adeclare @temp intx0dx0aset @temp=1;x0dx0awhile @temp<=1000000 x0dx0abeginx0dx0ainsert into [TEST]([NUM_ID]) values(@temp)x0dx0aset @temp=@temp+1;x0dx0aendx0dx0agox0dx0a----------------------------------------------------------x0dx0a--試試下面的方法x0dx0a--2005x0dx0aDECLARE @n AS BIGINT;x0dx0aSET @n = 1000000;x0dx0aWITH Base ASx0dx0a(x0dx0a SELECT 1 AS nx0dx0a UNION ALLx0dx0a SELECT n + 1 FROM Base WHERE n < CEILING(SQRT(@n))x0dx0a),x0dx0aExpand ASx0dx0a(x0dx0a SELECT 1 AS cx0dx0a FROM Base AS B1, Base AS B2x0dx0a),x0dx0aNums ASx0dx0a(x0dx0a SELECT ROW_NUMBER() OVER(ORDER BY c) AS nx0dx0a FROM Expandx0dx0a)x0dx0aSELECT n FROM Nums WHERE n <= @nx0dx0aOPTION(MAXRECURSION 0);x0dx0a--2x0dx0aCREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS WITHx0dx0a L0 AS(SELECT 1 AS c UNION ALL SELECT 1),x0dx0a L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B),x0dx0a L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B),x0dx0a L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B),x0dx0a L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B),x0dx0a L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B),x0dx0a Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5)x0dx0a SELECT n FROM Nums WHERE n <= @n;x0dx0aGOx0dx0a--2000 這個會比前兩個慢,但是前兩個2000不能用x0dx0aCREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);x0dx0aDECLARE @max AS INT, @rc AS INT;x0dx0aSET @max = 1000000;x0dx0aSET @rc = 1;x0dx0aINSERT INTO Nums VALUES(1);x0dx0aWHILE @rc * 2 <= @maxx0dx0aBEGINx0dx0a INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;x0dx0a SET @rc = @rc * 2;x0dx0aENDx0dx0aINSERT INTO dbo.Numsx0dx0a SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max; x0dx0a--------------------------------------------------------------------------------------------------------

❷ SQL語句:查詢某一年、月、日的記錄

SQL語句:查詢某一年、月、日的記錄

$sql="select * from dbname where YEAR(PatchDate)=".$year." and MONTH(PatchDate)=".$month." order by ID desc";

❸ 如何實現把庫里執行過的sql語句記錄下來

1、甲骨文ORACLE資料庫里有幾個表是專門記錄SQL語句持行情況的,但是刷新速度很快,灶慶岩老舊的記錄會被刪,估計很難記差並錄下來。怎麼查真心不知道。
2、微機的SQL Server的查法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
SELECT TOP 1000
--創建時間
QS.creation_time,
--查詢語句
SUBSTRING(ST.text,(QS.statement_start_offset/2)+1,
((CASE QS.statement_end_offset WHEN -1 THEN DATALENGTH(st.text)
ELSE QS.statement_end_offset END - QS.statement_start_offset)/2) + 1
) AS statement_text,
--執隱御行文本
ST.text,
--執行計劃
QS.total_worker_time,
QS.last_worker_time,
QS.max_worker_time,
QS.min_worker_time
FROM
sys.dm_exec_query_stats QS
--關鍵字
CROSS APPLY
sys.dm_exec_sql_text(QS.sql_handle) ST
--WHERE
--QS.creation_time BETWEEN '2012-12-03 09:00:00' AND '2012-12-03 11:00:00'
--AND ST.text LIKE '%%'
ORDER BY
QS.creation_time DESC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT TOP 1000
--創建時間
QS.creation_time,
--執行文本
ST.text
FROM
sys.dm_exec_query_stats QS
--關鍵字
CROSS APPLY
sys.dm_exec_sql_text(QS.sql_handle) ST
WHERE
--QS.creation_time BETWEEN '2012-12-03 09:00:00' AND '2012-12-03 11:00:00'
--AND
ST.text NOT LIKE '%SELECT * FROM T_LOCATIONINFO WHERE STRCLIPLOGICID in(%'
ORDER BY
QS.creation_time DESC

❹ SQL 查詢記錄數的SQL語句

sql中查詢記錄數用count函數。
1、創建測試表,插入數據:
create table test
(id int)
insert into test values (1)
insert into test values (2)
insert into test values (3)
insert into test values (null)2、查詢記錄數為兩種,一種是count(*),一種是count(欄位值):
測試一:
select count(*) from test結果:

測試二:
select count(id) from test結果:

說明:如果count(欄位名)的欄位中含有空值,則在count中不計數,而count(*)則是查詢全部的行數。

❺ 資料庫常用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 語句大全

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/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'

❼ SQL語句查詢資料庫中所有記錄

查詢一個資料庫中的所有表sql語句是show
tables;
顯示所有資料庫的命令是:show
databases;要查看某個資料庫先要進入資料庫使用user
命令;進入資料庫之後才能查詢資料庫中有哪些表。使用以下命令即可查出所有表:
show
tables;
(7)記錄sql語句擴展閱讀
mysql資料庫的基本sql操作命令介紹:
1、顯示當前資料庫伺服器中的資料庫列表:mysql>
SHOW
DATABASES;
2、建立資料庫:mysql>
CREATE
DATABASE
庫名;
3、建立數據表:mysql>
USE
庫名;mysql>
CREATE
TABLE
表名
(欄位名
VARCHAR(20),


CHAR(1));
4、刪除資料庫:mysql>
DROP
DATABASE
庫名;
5、刪除數據表:mysql>
DROP
TABLE
表名;
6、將表中記錄清空:mysql>
DELETE
FROM
表名;
7、往表中插入記錄:mysql>
INSERT
INTO
表名
VALUES
("hyq","M");
8、更新表中數據:mysql->
UPDATE
表名
SET
欄位名1='a',欄位名2='b'
WHERE
欄位名3='c';
9、用文本方式將數據裝入數據表中:mysql>
load
data
local
infile
"d:/mysql.txt"
into
table
表名;
10、導入.sql文件命令:mysql>
USE
資料庫名;mysql>
source
d:/mysql.sql;

❽ SQL語句語法大全

我整理的一些比較常用的SQL語句語法 需要的朋友可以過來參考下

一 數據控制語句 (DML) 部分

INSERT (往數據表裡插入記錄的語句)

INSERT INTO 表名(欄位名 欄位名 ……) VALUES ( 值 值 ……);

INSERT INTO 表名(欄位名 欄位名 ……) SELECT 欄位名 欄位名 …… FROM 另外的表名;

字元串類型的欄位值必須用單引號括起來 例如: GOOD DAY

如果欄位值里包含單引號 需要進行字元串轉換 我們把它替換成兩個單引號

字元串類型的欄位值超過定義的長度會出錯 最好在插入前進行長度校驗

日期欄位的欄位值可以用當前資料庫的系統時間SYSDATE 精確到秒

或者用字元串轉換成日期型函數TO_DATE(『 YYYY MM DD )

TO_DATE()還有很多種日期格式 可以參看ORACLE DOC

年 月 日 小時:分鍾:秒 的格式YYYY MM DD HH :MI:SS

INSERT時最大可操作的字元串長度小於等於 個單位元組 如果要插入更長的字元串 請考慮欄位用CLOB類型

方法借用ORACLE里自帶的DBMS_LOB程序包

INSERT時如果要用到從 開始自動增長的序列號 應該先建立一個序列號

CREATE SEQUENCE 序列號的名稱 (最好是表名+序列號標記) INCREMENT BY START WITH

MAXVALUE CYCLE NOCACHE;

其中最大的值按欄位的長度來定 如果定義的自動增長的序列號 NUMBER( ) 最大值為

INSERT 語句插入這個欄位值為: 序列號的名稱 NEXTVAL

DELETE (刪除數據表裡記錄的語句)

DELETE FROM表名 WHERE 條件;

注意 刪除記錄並不能釋放ORACLE里被佔用的數據塊表空間 它只把那些被刪除的數據塊標成unused

如果確實要刪除一個大表裡的全部記錄 可以用 TRUNCATE 命令 它可以釋放佔用的數據塊表空間

TRUNCATE TABLE 表名;

此操作不可回退

UPDATE (修改數據表裡記錄的語句)

UPDATE表名 SET 欄位名 =值 欄位名 =值 …… WHERE 條件;

如果修改的值N沒有賦值或定義時 將把原來的記錄內容清為NULL 最好在修改前進行非空校驗;

值N超過定義的長度會出錯 最好在插入前進行長度校驗

注意事項:

A 以上SQL語句對表都加上了行級鎖

確認完成後 必須加上事物處理結束的命令 MIT 才能正式生效

否則改變不一定寫入資料庫里

如果想撤回這些操作 可以用命令 ROLLBACK 復原

B 在運行INSERT DELETE 和 UPDATE 語句前最好估算一下可能操作的記錄范圍

應該把它限定在較小 (一萬條記錄) 范圍內 否則ORACLE處理這個事物用到很大的回退段

程序響應慢甚至失去響應 如果記錄數上十萬以上這些操作 可以把這些SQL語句分段分次完成

其間加上MIT 確認事物處理

二 數據定義 (DDL) 部分

CREATE (創建表 索引 視圖 同義詞 過程 函數 資料庫鏈接等)

ORACLE常用的欄位類型有

CHAR 固定長度的字元串

VARCHAR 可變長度的字元串

NUMBER(M N) 數字型M是位數總長度 N是小數的長度

DATE 日期類型

創建表時要把較小的不為空的欄位放在前面 可能為空的欄位放在後面

創建表時可以用中文的欄位名 但最好還是用英文的欄位名

創建表時可以給欄位加上默認值 例如 DEFAULT SYSDATE

這樣每次插入和修改時 不用程序操作這個欄位都能得到動作的時間

創建表時可以給欄位加上約束條件

例如 不允許重復 UNIQUE 關鍵字 PRIMARY KEY

ALTER (改變表 索引 視圖等)

改變表的名稱

ALTER TABLE 表名 TO 表名 ;

在表的後面增加一個欄位

ALTER TABLE表名 ADD 欄位名 欄位名描述;

修改表裡欄位的定義描述

ALTER TABLE表名 MODIFY欄位名 欄位名描述;

給表裡的欄位加上約束條件

ALTER TABLE 表名 ADD CONSTRAINT 約束名 PRIMARY KEY (欄位名);

ALTER TABLE 表名 ADD CONSTRAINT 約束名 UNIQUE (欄位名);

把表放在或取出資料庫的內存區

ALTER TABLE 表名 CACHE;

ALTER TABLE 表名 NOCACHE;

DROP (刪除表 索引 視圖 同義詞 過程 函數 資料庫鏈接等)

刪除表和它所有的約束條件

DROP TABLE 表名 CASCADE CONSTRAINTS;

TRUNCATE (清空表裡的所有記錄 保留表的結構)

TRUNCATE 表名;

三 查詢語句 (SELECT) 部分

SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] WHERE 條件;

欄位名可以帶入函數

例如: COUNT(*) MIN(欄位名) MAX(欄位名) AVG(欄位名) DISTINCT(欄位名)

TO_CHAR(DATE欄位名 YYYY MM DD HH :MI:SS )

NVL(EXPR EXPR )函數

解釋:

IF EXPR =NULL

RETURN EXPR

ELSE

RETURN EXPR

DECODE(AA﹐V ﹐R ﹐V ﹐R )函數

解釋:

IF AA=V THEN RETURN R

IF AA=V THEN RETURN R

ELSE

RETURN NULL

LPAD(char n char )函數

解釋:

字元char 按制定的位數n顯示 不足的位數用char 字元串替換左邊的空位

欄位名之間可以進行算術運算

例如: (欄位名 *欄位名 )/

查詢語句可以嵌套

例如: SELECT …… FROM

(SELECT …… FROM表名 [表名 ……] WHERE 條件) WHERE 條件 ;

兩個查詢語句的結果可以做集合操作

例如: 並集UNION(去掉重復記錄) 並集UNION ALL(不去掉重復記錄) 差集MINUS 交集INTERSECT

分組查詢

SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] GROUP BY欄位名

[HAVING 條件] ;

兩個以上表之間的連接查詢

SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] WHERE

表名 欄位名 = 表名 欄位名 [ AND ……] ;

SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] WHERE

表名 欄位名 = 表名 欄位名(+) [ AND ……] ;

有(+)號的欄位位置自動補空值

查詢結果集的排序操作 默認的排序是升序ASC 降序是DESC

SELECT欄位名 欄位名 …… FROM 表名 [表名 ……]

ORDER BY欄位名 欄位名 DESC;

字元串模糊比較的方法

INSTR(欄位名 『字元串 )>

欄位名 LIKE 『字元串% [『%字元串% ]

每個表都有一個隱含的欄位ROWID 它標記著記錄的唯一性

四 ORACLE里常用的數據對象 (SCHEMA)

索引 (INDEX)

CREATE INDEX 索引名ON 表名 ( 欄位 [欄位 ……] );

ALTER INDEX 索引名 REBUILD;

一個表的索引最好不要超過三個 (特殊的大表除外) 最好用單欄位索引 結合SQL語句的分析執行情況

也可以建立多欄位的組合索引和基於函數的索引

ORACLE 字元串可以索引的最大長度為 單位元組

ORACLE 字元串可以索引的最大長度為 單位元組

ORACLE DOC上說字元串最大可以建索引的長度約是:數據塊的大小(db_block_size)* %

視圖 (VIEW)

CREATE VIEW 視圖名AS SELECT … FROM … ;

ALTER VIEW視圖名 PILE;

視圖僅是一個SQL查詢語句 它可以把表之間復雜的關系簡潔化

同義詞 (SYNONMY)

CREATE SYNONYM同義詞名FOR 表名;

CREATE SYNONYM同義詞名FOR 表名@資料庫鏈接名;

資料庫鏈接 (DATABASE LINK)

CREATE DATABASE LINK資料庫鏈接名CONNECT TO 用戶名 IDENTIFIED BY 密碼 USING 『資料庫連接字元串 ;

資料庫連接字元串可以用NET EASY CONFIG或者直接修改TNSNAMES ORA里定義

資料庫參數global_name=true時要求資料庫鏈接名稱跟遠端資料庫名稱一樣

資料庫全局名稱可以用以下命令查出

SELECT * FROM GLOBAL_NAME;

查詢遠端資料庫里的表

SELECT …… FROM 表名@資料庫鏈接名;

五 許可權管理 (DCL) 語句

GRANT 賦於許可權

常用的系統許可權集合有以下三個:

CONNECT(基本的連接) RESOURCE(程序開發) DBA(資料庫管理)

常用的數據對象許可權有以下五個:

ALL ON 數據對象名 SELECT ON 數據對象名 UPDATE ON 數據對象名

DELETE ON 數據對象名 INSERT ON 數據對象名 ALTER ON 數據對象名

GRANT CONNECT RESOURCE TO 用戶名;

GRANT SELECT ON 表名 TO 用戶名;

GRANT SELECT INSERT DELETE ON表名 TO 用戶名 用戶名 ;

REVOKE 回收許可權

REVOKE CONNECT RESOURCE FROM 用戶名;

REVOKE SELECT ON 表名 FROM 用戶名;

lishixin/Article/program/MySQL/201311/29570

❾ sql語句怎麼添加一條記錄

sql語句中,添加記錄的語法為:insert into 表名 (col1,col2....coln)values(value1,value2.....valuen);

其中,如果你插入的每一列都是順序插入,無一缺漏的話,(col1,col2...coln)可以省略。

也就是上式也可以簡化為:insert into 表名values(value1,value2.....valuen);

看了你寫的sql代碼,問題出在insert into 的整體語句出現在了不該出現的地方,只需做一點小改動即可解決,如下圖:

解析:insert into語句需要在user表已經存在的情況下才可以使用。而你原來的語句中,將上圖2中的語句插入到了create table user的語句中,致使create table user 語句未能成功執行,所以才會報錯。

而將「INSERT INTO user(uid,tel) values('甲','3354986');」整條語句直接拿出來放在「ENGINE=InnoDB DEFAULT CHARSET=gbk;」後面之後,整個sql就可以順利執行了。

(9)記錄sql語句擴展閱讀:

當mysql大批量插入數據的時候就會變的非常慢,mysql提高insert into 插入速度的方法有三種:

1、第一種插入提速方法:

如果資料庫中的數據已經很多(幾百萬條), 那麼可以加大mysql配置中的 bulk_insert_buffer_size,這個參數默認為8M

舉例:bulk_insert_buffer_size=100M;

2、第二種mysql插入提速方法:

改寫所有 insert into 語句為insertdelayed into

這個insert delayed不同之處在於:立即返回結果,後台進行處理插入。

3、第三個方法: 一次插入多條數據:

insert中插入多條數據,舉例:

insert into table values('11','11'),('22','22'),('33','33')...;