MySQL系列-详解DDL语句

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

下面具体介绍各类经常使用DDL语句:数据库

1.数据库级别

显示全部数据库:show databases;编码

进入某个数据库:use db_name;spa

建立一个数据库:create databse db_name;code

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

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

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

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

2.表级别

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

查看MySQL的全部存储引擎的:show engines; 

从5.5之后的版本innoDB是默认引擎,引擎是表级别的,能够在建立表的时候指定引擎。


下面我先准备两张表:

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;


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表