表操作
表与字段是密不可分的
新增数据表
create table [if not exists]表名(
字段名字 数据类型 ,
字段名字 数据类型 ,
字段名字 数据类型 – 最后一行不加逗号
)[表选项];
if not exists:如果表名不存在就创建,否则不执行创建代码。检查功能
表选项:控制表的表现
字符集:charset/character set 具体字符集;-- 保证表中数据存储的字符集
校对集:collate 具体校对集;
存储引擎:engine 具体的存储引擎
-- 创建表
create table if not exists student(
name varchar(10),
gender varchar(10),
number varchar(10),
age int
)charset utf8;
没有选中数据库,无法创建!!
任何表的设计都要指定数据库
解决:方案1.显示的指定表所属的数据库:
create table 数据库名.表名(); – 将当前数据表创建到指定的数据库下
-- 创建表
create table if not exists mydatabase.student(-- 显示的将student表放到mydatabase数据库下
name varchar(10),
gender varchar(10),
number varchar(10),
age int
)charset utf8;
方案2.隐式的指定表所属数据库:先进入到某个数据库环境,然后创建的额表自动归属到某个指定的数据库
进入数据库环境:use 数据库名;
-- 进入数据库
use mydatabase;
-- 创建表
create table class(
name varchar(10),
room varchar(10)
)charset utf8;
查看数据表
查看所有表
show tables;
查看部分表
show tables like ‘pattern’;
-- 查看所有表
show tables;
-- 查看以s结尾的表
show tables like '%s';
查看表的创建语句
show create table 表名;
-- 查看表的创建语句
show create table student;
show create table student\g -- \g====;
show create table student\G -- 将查到的结构旋转90度变成纵向
查看表结构
查看表中的字段信息
Desc/describe/show columns from 表名;
-- 查看表结构
desc class;
describe class;
show columns from class;
修改数据表
表本身存在,还包含字段,表修改有两个部分:修改表本身和修改字段
修改表本身
表本身可以修改:表名和表选项
修改表名:rename table 老表名 to 新表名;
修改表选项:字符集,校对集,存储引擎
语法:alter table 表名 表选项 [=] 值;
-- 重命名表:student->my_student(取数据库名的前两个字母)
rename table student to my_student;
-- 修改表选项:字符集
alter table my_student charset = GBK;
修改字段
新增,修改,重命名,删除
新增字段:alter table 表名 add [column] 字段名 数据类型 [列属性] [位置];
位置:字段名可以存放表中的任意位置
first :第一个位置 after:在哪个字段之后:alter 字段名;(默认在最后一个字段之后)
-- 增加一个id放在学生表my_student的第一个位置
alter table my_student
add column id int
first; -- mysql 会自动寻找分号结束
修改字段:修改通常修改属性或者数据类型alter table表名 modify 字段名 数据类型 [属性] [位置];
-- 将学生表中的number 字段变成固定长度,放到id之后(第二位)
alter table my_student
modify number char(10) after id;
重命名字段:alter table 表名 change 旧字段 新字段名 数据类型 [属性] [位置];
-- 修改学生表中的gender字段为sex
alter table my_student
change gender sex varchar(10);
删除字段:alter table 表名 drop 字段名;
注意:如果表中存在数据,删除字段会清空所有数据(谨慎操作不可逆)
-- 删除学生表中的age 字段
alter table my_student drop age;
删除数据表
谨慎操作!!!
drop table 表名1,表名2…;– 可以一次性删除多张表
-- 删除数据表
drop table class;