课程总结
表数据属性=列属性
6. 列的属性和约束
6.1 主键: primary key (PK)
说明:
唯一
非空
数字列,整数列,无关列,自增的.
是一种约束,也是一种索引类型,在一张表中只能有一个主键。
6.2 非空: Not NULL
说明:
我们建议,对于普通列来讲,尽量设置not null
默认值 default : 数字列的默认值使用0 ,字符串类型,设置为一个nil null
6.3 唯一:unique
不能重复
6.4 自增 auto_increment
针对数字列,自动生成顺序值
6.5 无符号 unsigned
针对数字列
6.6 注释 comment
表属性
存储引擎 :engine = InnoDB
字符集 :charset = utf8mb4
建表定义
创建表=创建列
手工建表:
create table oldguo(
id int not null primary key AUTO_INCREMENT comment '学号' ,
name varchar(255) not null comment '姓名',
age tinyint unsigned not null default 0 comment '年龄',
gender enum('m','f','n') not null default 'n' comment '性别'
)charset=utf8mb4 engine=innodb;
创建一个相同表结构的空表:
create table oguo like oldguo;
查看表
desc 表名;
查看表属性=查看列属性
改表定义
表是由 列 和 行组成的
修改表就是修改 列和行
列
增列
添加列
alter table oldguo add telnum char(11) not null unique comment '手机号';
alter table oldguo add state tinyint unsigend not null default 1 comment '状态信息';
指定位置 添加列
alter table oldguo add qq varchar(255) not null unique comment 'qq号码' after name;
在name后边添加qq列varchar(255): after name
alter table oldguo add sid varchar(255) not null unique comment '学生号' first;
在首列上添加学号列 sid; first
创建一个相同表结构的空表:
create table oguo like oldguo;
改列属性
alter table oldguo change gender gg char(1) not null default 'n';
将gender改为gg 数据类型改为char(1)数据类型
alter table oldguo modify name varchar(128) not null;
修改已有列name的属性
查看列属性
desc 表名;
查看表属性=查看列属性
删除列
alter table oldguo drop state;
行
添加行
insert into oldguo(name,qq,age) values ('oldboy','74110',49);
--- 最规范的方法插入数据(重点记忆)
删除行
delete from oldguo where id=5;
delete (注意谨慎操作!!!!)
最好是用update替换delete
update oldguo SET state=1 WHERE id=6;
(default 0代表存在,1代表删除
改数据行
update oldguo set qq='123456' where id=5 ;
update (注意谨慎操作!!!!)
查看数据
select * from 表名;
查看表数据(不代表生产操作)
删表定义
drop table 表名;
将一个大表全部数据清空
delete FROM oldguo;
truncate TABLE oldguo;
delete 和 truncate 区别
1. delete 逻辑逐行删除,不会降低自增长的起始值。
效率很低,碎片较多,会影响到性能
2. truncate ,属于物理删除,将表段中的区进行清空,不会产生碎片。性能较高。
查看建表语句
show create table oldguo;
查看建表时的语法
create table oldguo(
id int not null primary key AUTO_INCREMENT comment '学号' ,
name varchar(255) not null comment '姓名',
age tinyint unsigned not null default 0 comment '年龄',
gender enum('m','f','n') not null default 'n' comment '性别'
)charset=utf8mb4 engine=innodb;