DDL常用语句(一)

DDL常用语句(一)

      • 操作数据库
      • 操作表
        • 约束

操作数据库

创建库:

create database 数据库名; 

创建库是否存在,不存在则创建:

create database if not exists 数据库名;

查看所有数据库:

show databases;

查看某个数据库的定义信息:

show create database 数据库名; 

修改数据库字符信息:

alter database 数据库名 character set utf8;

删除数据库:

drop database 数据库名;

使用指定数据库:

use 数据库名;

操作表

以下我以列名为字段名,便于理解。

约束

一种限制,对表的数据做出约束,确保其完整性和唯一性。

  • mysql中约束主要有六种
    • NOT NULL :非空约束,用于约束该字段的值不能为空。
    • DEFAULT :默认值约束,用于约束该字段有默认值,约束当数据表中某个字段不输入值时,自动为其添加一个已经设置好的值。
    • PRIMARY KEY:主键约束,用于约束该字段的值具有唯一性,至多有一个,可以没有,并且非空。
    • UNIQUE:唯一约束,用于约束该字段的值具有唯一性,可以有多个,可以没有,可以为空。
    • CHECK:检查约束,用来检查数据表中,字段值是否有效。
    • FOREIGN KEY:外键约束,外键约束经常和主键约束一起使用,用来确保数据的一致性,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。在从表添加外键约束,用于引用主表中某列的值。

创建表:

create table 表名(
  列名1 类型 [约束],
  列名2 类型 [约束],
  列名3 int|bigint [约束] [auto_increment],
  ...
  [constraint 外键名] foreign key(你的外键列名) references 被添加外键表名(设为被添加外键的列名) [外键中的级联关系]
    
)[engine=innoDB|myISAM default charset=字符集];

-- 注:[]里的内容为可加可不加,或根据需要加
-- [engine参数用来设置引擎类型,常用的有innoDB和myISAM引擎]
-- 外键中的级联关系:
	[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:无动作,默认的

复制表:

-- 只复制表结构及约束,但不复制数据
create table 复制出的表名 like 原表名;
-- 复制表结构及数据,但不复制约束
create table 复制出的表名 as select * from 原表名;
  • 添加表的一列

    alter table 表名 add [column] 列名 列类型 [约束] [first|after 某列名];
    -- 注:[]里的内容为可加可不加,或根据需要加
    
  • 添加主键和唯一标识

    alter table 表名 add PRIMARY KEY(列名);
    alter table 表名 add UNIQUE KEY(列名);
    
  • 添加外键约束

    -- 自己指定外键的名字(删除外键需要外键的名字)
    alter table 表名 add constraint 外键名 foreign key(设为外键的列名) REFERENCES 外表表名(对应的表的主键列名);
    -- 例:alter table student add constraint stu_1 foreign key(id) references class(id);
    
    -- 系统自动生成一个外键的名字(用'show create table 表名'查看外键名字)
    alter table 需要添加外键表名 add FOREIGN KEY 需要添加外键表名(设为外键的列名) REFERENCES 被添加外键表名(设为被添加外键的列名);
    -- 例:alter table student add foreign key student(id) references class(id);
    

    注:一个表可以又多个外键,每个外键必须参照另一个主键;被外键约束的列,取值必须参照其主表列中的值(通常先创建主表,再创建从表)

查看表结构

desc 表名;

查看创建表的SQL语句

show create table 表名;

删除表:

drop table 表名;
drop table if exists 表名;
  • 删除表的一列

    alter table 表名 drop [column] 列名;
    
  • 删除表的列的约束

    • 删除主键

      alter table 表名 drop primary key;
      
    • 删除外键

      alter table 表名 drop foreign key 外键名;
      
    • 删除索引

      alter table 表名 drop index 索引的列名;
      

修改表名:

alter table 表名 rename [to] 新表名;
-- 注:[]里的内容为可加可不加,或根据需要加
rename table 表名 to 新表名;
  • 修改表的列名的类型(不可修改列名)

    alter table 表名 modify [column] 列名 列类型 [约束] [first|after 某列名];
    -- 例:alter table teacher modify name varchar(10);
    alter table 表名 change [column] 列名 列名 列类型 [约束] [first|after 某列名];
    -- 例:alter table teacher change name name varchar(11) first;
    
  • 修改表的列名(可修改列名)

    alter table 表名 change [column] 原列名 新列名 列类型 [约束] [first|after 某列名];
    -- 例:alter table teacher change id teacher_id varchar(11);
    

    注:change也可以用来修改列的属性,但列名要写两次,所以只修改列的属性时用modify比较方便,修改列名用change

你可能感兴趣的:(数据库,MySQL,mysql,数据库,sql,ddl)