数据查询 SQL语句示例.docx
- 文档编号:7742188
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:17
- 大小:46.40KB
数据查询 SQL语句示例.docx
《数据查询 SQL语句示例.docx》由会员分享,可在线阅读,更多相关《数据查询 SQL语句示例.docx(17页珍藏版)》请在冰豆网上搜索。
数据查询SQL语句示例
SQL练习语句
-----创建数据库-----
CREATEDATABASE学生选课
USE学生选课
--创建学生表
CREATETABLE学生(学号char(12)PRIMARYKEY,
姓名varchar(8)NOTNULL,
性别char
(2),
出生日期date,
所在系char(10));
--创建课程表
CREATETABLE课程(课程号char(9)PRIMARYKEY(主键表示唯一且非空),
课程名称varchar(20)NOTNULL,
先修课char(9)FOREIGNKEYREFERENCES课程(课程号),
学分smallint);
--创建课程表
CREATETABLE选课(学号char(12)FOREIGNKEYREFERENCES学生(学号),
课程号char(9)FOREIGNKEYREFERENCES课程(课程号),
成绩smallint,
PRIMARYKEY(学号,课程号))
‘学生’表
属性名
数据类型
完整性约束
学号
char(12)
主键
姓名
varchar(8)
NOTNULL
性别
char
(2)
出生日期
date
所在系
char(10)
‘课程’表
属性名
数据类型
完整性约束
课程号
char(9)
主键
课程名
varchar(20)
NOTNULL
先修课
char(9)
外键,参照课程表的主键‘课程号’
学分
smallint
‘选课’表
属性名
数据类型
完整性约束
学号
char(12)
外键,参照学生表的主键‘学号’
主键
课程号
char(9)
外键,参照课程表的主键‘课程号’
成绩
smallint
INSERT学生VALUES('906001','陈芳菲','女','1993-02-01','软件');
INSERT学生VALUES('906002','赵晓宇','男','1991-11-10','软件');
INSERT学生VALUES('906003','何小田','女','1992-05-12','软件');
INSERT学生VALUES('902001','李琳琳','女','1992-06-01','通信');
INSERT学生VALUES('902002','刘晨','男','1992-01-08','通信');
INSERT学生VALUES('902003','王冬冬','男','1991-12-08','通信');
INSERT学生VALUES('905001','陈莉莉','女','1992-04-08','计算机');
INSERT学生VALUES('905002','梁栋','男','1992-03-28','计算机');
INSERT课程VALUES('3001','大学英语',NULL,4);
INSERT课程VALUES('3002','离散数学',NULL,3);
INSERT课程VALUES('3003','数据结构','3002',3);
INSERT课程VALUES('3004','哲学',NULL,3);
INSERT课程VALUES('3005','JAVA程序设计',NULL,5);
INSERT课程VALUES('3006','数据库设计','3003',4);
INSERT课程VALUES('3007','JSP_DESIGN','3005',5);
INSERT选课VALUES('906001','3001',88);
INSERT选课VALUES('906001','3002',98);
INSERT选课VALUES('906001','3003',91);
INSERT选课VALUES('906001','3006',95);
INSERT选课VALUES('906002','3005',85);
INSERT选课VALUES('906002','3002',72);
INSERT选课VALUES('906002','3003',89);
INSERT选课VALUES('906002','3006',87);
INSERT选课VALUES('902001','3001',81);
INSERT选课VALUES('902001','3002',93);
INSERT选课VALUES('902001','3003',87);
INSERT选课VALUES('902002','3005',86);
INSERT选课VALUES('902002','3001',72);
INSERT选课VALUES('902002','3002',90);
INSERT选课VALUES('902002','3004',83);
INSERT选课VALUES('905001','3002',78);
INSERT选课VALUES('905001','3005',85);
INSERT选课VALUES('905002','3001',80);
INSERT选课VALUES('905002','3005',91);
-----查询语句示例-----
【例1】SELECT学号,姓名FROM学生;
【例2】SELECT姓名,学号,所在系FROM学生;
【例3】SELECT姓名,出生日期FROM学生;
【例4】SELECT学号,姓名,性别,出生日期,所在系FROM学生;
SELECT*FROM学生
【例5】SELECT姓名,2014-YEAR(出生日期)FROM学生;
【例6】SELECT姓名,2014-YEAR(出生日期)AS年龄FROM学生;
【例7】SELECT学号FROM选课;
SELECTALL学号FROM选课
SELECTDISTINCT学号FROM选课
错误:
SELECTDISTINCT课程号,DISTINCT成绩FROM选课;
正确:
SELECTDISTINCT课程号,成绩FROM选课;
【例8】SELECT姓名FROM学生WHERE所在系='通信'
【例9】SELECT姓名,出生日期FROM学生WHERE2014-YEAR(出生日期)<22
SELECT姓名,出生日期FROM学生WHERENOT2014-YEAR(出生日期)>=22
【例10】SELECTDISTINCT学号FROM选课WHERE成绩<60
【例11】
SELECT姓名,所在系,2014-YEAR(出生日期)AS年龄
FROM学生
WHERE2014-YEAR(出生日期)BETWEEN20AND23
【例12】
SELECT姓名,所在系,2014-YEAR(出生日期)AS年龄
FROM学生
WHERE2014-YEAR(出生日期)NOTBETWEEN20AND23
【例13】
SELECT姓名,性别
FROM学生
WHERE所在系IN('通信','软件','计算机');
【例14】
SELECT姓名,性别,所在系
FROM学生
WHERE所在系NOTIN('通信','软件');
【例15】
SELECT*
FROM学生
WHERE学号LIKE'905002'
等价于
SELECT*
FROM学生
WHERE学号='905002'
【例16】
SELECT姓名,学号,性别
FROM学生
WHERE姓名LIKE'陈%'
【例17】
SELECT姓名
FROM学生
WHERE姓名LIKE'赵__'
【例18】
SELECT姓名,学号
FROM学生
WHERE姓名LIKE'_芳%'
【例19】
SELECT姓名
FROM学生
WHERE姓名NOTLIKE'何%'
【例20】
SELECT*
FROM学生
WHERE学号LIKE'90600[1-3]'
【例21】
SELECT*
FROM学生
WHERE学号LIKE'90600[^2]'
【例22】
SELECT课程号,学分
FROM课程
WHERE课程名称LIKE'JSP\_DESIGN'ESCAPE'\'
【例23】
SELECT学号,课程号
FROM选课
WHERE成绩ISNULL
【例24】
SELECT学号,课程号
FROM选课
WHERE成绩ISNOTNULL
【例25】
SELECT姓名
FROM学生
WHERE所在系='软件'AND2014-YEAR(出生日期)<22
改写【例13】
SELECT姓名,性别
FROM学生
WHERE所在系IN('通信','软件','计算机');
等价于
SELECT姓名,性别
FROM学生
WHERE所在系='通信'OR所在系='软件'OR所在系='计算机'
改写【例11】
SELECT姓名,所在系,2014-YEAR(出生日期)AS年龄
FROM学生
WHERE2014-YEAR(出生日期)BETWEEN20AND23
等价于
SELECT姓名,所在系,2014-YEAR(出生日期)AS年龄
FROM学生
WHERE2014-YEAR(出生日期)>=20AND2014-YEAR(出生日期)<=23
【例26】
SELECT学号,成绩
FROM选课
WHERE课程号='3003'
ORDERBY成绩DESC
【例27】
SELECT*
FROM学生
ORDERBY所在系,学号DESC
【例28】
SELECTCOUNT(*)
FROM学生
【例29】
SELECTCOUNT(DISTINCT学号)
FROM选课
【例30】
SELECTAVG(成绩)
FROM选课
WHERE课程号='3001'
【例31】
SELECTMAX(成绩)
FROM选课
WHERE课程号='3003'
【例32】
SELECT课程号,COUNT(学号)AS选课人数
FROM选课
GROUPBY课程号
练习
SELECT学号,COUNT(课程号)选课数量
FROM选课
GROUPBY学号
【例33】
SELECT学号
FROM选课
GROUPBY学号HAVINGCOUNT(*)>3
【例34】
SELECT学号,COUNT(*)
FROM选课
WHERE成绩>=85
GROUPBY学号HAVINGCOUNT(*)>=3
【例35】
SELECT性别,所在系
FROM学生GROUPBY性别,所在系
【例36】
SELECT学生.*,选课.*
FROM学生,选课
WHERE学生.学号=选课.学号
等价于
SELECT学生.*,选课.*
FROM学生JOIN选课
ON学生.学号=选课.学号
【例37】
SELECTC1.课程号,C2.先修课AS间接先修课
FROM课程C1,课程C2
WHEREC1.先修课=C2.课程号
【例38】
SELECT*
FROM学生LEFTJOIN选课
ON学生.学号=选课.学号
【例39】
SELECT*
FROM选课RIGHTJOIN课程
ON选课.课程号=课程.课程号
【例40】
SELECT*
FROM学生FULLJOIN选课
ON学生.学号=选课.学号
【例41】
SELECT学生.学号,姓名
FROM学生,选课
WHERE学生.学号=选课.学号/*连接谓词*/
AND选课.课程号='3002'/*其他限定条件*/
AND成绩>90
【例42】
SELECT学生.学号,姓名,课程名称,成绩
FROM学生,课程,选课
WHERE学生.学号=选课.学号
AND选课.课程号=课程.课程号
【例43】
SELECT姓名--外层查询/父查询
FROM学生
WHERE学号IN
(SELECT学号--内层查询/子查询
FROM课程
WHERE课程号='3002')
【例44】查找与刘晨所在一个系的所有学号,姓名嵌套查询
SELECT学号,姓名,所在系
FROM学生
WHERE所在系IN
(SELECT所在系
FROM学生
WHERE姓名='刘晨')
等同于--自身连接
SELECTS1.学号,S1.姓名,S1.所在系
FROM学生S1,学生S2
WHERES1.所在系=S2.所在系
ANDS2.姓名='刘晨'
等同于--定义别名
SELECT学号,姓名,所在系
FROM学生S1
WHERES1.所在系IN
(SELECT所在系
FROM学生S2
WHERES2.姓名='刘晨')
【例45】
SELECT学号,姓名
FROM学生
WHERE学号IN
(SELECT学号
FROM选课
WHERE课程号IN
(SELECT课程号
FROM课程
WHERE课程名称='数据库设计'))
等同于
SELECT学生.学号,姓名
FROM学生,课程,选课
WHERE学生.学号=选课.学号
AND选课.课程号=课程.课程号
AND课程.课程名称='数据库设计'
改写【例44】
SELECT学号,姓名,所在系
FROM学生
WHERE所在系IN
(SELECT所在系
FROM学生
WHERE姓名='刘晨')
等价于IN可以用=
SELECT学号,姓名,所在系
FROM学生
WHERE所在系=
(SELECT所在系
FROM学生
WHERE姓名='刘晨')
【例46】
SELECT姓名
FROM学生
WHEREEXISTS
(SELECT*
FROM选课
WHERE选课.学号=学生.学号
AND课程号='3001')
等同于--连接查询
SELECTDISTINCT姓名
FROM学生,选课,课程
WHERE学生.学号=选课.学号AND选课.课程号='3001';
等同于–用IN谓词
SELECT姓名FROM学生
WHERE学号IN(SELECT学号FROM选课WHERE选课.课程号='3001');
【例47】
SELECT姓名
FROM学生
WHERENOTEXISTS
(SELECT*
FROM选课
WHERE选课.学号=学生.学号AND课程号='3001')
【例48】
SELECT*
FROM学生
WHERE所在系='计算机'
UNION
SELECT*
FROM学生
等同于
SELECTDISTINCT*
FROM学生
WHERE所在系='计算机'OR性别='女'
【例49】
SELECT学号
FROM选课
WHERE课程号='3001'
UNION
SELECT学号
FROM选课
WHERE课程号='3002'
等同于
SELECTDISTINCT学号
FROM选课
WHERE课程号='3001'OR课程号='3002'
【例50】
INSERT
INTO学生
VALUES('906010','陈昊宇','男','1991-10-22','通信');
【例51】
INSERT
INTO选课(学号,课程号)
VALUES('906010','3001');
【例52】
1)创建表学生平均年龄
CREATETABLE学生平均年龄
(所在系CHAR(12),/*系名*/
平均年龄SMALLINT);/*学生平均年龄*/
2)为其插入数据
INSERT
INTO学生平均年龄(所在系,平均年龄)
SELECT所在系,AVG(2014-YEAR(出生日期))
FROM学生
GROUPBY所在系
3)查询结果
SELECT*FROM学生平均年龄;
【例53】
UPDATE学生
SET出生日期='1992-12-22'
WHERE学号='906001';
【例54】
UPDATE选课
SET成绩=成绩+1;
UPDATE选课
SET成绩=成绩-1
WHERE课程号='3001'
【例55】带子查询
UPDATE选课
SET成绩=0
WHERE'计算机'=
(SELECT所在系
FROM学生
WHERE学生.学号=选课.学号)
等价于用不相关子查询
UPDATE选课
SET成绩=0
WHERE学号IN
(SELECT学号
FROM学生
WHERE所在系='计算机')
【例56】
DELETE
FROM课程
WHERE课程号='3007';
【例57】
DELETE
FROM选课
WHERE课程号='3001'
删除所有选课记录
DELETE
FROM选课;
【例58】
DELETE
FROM选课
WHERE'计算机'=
(SELECT所在系
FROM学生
WHERE学生.学号=选课.学号)
等价于用不相关子查询
DELETE
FROM选课
WHERE学号IN
(SELECT学号
FROM学生
WHERE所在系='计算机')
【例59】
UPDATE学生
SET学号='05016'
WHERE姓名='陈芳菲';
【例60】
分两步
1)
DELETE
FROM选课
WHERE学号='906002';
2)
DELETE
FROM学生
WHERE学号='906002';
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据查询 SQL语句示例 数据 查询 SQL 语句 示例