標準SQL語句大全【持續更新】(navicat12版親測有效)

不在窩裡發表於2020-05-02

提示:用ctrl+F快速查詢相關指令哦


-- 建立資料庫
create database test_sql;

-- 修改資料庫名稱(只有 sysadmin 和 dbcreator 固定伺服器角色的成員才答能執行 sp_renamedb)
sp_renamedb 'test_sql','exam_sql';

-- 刪除資料庫
drop database test_sql;

-- 引用資料庫
use test_sql;

-- 建立表
create table student(
sid int NOT NULL PRIMARY KEY,
sname VARCHAR(20) ,
sage INT not NULL CHECK (sage BETWEEN 1 and 100),
semail VARCHAR(50) CHECK (semail LIKE '_%@._%')UNIQUE
);

-- 刪除表
DROP TABLE student;

-- 增加列(列增加後將不能刪除。DB2中列加上後資料型別也不能改變,唯一能改變的是增加varchar型別的長度)
ALTER TABLE student add sphone VARCHAR(16);

-- 新增主鍵
ALTER TABLE student ADD PRIMARY KEY(sid);

-- 刪除主鍵
ALTER TABLE student DROP primary key(sid);

-- 建立索引(索引允許資料庫高效找到關係中那些索引陣列屬性上取給定值的元組,不用掃描所有元組)
create UNIQUE INDEX emailIndex on student (semail);

-- 刪除索引 (索引是不可更改的,想更改必須刪除重新建)
drop INDEX emailIndex on student;

-- 建立檢視 (儲存資料庫檢視關係,檢視中的欄位就是來自一個或多個資料庫中的真實的表中的欄位。我們可以向檢視新增 SQL 函式、WHERE 以及 JOIN 語句,我們也可以提交資料,就像這些來自於某個單一的表)
CREATE VIEW studentView as SELECT sid from student;

-- 刪除檢視
DROP VIEW studentView;

-- 新增資料(需要注意主外來鍵重複、check等約束)
insert into student(sid,sname,sage,semail,sphone) VALUES (3,'test',17,'3@.com','15239958942');

--更新資料
update student     SET sphone ='15239958914' where sage BETWEEN 10 and 20;

-- 查詢資料
select * from student;--全部查詢
select * from student where sid = 2;--條件查詢
select * from student where semail like '%@%';--like查詢
select * from student ORDER BY sid DESC;--降序查詢
select COUNT(DISTINCT sage) as sagecount from student ;--總數查詢,DISTINCT age查詢不同年齡,沒有disinct表示找所有sage值不空的個數,*、1代表查所有
select SUM(sage) as sagesum from student;--查詢年齡總和
select AVG(sage) as sageavg from student;--查詢平均年齡
select MAX(sage) as sagemax from student;--查詢最大
select MIN(sage) as sagemin from student;--查詢最小

-- 刪除資料
DELETE FROM student where sid = 2;

-- UNION 運算子通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重複行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重複行
select semail from student UNION select semail from users;

-- EXCEPT 運算子通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重複行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重複行。
select semail from student EXCEPT select semail from users;

-- INTERSECT 運算子通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重複行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重複行。
select semail from student INTERSECT select semail from users;

-- 左外連線(左連線):結果集幾包括連線表的匹配行,也包括左連線表的所有行。
select student.semail from student LEFT JOIN users ON student.semail = users.semail;

-- 右外連線(右連線):結果集既包括連線表的匹配連線行,也包括右連線表的所有行。
select student.semail from student RIGHT JOIN users ON student.semail = users.semail;

-- 全外連線:不僅包括符號連線表的匹配行,還包括兩個連線表中的所有記錄
select student.semail from student FULL JOIN users ON student.semail = users.semail;

-- 一張表,一旦分組 完成後,查詢後只能得到組相關的資訊;分組需要包含資訊:(統計資訊) count,sum,max,min,avg  分組的標準);在SQLServer中分組時:不能以text,ntext,image型別的欄位作為分組依據;在select統計函式中的欄位,不能和普通的欄位放在一起。
select sage,sum(sage) as '年齡和' from student GROUP BY sage;

 

相關文章