前言[随时更新]
MySQL快速复习
MySQL原生查询
选择数据表
删除数据
聚合查询
时间查询
视图查询
子查询
总结/参考
CREATE TABLE IF NOT EXISTS 数据表名称 ( 字段名称1 [AS 别名] 字段类型 [约束条件] [DEFAULT 默认值] [COMMENT 字段注释], 字段名称2 [AS 别名] 字段类型 [约束条件] [DEFAULT 默认值] [COMMENT 字段注释], 字段名称3 [AS 别名] 字段类型 [约束条件] [DEFAULT 默认值] [COMMENT 字段注释], ...... )ENGINE = 表存储引擎 DEFAULT CHARSET = 默认编码集 AUTO_INCREMENT = 自增主键起始值;
字段名称:不与MySQL关键字重名的任何有效标识符即可;
IF NOT EXISTS:意思是“如果不存在”再创建数据表,防止重复建表引起错误;
AS 别名:表中字段名均为英文单词或缩写,创建一个有意义的别名,使数据表查询结果更加直观、人性化;字段类型:非常重要,本文后面有详细介绍;
约束条件:主要是
NULL(允许为空),NOT NULL(禁止为空)等,具体还要与字段类型相匹配;
DEFAULT 默认值:如某字段设置了默认值,则新增时未赋值则取默认值;
COMMENT 字段注释:非必须,但可以使字段信息看上去再完整、直观;
ENGINE = 表存储引擎:
- MyISAM:读取快速、成熟稳定、支持全文检索、最常用,但不支持事务处理;
- InnoDB:具备提交、回滚的事务处理,支持外键,战用空间大,不支持全文检索;
DEFAULT CHARSET 默认编码集: 通常与数据库采用的编码集相同(utf8)即可;
AUTO_INCREMENT = 自增主键起始值:如果设置,将从该值开始自增,如设置为1001,则第一条记录是1001,第二条是1002。如果不设置,主键将默认从1开始自增;
数值型:有无符号和有符号之分,直接书写,不要加引号,长度仅影响显示,不影响精度。
字符串类型:
日期/时间类型(不要设置长度):
主要有UNSIGNED、ZEROFILL、AUTO_INCREMENT、NULL / NOT NULL、DEFAULT等。
| 序号 | 约束条件 | 字段类型 | 说明 |
|---|---|---|---|
| 1 | UNSIGNED | INT , FLOATT等数值型 | 全是正数,范围扩大一倍 |
| 2 | ZEROFILL | INT , FLOAT 等数值型 | 宽度大于实际长度时补足前导零 |
| 3 | AUTO_INCREMENT | INT | 无符号、默认从1开始自增,接受NULL或空值 |
| 4 | NULL / NOT NULL | 不限制 | 为空或不为空 |
| 5 | DEFAULT | 非TEXT类型或主键 | 添加新记录时没赋值,则取默认值 |
staff数据表结构如下:
| 序号 | 字段名 | 类型 | 宽度 | 约束 | 默认值 | 备注 |
|---|---|---|---|---|---|---|
| 1 | id | 整型 | 4位 | 无符号、不为空、自增、主键 | 无 | 编号 |
| 2 | name | 变长字符串 | 30位 | 不为空 | 无 | 姓名 |
| 3 | sex | 整型 | 1位 | 不为空 | 1 | 性别1男0女 |
| 4 | salary | 浮点型 | 共10位小数2位 | 无符号、不为空 | 2000 | 工资 |
| 5 | dept | 变长字符串 | 20位 | 不为空 | 开发部 | 部门 |
| 6 | hiredate | 日期 | 默认 | 不为空 | 0000-00-00 | 入职日期 |
要求数据表存储引擎为MyISAM,默认编码:utf8,自增主键起始:1001。
CREATE TABLE IF NOT EXISTS staff ( id INT(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '编号', name VARCHAR(30) NOT NULL COMMENT '姓名', sex TINYINT(2) unsigned NOT NULL DEFAULT 1 COMMENT '性别1男0女', salary FLOAT(10,2) NOT NULL DEFAULT 2000.00 COMMENT '工资', dept VARCHAR(20) NOT NULL DEFAULT '开发部' COMMENT '部门' , hiredate DATE NOT NULL DEFAULT '0000-00-00' COMMENT '入职日期', PRIMARY KEY (id) )ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1001;

DESC 表名
数据表,是我们ThinkPHP开发中,数据库操作的重要载体。而创建数据表,则是最重要的一环。一个结构良好、健壮的表结构是我们所有模型操作的基础。