DML
插入
插入语句的语法:
# 方式一
insert into 表名(列名1,列名2,列名3...列名n) values(值1,值,2...值n),(值1,值,2...值n)
#方式一支持多行或者一行插入
#方式二
insert into 表名
set 列名1=值1,列名2=值2,...列名n=值n
#只能单行插入
注意事项:
1.值的数据类型要和列的数据类型一致
2.注意可以为空的列的处理
3.列和值的顺序要对应
修改
修改语句的语法:
#单表的修改
update 表名
set 列=新值,列=新值,...
where 筛选条件;
#多表的修改
#sql92语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;
#sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;
删除
删除语句的语法:
#方式一
#单表的删除
delete from 表名 where 筛选条件
#多表的删除
#sql92语法:
delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;
#sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;
#方式二
truncate table 表名;
方式一和方式二的区别:
1.delete 可以加where 条件,truncate不能加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列的值从断点开始,
而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚.
DDL
创建: create
修改: alter
删除: drop
对库的操作
库的创建:
create database if not exists 库名;
# if not exists 判断有无这个数据库
库的修改:
# 修改字符集
alter database 数据库名字 character set 字符集gbk;
库的删除:
drop database if exists 库名
对表的操作
表的创建
create table 表名(
列名 列的类型(长度) 约束,
列名 列的类型(长度) 约束,
列名 列的类型(长度) 约束,
.
.
.
)
# 长度和约束非必须
表的修改
# 修改表名
alter table 表名 rename to 新表名;
# 修改列名
alter table 表名 change column 旧列名 新列名 数据类型
# 删除列
alter table 表名 drop column 列名
# 添加新的列
alter table 表名 add column 列名 数据类型
表的删除
drop table if exists 表名
表是复制
# 仅仅复制表的结构
create table 表名 like 被复制的表名
#复制表的结构+数据
create table 表名
select * from 被复制的表名
# 复制表的部分数据
#把查询全表变成要复制的字段
#复制部分结构
把复制部分数据的条件变为false
TCL
什么是事务?
一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。
事务的特征:
原子性:事物不可被再次分割,最小单位,要么都进行,要么都不进行。
一致性:操作前后数据总体一致
持久性:操作过后会永久改变数据库
隔离性:操作同一个数据库时,事物之间不会相互干扰
事务的执行步骤:
事务的并发问题:
事务的隔离级别: