MySQL


数据库

概念

数据库是数据管理的有效技术,由一批数据构成的有序集合,这些数据被存放在结构化的数据表中,数据表之间相互关联,反映客观事物本质联系,数据库有效帮助一个组织或企业科学管理信息资源,数据可以交给数据库帮助我们进行管理,数据库为我们提供高效的访问性能。

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

(0)
上一篇 2022年7月9日
下一篇 2022年7月9日

相关推荐

发表回复

登录后才能评论