SQL语句分为四种:
- DDL数据定义语言,定义数据库、数据库对象
- DML,增删改查
- DCL,权限访问
- TCL,事务控制,ACID事务,支持commit、rollback指令
语言规范:
- 语句不分大小写
- 分号结束
- 注释
- 命名:字母开头,数字字母下划线#、$
DCL
grant all on name.* to ‘yonghu’@’%’ identified by’密码’
revoke all on name.* from yonghu
DDL
删除 drop user name;
创建数据库 : create database if not exists test character set utf8b4 collate utf8mb4_general_ci;
删除:drop database if exist name
查看列信息:desc tablename '%name;
关系
行:也被成为记录元组
列:被成为字段、属性
基数、维数
候选键:能唯一标注一条记录的属性和属性的集合
主键:被选中的候选键
外键:一个关系中的一个或多个属性被另一个关系引用,一般为主键引用
索引
主键索引、唯一索引、普通索引
在MySQL中,InnoDB和MyISAM的索引数据结构可以使用Hash或BTree,默认BTree
索引不是和增删改,适合查找
约束
有值、值域、主键不为空不重复唯一、外键引用可以不为主键
外键约束:级联(CASCADE)、SET NULL、RESTRICT、NO ACTION
实体-联系E-R
一对一、一对多、多对多
视图
也叫虚表,由SQL语句生成的,可以增删改查
简化操作,安全(显示计算后结果)
关系操作
选择:选择出符合条件的元组
投影:选择出若干属性列组成新的关系
连接:将两个不同关系连接成新的关系
DML
- 增
insert into …values …
insert ignore into … values… 有了就放弃
insert into … values … on duplicate key update … 有了变更新 - 删
delete from … 记得条件要不都删除 - 改
update 哪个表 set name=… 记得加条件 - 查
select ? from table
limit
limit 1 、limit 1 offset 2、limit 2,1
where子句
= <> between like in and or
order by
升序 asc 降序desc
distinct
select distinct …from …
聚合函数
max min avg count
select sum(what) from …
group by
having继续筛选
连接
交叉连接
笛卡尔积
select * from tablename cross join tablename
select * from tablename,tablename
内连接
select * from tablename join tablename
select * from tablename inner join tablename
—等值连接
select * from tablename join tablename on what =what
–外连接
select * from tablename left join tablename on what=what
select * from tablename right join tablename on what=what
左连接以左边为基准,只显示一定数目的信息
事务
关系型数据库支持事务
原子性:事务中的操作,不可分割,要不做完,要不不做
一致性:事务并行执行结果,应该和串行形同
隔离:事务之间不互相干扰,一个在执行,其他不能访问相同数据
持久:提交不丢失
MySQL隔离级别可能出现:
1、更新丢失
2、脏读:读到未提交数据
3、不可重复度
4、幻读:A多次查询,其中B插入数据,A读到结果不同