数据库
概念
数据库是数据管理的有效技术,由一批数据构成的有序集合,这些数据被存放在结构化的数据表中,数据表之间相互关联,反映客观事物本质联系,数据库有效帮助一个组织或企业科学管理信息资源,数据可以交给数据库帮助我们进行管理,数据库为我们提供高效的访问性能。
MySQL
一种关系型数据库,可以存储带有一定联系的数据
规范化
设计存放一个实体的表,了解数据库关系规范化,减少不好关系存在,最关键的内容是设计优良的关系模型
第一范式 1NF
数据库每一列不可分割的基本数据项
学生 姓名 电话号码
学生 姓名 座机号码 手机号码
第二范式 2NF
必须有主键,其他属性完全依赖于主键
学生 学号 姓名 性别
第三范式 3NF
所有属性不传递依赖于主键,满足于第三范式
学生借书情况(借阅编号,学生学号,书籍编号)
书籍(书籍编号,书籍名称,书籍作者)
BCNF
第三范式的补充
仓库管理关系表为StorehouseManage(仓库ID, 存储物品ID, 管理员ID, 数量),且有一个管理员只在一个仓库工作;一个仓库可以存储多种物品
存在关键字段决定关键字段的情况,就不符合BCNF范式
DDL(数据库定义语言)
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
DML (数据库操纵语言)
crud
insert into x value(x,y,z)
update x set y=z where x
delete from x where y
DQL(数据库查询语言)
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)
DCL (数据库控制语句)
数据库有很多用户来管理
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
原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/272561.html