关系数据库SQL语言
来源:互联网 发布:淘宝宝贝展现词为0 编辑:程序博客网 时间:2024/05/17 03:35
SQL的特点:
(1)综合统一 (2)高度非过程化 (3)面向集合的操作方式
(4)语言简洁 易学易用
创建表(Create Table)
Create TABLE S(
Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(30) UNIQUE,
Status CHAR(8),
CIty CHAR(20),
PRIMARY KEY(Sno));
由上述定义可以看出 NOT NULL UNIQUE定义了Sno的列级完整性约束条件
取值唯一 不能取空值
修改表:
ALTER TABLE S ADD Zap CHAR(6) //向S表中增加Zap邮政编码
ALTER TABLE S MODIFY Status INT //更改Status字段为整型
索引建立与删除
通过索引 可以快速查找到所需要的信息
(1)通过创建唯一索引,可以保证数据记录的唯一性
(2)可以大大加快数据的检索速度
(3)可以加速表与表之间的连接
使用案例:
CREATE UNIQUE INDEX S-SNO ON S(Sno)
删除索引:
DROP INDEX StudentIndex //删除StudentINDEX
视图是从一个或多个基本表中导出的表,其结构和数据是建立在对表的查询基础上的
CREATE VIEW 视图名(列表名)
AS SELECT 查询语句
[WITH CHECK OPTION]
视图删除: DROP VIEW 视图名
简单查询:
select * from 表名 Where....
连接查询:
SELECT Sno,Sname FROM S,SC,C
WHERE S.Sno = SC.Sno AND SC.Cno = C.Cno AND C.Cname = 'MS'
等于做了三次等价连接 根据外键跨表查询
子查询与聚集查询
检索至少选修了课程号C1和C3的学生和学号
SELECT Sno
FROM SC SCX, SC SCY
WHERE SCX.Sno = SCY.Sno AND SCX.Cno = 'C1' AND SCY.Cno = 'C3';
子查询与聚集函数:
嵌套查询是指一个SELECT-FROM-WHERE查询块可以嵌入另一个查询块
这是等价连接的另一种实现方式
SELECT Sno,Sname FROM S,SC,C
WHERE S.Sno = SC.Sno AND SC.Cno = C.Cno AND C.Cname = 'MS'
这句就可以进行修改SELECT Sno,Sname FROM
WHERE Sno IN //SNO是一个外键
(SELECT Sno(必须对应) FROM SC
WHERE Cno In(
SELECT Cno FROM C WHERE Cname = 'MS')) //通过外键把3个表连接起来 然后进行查询
聚集函数:
COUNT SUM AVG MAX MIN
SELECT MAX(G), MIN(G), MAX(G)-MIN(G)
FROM SC
查询其他系中比计算机系CS所有学生年龄都要小的学生的姓名及年龄
SELECT SName,SAge From S
WHERE AGE < ALL(
SELECT MIN(AGE) FROM S
WHERE SD = 'CS'
)
查询其他系中比计算机系CS某一学生年龄要小的学生的姓名及年龄
SELECT SName,SAge From S
WHERE AGE < ALL(
SELECT MIN(AGE) FROM S
WHERE SD = 'CS'
)
分组查询;
GROUP BY
HAVING限制分组条件
假如元祖在分组前按照某种方式加上限制
使得不需要的分组为空
在GROUP BY 后面跟一个HAVING即可
SELECT Jno,AVG(Qty)
FROM SPJ
GROUP BY Jno
HAVING COUNT (DISCOUNT(Sno)) > 2 //低于3家的供应商就不进行分组了
ORDER BY Jno DESC
字符串操作:
"%"匹配任意字符串 “_“匹配任意一个字符串
查询家庭住址包含"科技路"的学生的姓名的SQL语句
SELECT Sname FROM S
WHERE Add LIKE “%科技路%”
SQL更新操作:
插入操作: INSERT INTO SC VALUES('3002', 'C4', 98)
删除操作:DELETE FRIN 表名 [WHERE 条件表达式]
修改操作:
将教师的工资增加5%
UPDATE teachers
SET Salary = Salary * 1.05
将教师的工资少于1000的增加5%工资
UPDATE teachers
SET salary = salary * 1.05
WHERE Salary < 1000
- 关系数据库SQL语言
- 关系数据库标准SQL语言
- 关系数据库标准语言SQL
- 关系数据库标准语言SQL
- 关系数据库标准化语言SQL
- 关系数据库标准语言SQL
- 关系数据库标准语言SQL
- 数据库 - 关系数据库标准语言SQL
- 数据库 - 关系数据库标准语言SQL
- 关系数据库标准语言SQL(一)
- 关系数据库标准语言SQL(二)
- SQL语言与数据库的关系
- oracle--关系数据库与SQL语言环境
- 关系数据库标准语言SQL基础1
- 关系数据库标准语言SQL基础2
- 关系数据库SQL语言核心功能
- 3-1关系数据库标准语言SQL
- 关系数据库标准语言SQL-1
- 解决locale error 的问题
- 树塔狂想曲
- 51 Nod 1315 合法整数集
- 51Nod-1264-线段相交-【数学】
- 第五周周四总结
- 关系数据库SQL语言
- SSM整合+demo
- OEM12C添加对MYSQL的监控
- 第5周实践项目1 顺序栈建立的算法库
- Python 官方标准常用库
- luogu2639 [USACO09OCT]Bessie的体重问题Bessie's Weight
- don_w0618
- 深度学习slam算法工程师
- Python str 和 repr 的区别