MySQL DDL 数据定义语句SQL大全

一、库操作

连接数据库

mysql -h127.0.0.1 -uroot -p

1、创建数据库

create database test_db01;

2、查看数据库(只能查看当前账号有权限的库)

show databases;

3、选择数据库

use test_db01;

4、删除数据库

drop database test_db01;

二、表操作

1、创建表

1.1、基础创建
CREATE  [TEMPORARY]  TABLE  [IF NOT EXISTS] [database_name.] <table_name>
(<column_name>  <data_type>  [[not] null],)
  • 注:TEMPORARY:指明创建临时表
      IF NOT EXISTS:如果要创建的表已经存在,则不显示错误消息也不会执行创建逻辑
      database_name:数据库名
      table_name:表名
      column_name:列名
      data_type:数据类型

CREATE TABLE IF NOT EXISTS `test_db01`.`test_table01`  (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `nick_name` varchar(255) NULL COMMENT '昵称',
  PRIMARY KEY (`id`)
);
1.2、根据旧表创建新表
CREATE TABLE test_table02 LIKE test_table01;
1.3、根据旧表创建新表,并且复制旧表数据到新表
  • 方法一
# 第一步根据老表创建新表,这样创建会携带老表的索引信息,但是不会携带老表的自增序列
CREATE TABLE test_table02 LIKE test_table01;

# 将老表数据迁移到新表
INSERT INTO test_table02 SELECT * FROM test_table01 WHERE 1=1;
# 或者
INSERT INTO test_table02 (id, nick_name) SELECT id, nick_name FROM test_table01 WHERE 1=1;
  • 方法二(做数据备份时推荐)
CREATE TABLE test_table02 SELECT * FROM test_table01 WHERE 1=1;

不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性需要自己用"alter"添加,而且容易搞错,这种方式比较适合做数据备份。

2、查看创建表的语句

SHOW CREATE TABLE test_table01;

3、更改表名

ALTER TABLE test_table01 RENAME test_table02;
ALTER TABLE test_table02 RENAME test_table01;

4 、删除表

DROP TABLE test_table01;

三、表字段操作

1、查看表字段定义

DESC test_table01;

2、增加表字段

2.1、普通增加表字段

在表末尾添加一个年龄字段

  • TINYINT (4) :字段为TINYINT类型长度4,NOT NULL:不能为空,DEFAULT 0 :默认值是0,COMMENT ‘年龄’ :描述是年龄
ALTER TABLE test_table01 ADD COLUMN age TINYINT (4) NOT NULL DEFAULT 0 COMMENT '年龄';
2.2、指定添加表字段在某个字段后面
  • TINYINT (4) :字段为TINYINT类型长度4,NOT NULL:不能为空,DEFAULT 0 :默认值是0,COMMENT ‘性别’ :描述是性别,AFTER nick_name :字段添加在nike_name字段后
ALTER TABLE test_table01 ADD COLUMN sex TINYINT (4) NOT NULL DEFAULT 0 COMMENT '性别' AFTER nick_name;

3、修改表字段

  • 修改字段描述有两种方式分别是使用change和modify,前者可以修改列名称后者不能,change需要些两次列名称

  • PS:要注意一个问题修改字段时必须携带上一个字段所有属性如:字段类型、是否能为空、默认值、描述等,如果没有携带则会被修改成默认值

3.1、修改列名(使用change)

修改列名时需要将之前列的信息都带上,比如我这里需要带字段类型、是否为空、默认值、描述。

ALTER TABLE test_table01 CHANGE age age_01 TINYINT (4) NOT NULL DEFAULT 0 COMMENT '年龄01';
3.2、修改表字段类型、是否能为空、默认值、描述(使用modify)
  • INT (4) :将字段类型修改成int 长度为4,NULL :可以为空,DEFAULT 1 :默认值为1,COMMENT ‘性别01’ :描述信息为性别01
ALTER TABLE test_table01 MODIFY sex INT (4) NULL DEFAULT 1 COMMENT '性别01';
3.3、修改表主键字段设置为自动增长并且设置起始值
# 设置主键为自动增长
ALTER TABLE `test_table01` MODIFY COLUMN `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID';
# 设置增长起始值为100
ALTER TABLE `test_table01` AUTO_INCREMENT = 100;

4、删除表字段

ALTER TABLE test_table01 DROP COLUMN age;

四、索引操作

4.1、查询表有那些索引

SHOW INDEX FROM `table_name`;

4.2、新增索引

  • 添加PRIMARY KEY(主键索引)
    ALTER TABLE `table_name` ADD PRIMARY KEY (`column`);
    
  • 添加UNIQUE(唯一索引),使用BTREE结构
    ALTER TABLE `table_name` ADD UNIQUE INDEX `index_name`(`column`) USING BTREE;
    
  • 添加NORMAL(普通索引),使用BTREE结构
    ALTER TABLE `table_name` ADD INDEX `index_name`(`column`) USING BTREE;
    
  • 添加FULLTEXT(全文索引),使用BTREE结构
    ALTER TABLE `table_name` ADD FULLTEXT INDEX `index_name`(`column`) USING BTREE;
    
  • 添加多列复合索引,使用BTREE结构
    ALTER TABLE `table_name` ADD INDEX `index_name`(`column1`, `column2`, `column3`) USING BTREE;
    

4.3、删除索引

  • 删除主键索引 (主键索引不能是自动递增)
    ALTER TABLE `table_name` DROP PRIMARY KEY;
    
  • 删除其它索引
    ALTER TABLE `table_name` DROP INDEX `index_name`;
    

4.4、修改索引

在mysql中,索引无法直接修改,可以通过删除原索引,再根据需要创建一个同名的索引,从而实现修改索引的操作.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值