数据库模式定义语言DDL(Data Definition Language)
一、操作数据库 database
1. 建库 create
create database 数据库名; -- 后面会添加各种参数,【注意:需要明白常用的建库参数】
create database if not exists 数据库名; -- 类似于删表 【drop table if not exists A】
2. 删库 drop / truncate
drop database A ; -- 删除数据库A
3. 改库 alter
alter database A character set utf8; -- 改数据库的信息一般都是改数据库参数,所以需要了解建库时的参数
4. 查库 show
show database;
describe 数据库名;
二、操作表 table
建表 create
1、情况一:直接建表
create table table_name(
列名1 数据类型 [约束条件],
列名2 数据类型 [约束条件],
列名3 数据类型 [约束条件],
......
[constraint 外键名] foreign key (本表的外键列名) references 外键名(关联表.关联字段) [外键中的级联关系]
)[engine=innoDB/myISAM default charset=utf8/GBK]
-- 注意:
1、 外键中的级联关系
[on delete restrict | cascade | set null | no action | set default]
[on update restrict | cascade | set null | no action | set default]
|restrict:限制外表中的外键改动,默认值 |
|cascade:跟随外键改动 |
|set null:设空值 |
|set default:设默认值 |
|no action:无动作,默认的 |
2、情况二:复制表
-- 只复制表结构及约束,但不复制数据
create table 复制出的表名 like 原表名;
-- 复制表结构及数据,但不复制约束
create table 复制出的表名 as select * from 原表名;
删表 drop / truncate
drop table [if not exists] table_name; -- 直接删除整个表
truncate table table_name; -- 释放表空间,留下表结构,应该说是一次性清空表
改表 alter
查表结构 describe / show
describe 表名;
describe A a_id;
show tables; -- 查看当前库里的表
show columns from table_name from database_name;
show columns from database_name.table_name;
-- 可以认为 describe 表名 等价于 show columns from xxx