八、mysql语句的DDL语句

DDL语句:数据定义语言

一、库定义

1、创建库

创建一个不存在的数据库
create database school;
create schema sch;
查看支持的字符集
show charset;
查看支持的校对规则
show collation;
完整创建一个不存在的数据库,建议的操作
CREATE DATABASE test CHARSET utf8;  #创建一个test库,字符集为utf8
create database xyz charset utf8mb4 collate utf8mb4_bin; #创建一个xyz库,字符集为utf8mb4,校对规则为uft8mb4_bin(大小写敏感,注意:校对规则必须与字符集一致)

建库规范:
1.库名不能有大写字母   
2.建库要加字符集         
3.库名不能有数字开头
4. 库名要和业务相关

建库标准语句

 
mysql> create database db charset utf8mb4;
mysql> show create database xuexiao; #查看创建库的语句

2、删除(生产中禁止使用)

mysql> drop database ywx;
#物理删除ywx库及库中的所有表

3、修改

SHOW CREATE DATABASE school;
ALTER DATABASE school  CHARSET utf8;
注意:修改字符集,修改后的字符集一定是原字符集的严格超集(修改后的字符集一定要包含原字符集)

4、查询库相关信息(DQL)

show databases;#查看所有库名
show create database ywx; #查看创建ywx库的创建语句

二、表定义

1、创建表格式

create table stu(
列1  属性(数据类型、约束、其他属性) ,
列2  属性,
列3  属性
);

2、创建表

USE school;  #进入school数据库
CREATE TABLE stu(    #创建列及其属性信息
id      INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
sname   VARCHAR(255) NOT NULL COMMENT '姓名',
sage    TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',
sgender ENUM('m','f','n') NOT NULL DEFAULT 'n' COMMENT '性别' ,
sfz     CHAR(18) NOT NULL UNIQUE  COMMENT '身份证',
intime  TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '入学时间'
) ENGINE=INNODB CHARSET=utf8 COMMENT '学生表';

建表规范:

1. 表名小写
2. 不能是数字开头
3. 注意字符集和存储引擎
4. 表名和业务有关
5. 选择合适的数据类型
6. 每个列都要有注释
7. 每个列设置为非空,无法保证非空,用0来填充。

3、删除表(生产中禁用命令)

drop table t1;
物理删除t1表的所有信息

4、修改

4.1添加列

在stu表中添加qq列

DESC stu;
ALTER TABLE stu ADD qq VARCHAR(20) NOT NULL UNIQUE COMMENT 'qq号';

在sname后加微信列

 
ALTER TABLE stu ADD wechat VARCHAR(64) NOT NULL UNIQUE  COMMENT '微信号' AFTER sname ;

在id列前加一个新列num

ALTER TABLE stu ADD num INT NOT NULL COMMENT '数字' FIRST;
DESC stu;

4.2删除列

把刚才添加的列都删掉(危险)

ALTER TABLE stu DROP num;
ALTER TABLE stu DROP qq;
ALTER TABLE stu DROP wechat;

4.3修改列的属性

修改sname数据类型的属性

ALTER TABLE stu MODIFY sname VARCHAR(128)  NOT NULL ;

将sgender 改为 sg 数据类型改为 CHAR 类型

ALTER TABLE stu CHANGE sgender sg CHAR(1) NOT NULL DEFAULT 'n' ;
DESC stu;
#change可以更改列的名称,也可以更改列的属性;modify只能更改列的属性。

 

posted @ 2020-11-04 21:21  yaowx  阅读(221)  评论(0编辑  收藏  举报