数据库常用增删改查语句

创建一个表

CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
.......
)

1、增

(1)插入元祖

INSERT
INTO<表名>[(<属性列1>[,<属性列2>]...)]
VALUES(<常量1>[,<常量2>]...);

(2)插入子查询结果

INSERT
INTO<表名>[(<属性列1>[,<属性列2>...])]
子查询;

例:

INSERT
INTO TongXueLu ('姓名','地址','电子邮件')
SELECT name,address,email
FROM Students

2、删

DELETE
FROM<表名>
[WHERE<条件>];

3、改

UPDATE<表名>
SET<列名>=<表达式>[,<列名>=<表达式>] 
[WHERE<条件>];

 

  

4、查

一般格式:

SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]...
FROM<表名>[,<表名>]|(<SELECT语句>)[AS]<别名>
[WHERE<条件表达式>]                      //检索条件
[GROUP BY<列名1>[HAVING<条件表达式>]]     //分组筛选条件
[ORDER BY<列名2>[ASC|DESC]];            //排序依据

4.1 单表查询

(1)查询全体学生的学号。DISTINCT表示删除重复元素,如果不加则默认为ALL,则保留重复值。

SELECT DISTINCT Sno
FROM Student;

各个列的先后顺序可以与表中不一致。用户可以根据应用的需要改变列的显示顺序。

(2)查询全体学生的详细记录。

SELECT *
FROM Student;

(3)查询全体学生的学号、姓名及其出生年份。2020-Sage表示查询经过计算的值。

SELECT Sno,Sname,2020-Sage
FROM Student;

 (4)查询满足条件的元祖

1)比较

SELECT Sname,Sage
FROM Student
WHERE Grade<60;

2)确定范围

SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;

3)确定集合

SELECT Sname,Ssex
FROM Student
WHERE Sdept NOT IN('CS','MA','IS');

4)字符匹配

查询以“DB_”开头,且倒数第三个字符为 i 的课程的详细情况。

SELECT *
FROM Course
WHERE Cname LIKE 'DB\_%i_ _'ESCAPE'\';

5)查询空值

select name from a where email is null

(5)聚集函数

SELECT SUM(Ccredit)
FROM SC,Course
WHERE Sno='202015012'AND SC.Cno=Course.Cno

(6)GROUP BY子句

查询选修了三门以上课程的学生学号

SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3;

(7)【查询返回限制行数(关键字:top percent)】

例1:select top 6 name from a
说明:查询表a,显示列name的前6行,top为关键字
例2:select top 60 percent name from a
说明:查询表a,显示列name的60%,percent为关键字

4.2 连接查询

(1)等值于非等值连接查询

SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno AND
SC.Cno='2'AND SC.Grade>90;

(2)外连接

左外连接

select s.name,c.courseID,c.score
from strdents as s
left outer join score as c
on s.scode=c.strdentID
说明:在strdents表和score表中查询满足on条件的行,条件为score表的strdentID与strdents表中的sconde相同

右外连接

select s.name,c.courseID,c.score
from strdents as s
right outer join score as c
on s.scode=c.strdentID
说明:在strdents表和score表中查询满足on条件的行,条件为strdents表中的sconde与score表的strdentID相同

4.3 嵌套查询

子查询中不能出现order by

SELECT Sname
FROM Student
WHERE Sno IN
         (SELECT Sno
           FROM SC
           WHERE Cno='2');

4.4 集合查询

集合操作主要包括并操作UNION、交操作INTERSECT和差操作EXCEPT。

SELECT *
FROM Student
WHERE Sdept='CS'
UNION|INTERSECT|EXCEPT
SELECT *
FROM Student
WHERE Sage<=19;

 

posted @ 2020-07-07 16:51  橘子酱ing  阅读(7994)  评论(0编辑  收藏  举报