1.约束

1.PrimaryKey(PK)主键
特点:唯一 + 非空,一张表中只能有一个主键约束,一般是一个数字列,最好是无意义的。

2.NOT NULL    非空
特点:不能为空,建议在MySQL中,业务关键列,尤其是索引列,设置为非空。

3.UNIQUE    唯一约束
特点:不能有重复值,可以有多个,一般像是手机号,身份证号

4.unsigned    数字列无符号(全是正数)
特点:必须要加在数字列后,表示数字无负数,一般适用于年龄。。。。。。。。。。

2.其他属性

1.AUTO_INCREMENT    自增长
特点:适用于ID主键列

2.DEFAULT    默认值
特点:在NOT NULL列中使用,不填写值,自动生成默认值。

3.COMMENT    注释
让表的数据更加具体化    特点:建议每个列都有一个注释。

3.DCL 数据控制语言

grant
revoke

4.DDL 应用

1.库的定义
    1.1    增
            CREATE DATABASE oldguo  CHARSET utf8mb4 COLLATE utf8mb4_bin;

    1.2    删    (危险,不代表生产操作)
            DROP DATABASE oldguo;
    1.3    改
            ALTER DATABASE oldguo CHARSET utf8mb4 COLLATE utf8mb4_bin;

    1.4    查(DQL)
            mysql> show create database oldboy;
+----------+--------------------------------------------------------------------+
| Database | Create Database                                                    |
+----------+--------------------------------------------------------------------+
| oldboy   | CREATE DATABASE `oldboy` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| oldboy             |
| oldguo             |
| performance_schema |
| sys                |
| test               |
| world              |
+--------------------+
8 rows in set (0.00 sec)

    1.5 规范
(1). 库名和业务相关

(2). 库名不能用大写字母,可以用数字,小写字母,特殊符号。
为什么?因为在Windows中,不区分大小写,Linux严格区分大小写。

(3). 库名不能数字开头

(4). 库名不能是预留字符
比如,table,database

(5). 库名不能超过十八个字符

(6). 必须要设置字符集,尽量是utf8mb4.

(7). 收回所有用户的DROP权限。
2.表定义

2.1    增    create table

2.2    删    drop table

2.3    查

2.4    改

建表规范

1.表名:
不能大写字母,要和业务有关,不能数字开头,长度控制在18个字符内,不能和关键字同名。

2.要设置存储引擎类型:
INNODB,要设置字符集

3.列明要有意义

4.选择合适的数据类型:
合适的,完整的,简短的(数据类型会影响到索引的性能)

5.每个表要有主键。实在是不知道怎么设置,也要找一个无关的自增长列设置为主键。

6.尽量每个列都有NOT NULL (特别是将来要作为索引的)

7.每列要有注释信息。
01-03 19:08