insert插入多条语句
insert into 表名(字段1,字段2) values(值1,值2), (值3,值4),...,()
快速创建表
将查询的结果当作成新的表
create table xx as select * from emp;
把查询结果插入到
insert into xx select * from xxx
快速删除表中的数据,不可恢复!
truncate table xxx # DDL
删除表
drop table xxx
DDL 不讲,因为不常用,create,drop,alter
create table t_vip( id int unique, name varchar(255) not null )
null不算unique
两个字段联系起来具有唯一性
create table t_vip( id int, name varchar(255), email varchar(255), unique(name, email) # 表集约束 )
not null只有列级约束,没有表级约束
如果一个字段被unique和not null 同时修饰,那么就自动成为主键(Oracle不是)
任何一张表都应该有主键。
主键特征:不能空,不能重复
drop table if exists t_vip; create table t_vip( id int primary key, name varchar(255) )
单一主键和复合之间,建议不使用复合主键
一张表主键约束只能添加一个
主键值建议使用 int,bigint,char,一般都是定长的。
自然主键和业务主键。自然主键是一个int值,与业务没关系。业务主键是业务中的一个字段。建议使用自然主键,不要和业务挂钩。
自增
create table xxx ( int id primary key auto_increment, name varchar(255) )
foreign key
create table t_class( classno int primary key, classname varchar(255) ) create table t_student( no int primary key, name varchar(255), cno int, foreign key(cno) references t_class(classno) )
外键值可以为null。外键不一定是父表的主键,但是一定要有unique约定
MyISAM
格式文件
数据文件
索引文件
InnoDB
Memory
添加了unique或者主键的字段,会自动创建索引
事务是一个完整的业务逻辑。
和事务有关的是DML语句,update delete insert
提交事务:commit
回滚事务:callback
mysql默认自动提交,每次执行一个DML语句就提交一次!
两个事务A和B
可以在单个字段,也可以在多个字段上添加。为了缩小扫描范围。
create index emp_ename_index on emp(ename); drop index emp_ename_index on emp(ename);
create view dept2_view as select * from dept; drop view dept2_view;
对视图对象的增删改查会导致原表被修改