Mysql 基础(四) 表的创建
自己活着,就是为了使别人过得更美好。——雷锋
学习重点
- 表通过 CREATE,TABLE 语句创建而成
- 表和列的命名要使用有意义的文字
- 指定列的数据类型(整数型,字符型,和日期型等等)
- 可以在表中设置约束(主键约束和 NOT NULL 约束等)
表内容的创建
这是一个商家的进货表
商品编号 | 商品名称 | 商品种类 | 销售单价 | 进货单价 | 登记日期 |
---|---|---|---|---|---|
001 | T 恤衫 | 衣服 | 1000 | 500 | 2009-09-20 |
002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 |
003 | 运动 T 恤 | 衣服 | 4000 | 2800 | |
004 | 菜刀 | 厨房用具 | 3000 | 2800 | 2009-09-20 |
005 | 高压锅 | 厨房用具 | 6800 | 5000 | 2009-01-15 |
006 | 叉子 | 厨房用具 | 500 | 2009-09-20 | |
007 | 擦菜板 | 厨房用具 | 880 | 790 | 2008-04-28 |
008 | 圆珠笔 | 办公用品 | 100 | 2009-11-11 |
可以看到上面这个表格是由 8 行 6 列组成
(1) 数据库的创建(CREATE DATABASE 语句)
在创建表之前 一定要先创建数据库
- CREATE DATABASE
CREATE DATABASE <数据库名称>;
这里我们将数据库命名为 shop,然后执行代码中的语句
CREATE DATABASE shop;
此外 数据库名称,表名以及列名都需要使用半角字符(英文字母,数字,符号),具体内容以后会介绍
(2) 表的创建(CREATE TABLE)
- 创建好数据库之后,我们使用 CREATE TABLE 创建表.具体如下
CREATE TABLE <表名>
(
<列名1> <数据类型> <该列所有的需求>,
<列名2> <数据类型> <该列所有的需求>,
<列名3> <数据类型> <该列所有的需求>,
<列名4> <数据类型> <该列所有的需求>,
....
<该表的约束1>,<该表的约束2>,
...
);
该语法清楚的描述了 我们要创建一个包含<列名 1>,<列名 2>的名称为表名的表.每一列的数据类型(后述)是必须要指定的,还需要为需要的列设置约束.约束可以在定义列的时候进行设置,也可以在语句的末尾设置
例如
CREATE TABLE Produce
(
product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER ,
purchase_price INTEGER ,
regist_date Date ,
PRIMARY KEY (product_id)
)CHARACTER SET utf8 COLLATE utf8_general_ci;
命名规则
- 命名
我们只能使用
- 半角英文字母
- 数字
- 下划线(_)
作为数据库,表和列的名称
标准的 SQL 不允许使用特殊符号例如$ # ? 等等作为名称使用(列名同样不允许)
此外名称必须以半角英文字母开头
表名绝对不能重复
数据类型的指定
刚才我们创建了一张表 名称后面比如 CHAR ,VARCHAR 这一列关键字,是用来声明列的数据类型的
所有列必须指定数据类型
数据类型表示数据的种类,包括数字型,字符型和日期型.每一列都不能存储与该列数据类型不符的数据.比如声明整数型的列不能存储’abc’这样的字符串,声明字符串类型的列也不能存储 1234
下面是最基本的四种数据类型
- INTEGER 型
用来指定存储整数的列的数据类型(数字型),不能存小数 。N 表示字节位数 值的范围就是 -2 的(8N-1) 方到 2 的(8N-1)方-1
要是只想要正整数可以变成无符号形,比如 unsigned 这样值的范围就是 0 到 2 的 8N 次方-1
- Float 型
Float(m,n) m 表示总位数,n 表示小数点后面的精度 比如 float(4,2) -99.99 到 99.99
- CHAR 型
CHAR 是用来存字符类型的比如像 CHAR(10) 或者 CHAR(200)
在括号中指定该列可以存储的字符串的长度(最大长度),字符串超出最大长度的部分是无法输入到该列中
字符串是定长字符串的形式存储在指定的 CHAR 类型中,所谓定长就是当字符串达不到最大长度的时候。使用半角空格进行补足,例如 CHAR(8) 存的时候就变成 ‘abc ‘ (abc 后面 5 个半角空格)的形式保存起来
- VARCHAR 型
VARCHAR 也是用来存储字符串的,只不过它是变量类型的.即使字符数未达到最大长度,也不会用半角补足.例如 VARCHAR(8)
存’abc’ 它保存的就是’abc’
Date
用来指定存储日期(年月日)的列的数据类型(日期型)
BLOB(类型)
用来存储 2 进制数据 比如图片,音频之类的
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
约束的设置
约束是除了数据类型之外 ,对列中存储的数据进行限制或者追加条件的功能.Product 表中设置了两种约束
- 第一种:有 3 列不能为空
product_id CHAR(4) NOT NULL
product_name VARCHAR(100) NOT NULL
product_type VARCHAR(32) NOT NULL
- 第二种:主键
PRIMARY KEY (product_id)
所谓键 就是在指定特定数据时使用的列的组合,键种类多样,主键可以特定一行数据的列。也就是说如果把 product_id 列指定为主键,就可以通过该列取出特定的商品数据
反之 如果 product_id 输入了重复数据。就无法取出唯一的特定数据了
主键必须唯一