1.DDL的基础应用

DDL 库定义
### 创建数据库 不能使用数字开头,关键字开头等规范
create database abc; ## 创建数据库
create schema xyz; ## schema 也是创建数据库的关键字
create database if not exists oldguo; ## 判断是否有oldguo这个库没有就创建,有就跳过
create database bbb charset utf8mb4 collate utf8mb4_0900_ai_ci; ## charset更改字符集
collate 更改校对规则

1.2### 修改库定义

alter database aaa charset utf8mb4;
### 删除库 (不代表生产操作)
drop database if exists aaa;
库定义规范:
1、 必须设置字符集
2、 库名:不要大写字母,不要数字开头,不要超过18字符,不要用内置字符串,和业务有关。

1.2创建表定义

1.2.1建表规则:
表名称-字段名称-字段类型-字符大小-约束-comment 注释
1.2.2primary key 必须要跟在not null 后面 主键依赖于 不能为空,示例 not null primary key
1.2.3UNSIGEND 必须加在int数据类型后面

建表:
CREATE TABLE student (
id INT(11) UNSIGEND NOT NULL AUTO_INCREMENT COMMENT ‘主键’,
sid CHAR(10) NOT NULL COMMENT ‘学号’,
sname VARCHAR(128) NOT NULL COMMENT ‘姓名’,
sage TINYINT(3) UNSIGNED NOT NULL DEFAULT ‘18’ COMMENT ‘年龄’,
sgender TINYINT(3) UNSIGNED NOT NULL DEFAULT ‘2’ COMMENT ‘性别’,
scardid CHAR(18) NOT NULL COMMENT ‘身份证号’,
saddr ENUM(‘北京市’,’上海市’,’天津市’,’重庆市’) NOT NULL COMMENT ‘省份’,
shobby SET(‘足球’,’篮球’,’羽毛’,’排球’,’保龄’,’乒乓’) DEFAULT NULL COMMENT ‘爱
好’,
smoney DECIMAL(10,2) UNSIGNED NOT NULL COMMENT ‘学费’,
sdate DATETIME NOT NULL COMMENT ‘入学时间’,
PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

1.3 建表规范:

  1. 表名:不要大写字母,不要数字开头,不要超过18字符,不要用内置字符串,和业务有关。
    2. 列名:业务有关,不要内置字符,不要超过18字符。
    3. 数据类型:合适的,精简的,完整的。
    4. 每个表要有且只有1个主键。每个列尽量Not null。尽量不要使用外键
    5. 每列有注释。
    6. 存储引擎InnoDB,字符集utf8mb4
    1. 每个表建议在30个字段以内。
    2. 需要存储emoji字符的,则选择utf8mb4字符集。
    3. 机密数据,加密后存储。
    4. 整型数据,默认加上UNSIGNED。
    5. 存储IPV4地址建议用INT UNSIGNE,查询时再利用INET_ATON()、INET_NTOA()函数转换。
    6. 如果遇到BLOB、TEXT大字段单独存储表或者附件形式存储。
    7. 选择尽可能小的数据类型,用于节省磁盘和内存空间。
    8. 存储浮点数,可以放大倍数存储。
    9. 每个表必须有主键,INT/BIGINT并且自增做为主键,分布式架构使用sequence序列生成器保存。
    10. 每个列使用not null,或增加默认值

    1. 1.4查询表定义

show tables; ##查询有那些表
show create table stu; ## 查询这个表得建表语句
create table t1 table like stu; ## 复制 stu表到 t1表,不会复制表数据,只复制表结构
desc stu;##查看表得基本信息,字段类型,属性,约束等

1.5修改表定义

rename table stu to stu_1; ## 将stu表名称更改为 stu_1
alter table stu engine=innodb;##更改表存储引擎
alter table stu charset=utf8mb4;## 更改字符集
alter table stu_1 add delete thinyint not null default 0 comment ‘状态列:1删除0未删除’; ##在stu_1表中添加一个字段。
alter table stu_1 add dog varchar after sname; ## 在sname 后面添加一个dog字段
alter table stu_1 dorp dog ; ## 删除 stu_1表中得 dog字段。
alter table stu_1 modify sname varvhar(100) not null comment ‘学生名称’;##sname 字符扩充以前是varchar 64 扩充至varchar200 注意一定要加上字段约束否则会被覆盖。修改字段类型就将 varchar 换成int
alter table stu_1 add index ix_name(sname);##添加索引。
drop table stu_1;##删除表 生产不建议删除。
truncate table tus_1; ##清空表数据