1. SQL特点
SQL语言不区分大小写;
2.SQL分类
DDL:操作数据库,表
对数据库进行操作
show databases; 查询拥有的全部数据库
create database 数据库名; 创建数据库
drop database 数据库名; 删除数据库
use 数据库名;所有数据库
select database(); 查询当前使用的数据库
对表进行操作
创建Create
create table 表名(字段名 数据类型);
查询Retrieve
show tables ;查询某一个数据库中所有的表
desc 表名;查询表的表结构
修改Update
修改表名:alter table 表名 rename to 新表名;
添加新的列:alter table 表名 add 列名 数据类型;
修改数据类型:alter table 表名 modify 列名 新数据类型;
修改列名和数据类型:alter table 表名 change 列名 新列名 新数据类型;
删除列:alter table 表名 drop 列名
删除Delete
drop table 表名;删除表
DML:对表中数据进行增删改
添加 insert
insert into 表名(列名)values();
修改 update
update 表名 set 类名 ='值' [where 条件];
删除
delete from 表名 [where 条件];
DQL:对表中数据进行查询
查询select
select * from 表名;
select 列名... from 表名 [where 条件];
3.查询分类
基础查询
distinct :去除重复项
as 起别名
条件查询 where
>
<
=
!= <>
>=
<=
and &&
or ||
between ....and... select * from stu where age BETWEEN 20 and 30;
in() select * from stu where age in (18,20 ,22);
like 模糊查询 _单个任意字符 %多个任意字符
分组查询 group by 分组后条件 having 分组前条件 where
聚合函数
语法: select 聚合函数 (列名)from 表
count 统计数量
max
min
sum
avg
执行顺序:where >聚合函数 >having
排序查询 order by
asc 升序
desc 降序
分页查询 limit
基本语法: select 字段列表 from 表名 limit 起始索引,查询条目数
起始索引 = (当前页码-1)* 每页显示的条数
4.DCL:对数据库进行权限控制
约束 :作用在表中列的规则
约束分类:
非空约束 not null
唯一约束 unique
主键约束 primary key
检查约束 check 保证列中的值满足某一条件
默认约束 default
外键约束 foreign key 让两个表的数据进行链接
添加约束
创建的时候添加外键约束
建完表添加外键约束
alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references 主表 (主表列名)
删除约束
alter table 表名 drop foreign key 外键名称
数据库设计
数据库设计步骤
需求分析
逻辑分析
物理设计
维护设计
表关系
一对一
一对多
多对多
5. 多表查询
内连接
隐式内连接
select * from student ,class where student.class_id = class.id;
显示内连接
select * from student inner join class on student.class_id = class.id;
外连接
左外连接
select 字段列表 from 表1 left join 表2 on 条件;
右外连接
select 字段列表 from 表1 right join 表2 on 条件;
子查询
单行单列:作为条件值,使用 = != > <
select 字段列表 from 表 where 字段名 =(子查询)
多行单列 : 作为条件值,使用in等关键字进行条件判断
select 字段列表 from 表 where 字段名 in (子查询)
多行多列:作为虚拟表
select 字段表 from (子查询) where 条件;
6. 事务
事务的四大特征
A(Atomicity)
原子性:事务是不可分割的最小操作单位,要么同时成功,要么同时失败
C(Consistency)
一致性:事务完成时,必须使得=所有的数据都保存一致状态
I(Isolation)
隔离性:多个事务之间,操作的可见性
D(Durability)
持久层:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
事务的隔离级别
Read uncommitted
读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。
Read committed
读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据。
Repeatable read
重复读,就是在开始读取数据(事务开启)时,不再允许修改操作
Serializable 序列化
Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
7.sql书写技巧
sql关键字的书写顺序
select from where group by having order by limit
sql关键字执行顺序
from where group by having select order by limit