如题目>▽<
绪论
懒得写了
关系数据库
关系操作
插入、 查询、删除、修改
其中查询操作分为:选择、投影、连接、除法、并、差、交、笛卡尔积
查询操作的基本操作:选择、投影、并、差、笛卡尔积
关系语言的分类
分为关系代数语言、关系演算语言、SQL语言
关系代数语言
是一种抽象的查询语言,使用对关系的运算来表达查询
三大要素:运算对象(关系)、运算符(集合运算符和关系运算符)、运算结果(关系)
(红线为5种基本运算)
交、并、笛卡尔积
选择
投影
连接
- 自然连接:把共同属性进行等值连接
悬浮元组:两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组,
外连接(Outer Join)
如果把悬浮元组也保存在结果关系中,而在其他属性值上填空值(Null),就叫做外连接左外连接(LEFT JOIN)
只保留左边关系R中的悬浮元组
除:保留R中满足S的,而且R中列要去掉S的列
关系的完整性
- 实体完整性:主码唯一且非空
- 参照完整性:外码要么为空,要么对应另一表的主码
- 用户定义完整性:用户属性要完整,比如一个学生有学号、姓名、班级、专业等
SQL语言
SQL是Structured Query Langage的照写,意思是结构化查询语言,是一种在数库管理系统中查询或对数据库里面的数据进行更改的活言
数据类型
模式定义与删除
不考
表的定义和删除修改
以下所有大写的命令均可替换为小写
定义
1 | // creat table 表名(字段名 类型 字段约束,字段名 类型 字段约束) |
删除
1 | // DROP TABLE <表名> [RESTRICT|CASCADE]; |
修改
1 | ALTER TABLE<表名>[ADD [COLUMN]<新列名><数据类型>[完整性约束]][ADD<表级完整性约束>] |
索引的建立于修改&删除
数据量比较大的时候,查询消耗时间长,建立索引可以有效减少消耗时间
索引可建立在一列或多列上
建立
1 | CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>]) |
修改
1 | ALTER INDEX <旧索引名> RENAME TO <新索引名>; |
删除
1 | DROP INDEX <索引名> |
基础操作
1 | // 查询全部 |
查询结果加条件
1 | SELECT DISTINCT title 课程名字 from edu_course where price>2; |
聚集函数的使用
1 | // 去重且不计入NULL |
分组查询
GROUP BY分组,筛选使用HAVING
1 | // 对教师id分组并筛选出id小于10的教师 |
连接
1 | // 等值,非等值连接,以where为关键词 |
各种复杂查询
1 | // 多表查询 |
带有ANY ALL的查询
1 | // 返回价钱大于括号内查询的所有价钱的结果 |
集合查询
1 | // 并 |
数据插入、修改、删除
插入
1 | insert into表名[(字段列表)]values(值列表...); |
修改
1 | update 表名 set 字段 1=值1,字段2=值2,字段n=值n... where 条件 |
删除
1 | 格式:delete from 表名 [where条件] |
视图
视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的透辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。
视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。
目的:方便,简化数据操作
当我们业务需求要查出多张表的数据,这时我们可能会关联多张表查询处理,如果这个查询sql复杂的话也影响了查询效率,
这个时候我们就可以创建视图,查询时候只需要select*from view 就ok啦~
创建视图
1 | CREATE VIEW<视图名>[(<列名>[,<列名>])] |
删除视图
1 | DROP VIEW <视图名> [CASCADE]; |
查询视图
1 | SELECT Sno,Sage |
更新视图
视图是不存在的,所以我们对视图的操作,最终要反映到对基本表的操作
1 | // 将信息系学生视图IS_Student中学号为“201215122”的学生姓名改为“刘辰”。 |