04 MySQL 表的基本操作 - 创建表、修改表属性
创建数据表
每当创建一张数据表,就会生成在对应的数据库里面生成一些文件(与存储引擎有关):在存储数据的data相对应的目录下面
创建表
创建表是构建一张空表,指定这个表的名字,这个表有几列,每一列叫什么名字,以及每一列存储的数据类型
create table [if not exists] 表名(
字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
...
) [表选项];
// 创建一个学生表
use mydb;
create table student(
sid int comment '学生ID',
name varchar(20) comment '昵称',
gender varchar(20) comment '昵称',
age int comment '年龄',
birth date comment '生日',
address varchar(20) comment '地址',
score double comment '分数'
date_create TIMESTAMP default CURRENT_TIMESTAMP '创建时间-默认是当前系统时间',
date_modify TIMESTAMP default CURRENT_TIMESTAMP '修改时间-默认是当前系统时间',
);
注意:创建数据库之前,一定要事先指定一个数据库
方式一: 直接进入指定的数据库use testdatabase
方式二: 使用.
的方式,连接指定的数据库create table memeber.testdatabase(name INT)
表选项
-
engine:存储引擎,mysql提供的具体存储数据的方式,默认是
innodb
-
charset:字符集(默认是utf8),只对当前表有效,级别比数据库高
-
collate:校对集
CREATE TABLE member(name varchar(10))cahrset utf8;
任意数据表都可以使用
数据库名.数据表名
的方式进行访问
复制已有的数据表
从已经存在的表复制一份(只复制表结构,不复制表数据)
create table 新表名 like 表名
# 复制test2数据库中的member表 到 在test1数据库中
use test1; # 指定数据库
create table member like test2.member
显示数据表
显示所有表
show tables;
显示匹配的表
show tables like '匹配模式';
# 以c开头的所有表
show tables like 'c%';
显示表结构
显示表中所包含的字段信息(名字,类型,属性等)
describe 表名;
desc 表名;
show columns from 表名;
显示表创建语句
show create table 表名;
mysql中有很多种语句结束符 (只是显示结构的不同) ,
;
和\g
的效果是一样的,\G
是另外一种效果
设置表属性
表属性主要指的是:engine(存储引擎) charset(字符集) 和 collate
# 修改表 student 字符集为 gbk,默认是utf-8
alter table student charset gbk;
如果数据库已经确定了,里面还已经有数据了,建议不要轻易修改表结构
修改表结构
修改表名
rename table 旧表名 to 新表名;
# 如下:
rename table student to my_student;
修改表选项
alter table 表名 表选项 [=] 新值
新增表字段
alter table 表名 add [column] 新字段名 字段类型 [列属性] [位置 first/after 字段名]
# 新增一个age字段,默认新增的字段是加在表的最后面
alter table my_student add age int;
alter table my_sdudent add summary varchar(30);
# 新增一个id字段,放在第一个
alter table my_student add id int first;
# 新增一个name字段,放在id的后面
alter table my_student add name varchar(10) after id;
first:第一个位置
after 字段名:放在某个字段后面的位置
修改字段名和类型
alter table 表名 change 旧字段名 新字段名 字段类型 [列属性] [新位置]
修改字段类型(属性)
alter table 表名 modify 字段名 新类型 [新属性] [新位置]
删除列
alter table 表名 drop 字段名;
// 删除student表中department这列
ALTER TABLE student DROP department;
删除表结构
# 可以删除多个表结构
drop table 表名 [,表名...];