MySQL系列-详解DDL语句

DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。

下面具体介绍各种常用DDL语句:

1.数据库级别

显示所有数据库:show databases;

进入某个数据库:use db_name;

创建一个数据库:create databse db_name;

创建指定字符集的数据库:create database db_name character set utf8;

显示数据库的创建信息:show create database db_name;

修改数据库的编码:alter database db_name character set gb2312;

删除一个数据库:drop database db_name;

2.表级别

查看该数据库下面的所有表,必须先使用use db_name进入某个数据库:show tables;

查看MySQL的所有存储引擎的:show engines; 

从5.5以后的版本innoDB是默认引擎,引擎是表级别的,可以在创建表的时候指定引擎。

MySQL系列-详解DDL语句_第1张图片

下面我先准备两张表:

create table t2 (
   id int,
   name varchar(20),
   primary key(id,name)
)engine = innoDB;
create table t1 (
    id int auto_increment,
    name varchar(20),
    age int default 0,
    deptid int,
    salary decimal(8,2) not null,
    code int not null unique,
    primary key(id,name),
    constraint fk_deptid_t2_id foreign key(deptid) references t2(id)
);

下面开始解释一下建表各个地方的含义:

 单字段主键:id int primary key;

多字段联合主键:primary key(id,name);

t1表和t2表都是多字段联合主键

外键约束:constraint fk_name foreign key(deptid) references t2(id);

外键引用的必须是其他表的主键或者联合主键的一部分,允许为null,也可以多个字段组建联合外键

非空约束:salary decimal(8,2) not null;

非空约束不允许为null

唯一约束:code int unique;

只允许唯一的值,可以为null但是只能有一个为null

默认约束:age int default 0;

指定一个默认值

表的属性值自动增加:id int auto_increment;

自增字段必须输数字类型且必须是主键或者联合主键的一部分默认从1开始 且一张表只能有一个自增字段

修改自增字段的起始值:alter table table_name auto_increment=n;

注意n只能大于已有的auto_increment的整数值(删除的记录也算),小于或等于的值无效

查看表的结构:desc table_name;

查看表的创建信息:show create table t1;

MySQL系列-详解DDL语句_第2张图片

3.修改表结构

修改表名:alter table ta rename tb;                                                 把表名由ta修改为tb

修改字段的数据类型:alter table t1 modify name varchar(50);        修改表t1的name字段为varchar(50);

修改字段名:alter table t1 change name myname varchar(15);      修改表t1的name字段为myname,也可以修改类型

添加字段:alter table t1 add lv int;                                                  表t1添加一个lv字段,后面可以加约束例如:not null 等

删除字段:alter table t1 drop lv;                                                      表t1删除lv字段

修改表的存储引擎:alter table t1 engine=MyISAM;

删除表的外键约束:alter table t1 drop foreign key fk_name;          把t1表的外键约束fk_name删除

删除一张表:drop table t1;                                                              删除t1表



你可能感兴趣的:(MySQL)