13、创建与操作表

创建与操作表

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、约束

  1. 非空约束,not null
  2. 唯一约束,unique
  3. 主键约束,primary key
  4. 外键约束,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)的时候切记原样写上这些定义,不写就会被覆盖而消失

你可能感兴趣的:(13、创建与操作表)