数据定义语言DDL

1. 库定义

1.1 创建库

1.1.1 创建库的SQL

CREATE DATABASE school;
CREATE SCHEMA sch;

show charset;
show collation;
create database utf8_test charset utf8;
create database collate_test1 charset utf8mb4 collate utf8mb4_bin;
create database collate_test2 charset utf8mb4 collate utf8mb4_general_ci;

1.1.2 创建库的规范

  1. 库名不能大写
  2. 库名不能以数字开头
  3. 建库时需要加字符集
  4. 库名要和业务有关

1.2 删除库

drop database 库名;

1.3 修改数据库

1.3.1 修改数据库的字符集

注意:修改字符集,修改后的字符集一定是原字符集的严格超集

alter database 库名 charset 字符集;
例如:
alter database school charset utf8;

1.4 查看库

show create database school;

2. 表定义

2.1 建表

2.1.1 建表SQL

USE 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 '性别',
id_card CHAR(18) NOT NULL UNIQUE COMMENT '身份证',
intime TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '入学时间'
) ENGINE=INNODB CHARSET=utf8 COMMENT '学生表';

2.1.2 建表规范

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

2.2 删表

drop table 表名

2.3 修改表

2.3.1 添加列

8.0之前会锁表,解决方案是通过pt-osc第三方工具来处理。8.0没有这个问题了。

  1. 在表中添加列
ALTER TABLE 表名 ADD 字段名 数据类型 [约束] [注释];

示例:
ALTER TABLE stu ADD qq VARCHAR(20) NOT NULL UNIQUE COMMENT 'qq号';
  1. 在某个字段后面添加列
在字段2后面添加字段1
ALTER TABLE 表名 ADD 字段1 数据类型 [约束] [注释] AFTER 字段2;

示例:
ALTER TABLE stu ADD wechat VARCHAR(64) NOT NULL UNIQUE COMMENT '微信号' AFTER sname;
  1. 将某个字段添加为第一个字段
ALTER TABLE 表名 ADD 字段1 数据类型 [约束] [注释] FIRST;

2.3.2 删除列

ALTER TABLE 表名 DROP 字段名;

2.3.3 修改列

  1. 修改列属性
ALTER TABLE 表名 MODIFY 字段名 属性;

示例:
ALTER TABLE stu MODIFY sname VARCHAR(128) NOT NULL;
  1. 修改列名
ALTER TABLE 表名 CHANGE 字段1 字段2 属性;

示例:
ALTER TABLE stu CHANGE sgender sg CHAR(1) NOT NULL DEFAULT 'm';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值