数据库是数据管理的有效技术,由一批数据构成的有序集合,这些数据被存放在结构化的数据表中,数据表之间相互关联,反映客观事物本质联系,数据库有效帮助一个组织或企业科学管理信息资源,数据可以交给数据库帮助我们进行管理,数据库为我们提供高效的访问性能。
一种关系型数据库,可以存储带有一定联系的数据
设计存放一个实体的表,了解数据库关系规范化,减少不好关系存在,最关键的内容是设计优良的关系模型
数据库每一列不可分割的基本数据项
学生 姓名 电话号码
学生 姓名 座机号码 手机号码
必须有主键,其他属性完全依赖于主键
学生 学号 姓名 性别
所有属性不传递依赖于主键,满足于第三范式
学生借书情况(借阅编号,学生学号,书籍编号)
书籍(书籍编号,书籍名称,书籍作者)
第三范式的补充
仓库管理关系表为StorehouseManage(仓库ID, 存储物品ID, 管理员ID, 数量),且有一个管理员只在一个仓库工作;一个仓库可以存储多种物品
存在关键字段决定关键字段的情况,就不符合BCNF范式
create database x create database if not exists x default charset utf8 collate utf8_general_ci; drop database 数据库名 create table ... # 创建表
char
varchar
smallint
int
bigint
float
daouble
date
time
year
datetime
主键 - Primary key
外键 - foreign key
唯一 - unique
检查 - check (MySQL 不支持)
默认 - default
非空/空 - not null/null
主键 - Primary key
外键 - foreign key
唯一 - unique
检查 - check (MySQL 不支持)
alter table x drop table x
insert into x value(x,y,z) update x set y=z where x delete from x where y
select x from y select x x1 from y select * from y where z select distinct x from y
比较运算符:= > < >= <= =/=
是否在集合中:in not in
字符模糊匹配:like not like
多重条件连接匹配:and or not
select * from x where y order by z ASC|DESC 升序|降序 select * from x where y order by z ASC|DESC,z1 ASC|DESC
count * 统计行数 count x 统计某列的值总和 sum x 一列的和 avg x 一列的平均值 max x 一列的最大值 min x 一列的最小值 select count(distinct x) from x where y
select sum(*) from x where y group by z select sum(*) from x where y group by z having a select * from x limit y select * from x limit y,z
select * from x,y select * from x,y where z
select * from x x1,x x2
交集
左+交集
右+交集
把查询结果作为另一个查询的条件
select * from x where y = (select y from x where z)
数据库有很多用户来管理
create user x identified by yyyyyy; create user x; login -u 用户名 -p show databases;
grant all on d.t to u revoke all on d.t to u
视图本身是一个查询的结果,是一个虚表,数据实际存放在原来的表中,我们每次可以通过打开视图按照我们想要的样子查看数据。
create view v(r)as DQL drop view x
创建索引会提高查询效率,快速定位元素位置
create index i on t(r) show index from t drop index i on t
索引使查询效率提高,不能过度使用索引,带来告诉查询效率同时,在数据更新时产生额外建立索引开销,占用磁盘资源
顾名思义,在某种条件自动触发,通常用于检查内容安全性,比直接添加约束更灵活
除法器发生select/update/delete操作时,自动生成两个临时的表,new和old表
create trigger t [before|after][insert|update|delete] on t/v for each row delete from t where t.r=new.r # for each row 表示对每一行有效 show triggers drop trigger t
进行操作很多,需要大量SQL语句,只有Innodb引擎支持事务
show engines begin; ... rollback; savepoint 回滚点; rollback to 回滚点; ... commit; -- 提交后不能h