SQL结构化查询语言(Structured Query Language),
是一种特殊目的的编程语言,
用于存取数据以及查询、更新和管理关系数据库系统
1、结构查询语言,select
2、数据操作语言,insert,update,delete
3、事务控制语言,commit,rollback
4、数据控制语言,grant,revoke
5、数据定义语言,create,drop,alter
6、指针控制语言,declare,cursor
二、约束约束是对数据的增删改操作的限制
目的:保证数据完整性
数据的完整性:
(1)实体完整性:通过主键约束
(2)参照完整性:通过外键约束
(3)域完整性:通过列级约束
创建表结构时,添加约束。
约束分为:表级约束和列级约束。
1、null列级约束,
null,not null
是否允许列数据为空
2、unique列级约束,唯一性约束,该列的值不能重复
3、缺省值列级约束
系统默认的缺省值是null。
可以使用default修改缺省值。
用法:default 缺省值
id int default 0,
4、检查约束列级约束
检查插入或者修改的数据是否符合指定的条件。
用法:check(条件)
sex char(3)check (sex in(‘男’,‘女’))
5、主键表级约束
用于区别每一行的数据,确定数据的唯一性
一个表最多只能有一个主键
主键可以由一列(单列主键)或者多列(复合主键)的信息构成
6、自增列级约束
auto_increment,从1开始。
作用:某列的值,系统自动插入增长的值。
前提条件:该列是整数类型(int),并且该列是构成主键的列(primary key)。
7、外键表级约束
用来表示两张表之间的关系的。
企业开发设计数据库时,一般不添加外键约束
不方便修改,
注意删除主表中的信息时,从表中的信息也需要被删除
三、数据库三范式 1、范式设计数据库时,应该遵守的规范和原则。
一共有六个规范:
第一范式(1NF),第二范式(2NF),第三范式(3NF)
巴斯科德范式(BCNF),第四范式(4NF),第五范式(5NF,完美范式)。
2、三范式企业要求满足第三范式
但是第二范式必须先满足第一范式。
第三范式必须先满足第二范式。
2、1 第一范式要求所有域都是原子性的,即数据库表的每一列都是不可
分割的原子数据项,不能是集合,数据等等非原子数据项
2、2 第二范式在1NF基础上,非码属性必须完全依赖于候选码
即在1NF基础上消除非主属性对主码的部分函数依赖
通俗的讲,每个表中必须有主键。
2、3 第三范式在2NF基础上,消除传递依赖
任何非主属性不依赖于其他非主属性
即为了减少数据存储冗余,将一张表拆分为二张表
四、索引为了提高查询效率,
数据表存储在硬盘中,当数据库开启时,将索引信息加载到内存中
只需要通过索引便能找到对应的行
1、索引采用的数据结构聚簇索引(主键和数据)
非聚簇索引(主键和地址)
B+树存储数据
2、创建索引创建表时:
create table 表名(
列。。。
index(列名)
)
表创建完毕,添加索引:
creat index 索引名 on 表名(列名)
一般在创建表时添加索引
主键列会自动创建索引
3、查看索引show index from 表名
4、索引分类(1)普通索引index
(2)唯一索引unique
(3)主键索引primary key
5、索引创建策略索引创建适量
索引会影响增删改的效率,增删改时需要添加索引信息。
索引多了,会消耗内存和硬盘,反而会影响查询效率。
五、视图 1、视图作用按照指定要求,将表中数据显示出来,
主要用于查询,不做增删改操作
2、使用原因(1)安全
一些数据表有重要信息,字段是保密的,不能让用户直接看到;
于是创建视图保留能让用户查询的字段
(2)性能
数据分表查询会使用连接(join),效率低
建立视图将相关表组合在一起,避免使用多表查询
(3)灵活
原有表设计有问题,但是又不能废弃,不易修改
创建视图,直接映射为新的表
3、创建视图create view 视图名 as 表查询语句
4、查询视图同查询表
5、删除视图drop view 视图名
6、视图本质视图对象中只存储了一条表的查询语句而已,并没有存储数据。
数据还是在表中存储的。
查询视图时,先去执行表的查询语句,然后在此基础上继续查询罢了。
所以,视图的效率不高。



