建立数据库之编码格式:
当建立数据库时,必须制定编码格式:
- 如果是在Linux系统中,默认是"utf8";
- 如果是在windows系统环境下,默认是"gbk";
常见的数据类型和数据约束:
数据类型:
- 整数:int,bit
- 小数:decimal 如:decimal(5, 2) 五位数,两位小数位
- 字符串:varchar,char 如:varchar(20)不定长字符表示,最大长度是20
- 日期时间: date, time, datetime
- 枚举类型(enum)
数据约束:
- 主键 primary key: 物理上存储的顺序. MySQL 建议所有表的主键字段都叫 id, 类型为 int unsigned.
- 非空:not null
- 唯一,不重复:unique
- 默认值: default当不填写字段对应的值会使用默认值,如果填写时以填写为准
- 外键 foreign key: 对关系字段进行约束, 当为关系字段填写值时, 会到关联的表中查询此值是否存在, 如果存在则填写成功, 如果不存在则填写失败并抛出异常.
本次考试,遇到的题目是:
–要求1: 创建名为“school”的数据库,在该数据库中创建包含名为“users”的表;
–要求2: users表包含id、name、age、sex、phone_num字段,其中id为主键,name为姓名(name不允许为空不允许重复),–age为年龄,sex为性别(只能是“男”或“女”)、phone_num为电话号码(11位);
mysql> create database school;
mysql> use school;
mysql> create table user(
-> id int unsigned primary key auto_increment not null,
-> name varchar(20) not null,
-> age tinyint,
-> sex enum('男', '女'),
-> phone_num varchar(11)
-> );
到此为止,就出现问题了:
- 建表的时候显示:
ERROR 1291 (HY000): Column ‘sex’ has duplicated value ‘?’ in ENUM
- 而且也没有满足name不允许重复的条件,所以正确的操作应该如下:
- 建库:设定编码格式
create database school charset='utf8';
- 设置name字段的约束为unique
mysql> create table user(
-> id int unsigned primary key auto_increment not null,
-> name varchar(20) not null unique,
-> age tinyint,
-> sex enum('男', '女'),
-> phone_num varchar(11)
-> );