Mysql 基础(四) 表的创建

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;

命名规则

  • 命名

我们只能使用

  1. 半角英文字母
  2. 数字
  3. 下划线(_)
    作为数据库,表和列的名称

标准的 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 输入了重复数据。就无法取出唯一的特定数据了

主键必须唯一


文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录