DDL语句
添加字段
Altertable 表名 add 字段名 类型(长度) comment 注释;
Ex:alter table emp add name varchar(20) '昵称';
修改数据类型
Alter table 表名 modify 字段名 新数据类型;
修改字段名和数据类型
Alter table 表名 change 旧字段名 类型 新字段名 类型;
删除字段
Alter table 表名 drop 字段名;
修改表名
Alter table 表名 rename to 新表名;
删除表
Drop table 表名;
Truncate table 表名; //删除指定表并重新创建该表
DML语句
数据操作语言,数据库增删改
添加数据
Insert into 表名(字段1,字段2) 字段名 values ();
修改数据
Update 表名 set(字段1=?,…)where 条件;
删除数据
Drop from 表名 where 条件;
DQL语句
Select * from 表名
where 条件; -- 条件查询表
Group by 分组字段列表
Having 分组后条件列表
Order by 排序字段列表 asc升序 desc 降序
Limit 分页参数( (页码-1)*每页数据),每页数据;
执行顺序
from where group by having order limit
连接 限制 聚合 过滤 排序 限制
selert * from...会增加不必要的消耗,最好精确查询
外键
alter table 表名
add conseraint 外键名 foreign key 字段名 references 主键(字段名);
级联操作
on update cascade; 级联修改
on delete cascade; 级联删除
多表关系三大范式
1.原子性.每列不可再分
2.不产生局部依赖.表中每一列完全依赖主键
3.不产生传递,每一列直接依赖主键
连接
隐式内连接
select * from a,b
where a.`id`=b.`id`;
显式内连接
select * from a inter join b
on a.`id`=b.`id`;
左外/右外
select * from a left(right) join b
on a.`id`=b.`id`;
数据库
事务特点--acid
原子性 执行某个业务操作,同时操作多个sql(同时成功/失败)
一致性 多个线程同时读写,数据一致性
隔离性 事务事物之间相互独立互不影响
持续性 对增删改sql语句,一旦事务提交,永久性,即使关机也存在.
传统事务隔离级别 执行效率从大到小,安全性从低到高
读未提交
读已提交
可重复读 mysql默认隔离级别
串行话
Set global transaction isolation level (级别名称)
预编译
perparedstatemen和statement区别
共同点
将sql发送到数据库,前者接口继承自后者
不同点
1.是否执行sql语句
前者参数化,里面是?占位符.不是静态sql语句
后者执行静态sql.存在硬编码,存在字符串拼接
2.是否提高sql效率
可以提高,只需向数据库发送一次,然后通过预编译对象赋值不同的参数
后者效率低,每一次sql发送一次
3.是否造成sql注入
有效防止sql注入
存在安全漏洞,字符串拼接
数据库1连接池好处
节省资源
重复利用
提高性能