创建与操作表
1、create table格式
create table 表名(
字段名 数据类型(长度) 约束,
......
字段名 数据类型(长度) 约束,
约束
);
# 使用下面语句可以显示表格建立时的结构配置情况
MariaDB> show create table emp;
CREATE TABLE `emp` (
`empno` int(4) NOT NULL,
`ename` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`job` varchar(9) COLLATE utf8_unicode_ci DEFAULT NULL,
`mgr` int(4) DEFAULT NULL,
`hiredate` date DEFAULT NULL,
`sal` double(7,2) DEFAULT NULL,
`comm` double(7,2) DEFAULT NULL,
`deptno` int(2) DEFAULT NULL,
PRIMARY KEY (`empno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
# 完全复制一张表格
create table emp_bak as select * from emp; # 复制表格
2、常用数据类型
类型 | 描述 |
---|---|
Char(长度) | 定长字符串,存储空间大小固定,适合作为主键或外键 |
Varchar(长度) | 变长字符串,存储空间等于实际数据空间 |
double(有效数字位数,小数位) | 数值型 |
float(有效数字位数,小数位) | 数值型 |
int(长度) | 整型 |
bigint(长度) | 长整型 |
date | 日期型 |
blob | Binary Large Object(二进制大对象) |
clog | Character Large Object(字符大对象) |
其他 | ...... |
3、增删改表结构
alter table 表名 rename (to/as) 新表名; # 重命名表格
alter table 表名 add 字段名 数据类型(长度) 约束 # 增加字段
alter table 表名 modify 字段名 数据类型(长度) 约束 # 修改字段属性
alter table 表名 change 旧字段名 新字段名 数据类型(长度) 约束 # 重命名字段
alter table 表名 drop 字段名; # 删除字段
alter table emp rename as emp2; # 重命名表名
rename table emp to emp2; #简单的重命名方法
alter table emp add tel int(11) unique; # 增加电话字段
alter table emp modify tel int(12); # 设为整型12长度,modify不能修改字段名
alter table emp change tel telephone int(12) unique; # change必须修改字段名,同时也能修改字段数据类型和约束
alter table emp drop telephone; # 删除字段
4、约束
- 非空约束,not null
- 唯一约束,unique
- 主键约束,primary key
- 外键约束,foreign key (现下绝大部分数据库不再使用fk,改而在应用层面上处理表的联系)
create table emp(
deptno int(10) primary key,/*列级约束*/
ename varchar(20) not null,
job varchar(10),
constraint unique_class unique(ename),/*表级约束,可给约束取名*/
constraint fk_deptno foreign key(deptno) references dept(deptno) # 外键约束
);
#主键约束也可以针对多字段进行约束,表示所有字段不全部一样即可
primary key (字段1,字段2)
use information_schema;
select * from table_constraints where table_name='emp'; # 查询表的约束
5、增删改约束
alter table 表名 drop foreign key 外键名; # 删除外键约束
alter table 表名 drop primary key; # 删除主键约束
alter table 表名 drop constraint 约束名称; # 删除约束
alter table 表名 add constraint 约束名称 foreign key (外键字段) references 主表(主键字段); # 添加外键约束
alter table 表名 add constraint 约束名称 primary key (主键字段); # 添加主键约束
alter table 表名 add constraint 约束名称 unique(字段); # 添加唯一性约束,约束名称可省略,省略后约束名与字段名一样
alter table 表名 modify 字段名 数据类型(长度) 约束; # 修改约束即修改字段
6、自动增量
当表中的某个字段时唯一标识,并没有其他具体含义,只是为了区分而已。
可以使用auto_increment ,使得每增加一行时,该字段自动赋予自己一个可用的值
auto_increment常用于主键当中,并且一个表格只能有一个auto_increment
# 创建表格时添加
create table emp2(
empno int(4) primary key auto_increment
);
# 单独添加
alter table emp2 modify empno int(4) auto_increment;
7、默认值
在创建表格时,可以使用default关键字指定字段的默认值
大部分时候会使用默认值而非NULL,尤其是用于计算或数据分组的列
# 创建表格时添加
create table emp3(
empno int(4) primary key,
sal float(7,2) default 0
);
# 单独添加
alter table emp3 modify sal float(7,2) default 0;
如果一个字段定义含有auto_increment与非NULL默认值,在使用alter table ... modify(change)的时候切记原样写上这些定义,不写就会被覆盖而消失