SQL增删改查
2014-11-16 14:29
141 查看
1. 增
1. 使用常量插入单个元组
格式:
例2:
2. 在表中插入子查询的结果集
格式:
2. 删
格式:
3. 改
格式:
4. 查
格式:
1, 简单查询
例1:
2. 连接查询
1. 等值连接和非等值连接
格式:
例1:
左外部连接"*=" 在结果集中保留左表中的非匹配记录
右外部连接"=*" 在结果集中保留右表中的非匹配记录
3. 嵌套查询
1. 使用IN
4. 组合查询
例1
5. 使用分组和函数查询
例1
本篇是对大学数据库课本上SQL增删改查知识的总结以备忘,如有不妥,请留言告知。
1. 使用常量插入单个元组
格式:
INSERT INTO <表名>[(<属性列1>[, <属性列2>]...)] VALUES (<常量1>[, <常量2>]...);例1:
INSERT INTO 学生 VALUES ('98010', '张三', 20, '计算机系');
例2:
INSERT INTO 选课 (学号, 课程号) VALUES ('98010', 'C10');
2. 在表中插入子查询的结果集
格式:
INSERT INTO <表名>[(<属性名1>[, <属性名2>]...)] <子查询>;例1:
INSERT INTO 系平均年龄 SELECT 所在系, AVG(ALL 年龄) FROM 学生 GROUP BY 所在系;
2. 删
格式:
DELETE FROM <表名> [WHERE <条件>];例1:
DELETE FROM 选课 WHERE 学号 IN (SELECT 学号 FROM 学生 WHERE 所在系='艺术系');例2:
DELETE FROM 学生 WHERE 所在系 = '艺术系'
3. 改
格式:
UPDATE <表名> SET <列名> = <表达式>[, <列名>=<表达式>][,...n] [WHERE <条件>];例1:
UPDATE 学生 SET 年龄 = 年龄+2;例2:
UPDATE 选课 SET 成绩=成绩*1.2 WHERE 课程号=(SELECT 课程号 FROM 课程 WHERE 课程名='数据库');
4. 查
格式:
SELECT <目标列组> FROM <数据源> [WHERE <元组选择条件>] [GROUP BY <分列组> [HAVING <组选择条件>]] [ORDER BY <排序列1><排序要求>[, ... n]];
1, 简单查询
例1:
求数学系学生的学号和姓名 SELECT 学号, 姓名 FROM 学生 WHERE 所在系='数学系';例2:
求选修了课程的学生学号 SELECT DISTINCT 学号 FROM 选课; DISTINCT避免重复例3:
求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同,则按学号的升序排列 SELECT 学号, 成绩 FROM 选课 WHERE 课程号='C1' ORDER BY 成绩 DESC, 学号 ASC;例4:
求选修课程C1且成绩在80~90之间的学生学号和成绩,并将成绩乘以系数0.8输出 SELECT 学号,成绩*0.8 FROM 选课 WHERE 课程号= 'C1' AND 成绩 BETWEEN 80 AND 90;例5:
求数学系或计算机系姓张的学生的信息 SELECT * FROM 学生 WHERE 所在系 IN ('数学系', '计算机系') AND 姓名 LIKE '张%';例6:
求缺少了成绩的学生的学号和课程号 SELECT 学号, 课程号 FROM 选课 WHERE 成绩 IS NULL; IS NULL 操作表达式
2. 连接查询
1. 等值连接和非等值连接
格式:
[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>例1:
查询每个学生的情况以及他所选修的课程 SELECT 学生.*, 选课.* FROM 学生, 选课 WHERE 学生.学号 = 选课.学号;例2:
求学生的学号,姓名,选修的课程名及成绩 SELECT 学生.学号, 姓名,课程名, 成绩 FROM 学生,课程,选课 WHERE 学生.学号=选课.学号 AND 课程.课程号=选课.课程号例3:
求选修C1课程且成绩为90分以上的学生学号,姓名和成绩 SELECT 学生.学号, 姓名.成绩 FROM 学生, 选课 WHERE 学生.学号=选课.学号 AND 课程号='C1' AND 成绩>90;2. 自身连接查询
例1:
查询每一门课的间接先行课 SELECT A.课程号, A.课程名, B.先行课 FROM 课程A, 课程B WHERE A.先行课=B.课程号 一个表有两个作用,要对表起别名3. 外部连接操作
左外部连接"*=" 在结果集中保留左表中的非匹配记录
右外部连接"=*" 在结果集中保留右表中的非匹配记录
3. 嵌套查询
1. 使用IN
求选修了高等数学的学生学号和姓名 SELECT 学号, 姓名 FROM 学生 WHERE 学号 IN (SELECT 学号 FROM 选课 WHERE 课程名='高等数学'));2. 使用比较符的嵌套查询
求C1课程的成绩高于张三的学生的学号和成绩 SELECT 学号,成绩 FROM 选课 WHERE 课程号='C1' AND 成绩>(SELECT 成绩 FROM 选课 WHERE 课程号='C1' AND 学号=(SELECT 学号 FROM 学生 WHERE 姓名='张三'));3. 使用ANY或ALL操作符的嵌套查询
求其他系中比计算机系某一学生年龄小的学生(即求年龄小于计算机系年龄最大者的学生) SELECT * FROM 学生 WHERE 年龄 < ANY(SELECT 年龄 FROM 学生 WHERE 所在系='计算机系') AND 所在系<>'计算机系';
求其他系中比计算机系的学生年龄都小的学生 SELECT * FROM 学生 WHERE 年龄 < ALL (SELECT 年龄 FROM 学生 WHERE 所在系='计算机系') AND 所在系<>'计算机系';4. 使用EXISTS操作符的嵌套查询
求选修了C2课程的学生姓名 SELECT 姓名 FROM 学生 WHERE EXISTS (SELECT * FROM 选课 WHERE 学生.学号 = 学号 AND 课程号='C2');
求没有选修C2课程的学生姓名 SELECT 姓名 FROM 学生 WHERE NOT EXISTS (SELECT * FROM 选课 WHERE 学生.学号 = 学号 AND 课程号='C2');
查询选修了全部课程的学生的姓名 SELECT 姓名 FROM 学生 WHERE NOT EXISTS (SELECT * FROM 课程 WHERE NOT EXISTS (SELECT * FROM 选课 WHRER 学生.学号=学号 AND 课程.课程号=课程号));
求选修了学号为"S2"的学生所选修的全部课程的学生学号和姓名 SELECT 学号, 姓名 FROM 学生 WHERE NOT EXISTS (SELECT * FROM 选课1 WHERE 选课1.学号 = 'S2' AND NOT EXISTS(SELECT * FROM 选课2 WHERE 学生.学号 = 选课2.学号 AND 选课2.课程号 = 选课1.课程号));
4. 组合查询
例1
求选修了C1课程或选修了C2课程的学生学号 SELECT 学号 FROM 选课 WHERE 课程号='C1' UNION SELECT 学号 FROM 选课 WHERE 课程号='C2';例2
求选修C1课程, 并且也选修了C2课程的学生学号 SELECT 学号 FROM 选课 WHERE 课程号='C1' INTERSECT SELECT 学号 FROM 选课 WHERE 课程号='C2';例3
求选修了C1课程但没有选修C2课程的学生学号 SELECT 学号 FROM 选课 WHERE 课程号='C1' MINUS SELECT 学号 FROM 选课 WHERE 课程号='C2'
5. 使用分组和函数查询
例1
求学生的总人数 SELECT COUNT (*) FROM 学生;例2
求选修了课程的学生人数 SELECT COUNT (DISTINCT 学号) FROM 选课;例3
求课程和选修该课程的人数 SELECT 课程号, COUNT(学号) FROM 选课 GROUP BY 课程号;例4
求选修了超过3门课的学生学号 SELECT 学号 FROM 选课 GROUP BY 学号 HAVING COUNT(*)>3;
本篇是对大学数据库课本上SQL增删改查知识的总结以备忘,如有不妥,请留言告知。
相关文章推荐
- Sql Server xml 类型字段的增删改查
- SQL增删改查
- 最简单的sql语句(增删改查统计)
- 数据库的基本SQL操作(增删改查)
- 猫哥带你去战斗——Java Web开发——Java篇[9]——使用SQL语句实现增删改查
- C#连接SQL的增删改查
- 数据库中的增删改查、以及sql语句在android中的使用注意事项、保存头像到本地方法
- Sql 语句 增删改查 存储过程 触发器
- WCF初见之SQL数据库的增删改查
- LINQ TO SQL 如何进行增删改查
- T-SQL_4 增删改查语句
- SQL增删改查语句格式参考二
- MyBatis之SQL语句映射文件增删改查和Java参数如何对应
- SqlHelper sql的连接 加增删改查
- SqlServer之基本增删改查(1)
- SQL语句的增删改查及数据库表的多表连接查询
- 简单的linq to sql 的例子 ,实现了增删改查。
- SQL语句的增删改查
- 数据库基础(二),t-sql(通配符、运算符、增删改查语句、重命名、排序)