SQL 基础应用
#表属性
- 列属性
1 约束(一般建表时添加): 2 **primary key** :主键约束 3 设置为主键的列,此列的值必须非空且唯一,主键在一个表中只能有一个,但是可以有多个列一起构成。 4 **not null** :非空约束 5 列值不能为空,也是表设计的规范,尽可能将所有的列设置为非空。可以设置默认值为0 6 **unique key** :唯一键 7 列值不能重复 8 **unsigned** :无符号 9 针对数字列,非负数。 10 11 其他属性: 12 **key** :索引 13 可以在某列上建立索引,来优化查询,一般是根据需要后添加 14 **default** :默认值 15 列中,没有录入值时,会自动使用default的值填充 16 **auto_increment**:自增长 17 针对数字列,顺序的自动填充数据(默认是从1开始,将来可以设定起始点和偏移量) 18 **comment ** : 注释
- 表的属性
1 存储引擎: 2 InnoDB(默认的) 3 字符集和排序规则: 4 utf8 5 utf8mb4
#DDL应用
##库定义
1 #创建数据库 2 create database school; 3 create schema sch; 4 show charset; 5 show collation; 6 CREATE DATABASE test CHARSET utf8; 7 create database zyc charset utf8mb4 collate utf8mb4_bin; 8 9 建库规范: 10 1.库名不能有大写字母 11 2.建库要加字符集 12 3.库名不能有数字开头 13 4. 库名要和业务相关
1 #建库标准语句 2 mysql> create database db charset utf8mb4; 3 mysql> show create database testdb;
1 #删除数据库 2 mysql> drop database oldboy;
1 #修改数据库 2 SHOW CREATE DATABASE school; 3 ALTER DATABASE school CHARSET utf8; 4 注意:修改字符集,修改后的字符集一定是原字符集的严格超集
1 #查询库相关信息 2 show databases; 3 show create database oldboy;
##表定义
1 #创建表 2 create table stu( 3 列1 属性(数据类型、约束、其他属性) , 4 列2 属性, 5 列3 属性 6 )
1 #建表范例 2 USE school; 3 CREATE TABLE stu( 4 id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学号', 5 sname VARCHAR(255) NOT NULL COMMENT '姓名', 6 sage TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄', 7 sgender ENUM('m','f','n') NOT NULL DEFAULT 'n' COMMENT '性别' , 8 sfz CHAR(18) NOT NULL UNIQUE COMMENT '身份证', 9 intime TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '入学时间' 10 ) ENGINE=INNODB CHARSET=utf8 COMMENT '学生表'; 11 12 #建表规范 13 表名小写 14 不能是数字开头 15 注意字符集和存储引擎 16 表名和业务有关 17 选择合适的数据类型 18 每个列都要有注释 19 每个列设置为非空,无法保证非空,用0来填充。
1 #删除表 2 drop table t1;
1 #修改表 2 ##添加一个新列 3 DESC stu; 4 ALTER TABLE stu ADD qq VARCHAR(20) NOT NULL UNIQUE COMMENT 'qq号'; 5 6 ##在sname后添加一个新列【AFTER】 7 ALTER TABLE stu ADD wechat VARCHAR(64) NOT NULL UNIQUE COMMENT '微信号' AFTER sname ; 8 9 ##在id列前加入一个新列【FIRST】 10 ALTER TABLE stu ADD num INT NOT NULL COMMENT '数字' FIRST id; 11 DESC stu; 12 13 ##删除列 14 ALTER TABLE stu DROP num; 15 ALTER TABLE stu DROP qq; 16 ALTER TABLE stu DROP wechat; 17 18 ##修改列属性 19 ALTER TABLE stu MODIFY sname VARCHAR(128) NOT NULL ; 20 21 ALTER TABLE stu CHANGE sgender sg CHAR(1) NOT NULL DEFAULT 'n' ; 22 DESC stu;