表的创建(CREATE TABLE语句)
创建好数据库之后,接下来我们使用CREATE TABLE 语句在其中创建表 。CREATE TABLE 语句的语法如下所示
语法1-2 创建表的CREATE TABLE语句
CREATE TABLE <表名>(<列名1> <数据类型> <该列所需约束>,<列名2> <数据类型> <该列所需约束>,<列名3> <数据类型> <该列所需约束>,<列名4> <数据类型> <该列所需约束>,...<该表的约束1>,<该表的约束2>,……);该语法清楚地描述了我们要创建一个包含< 列名1>、< 列名2>、 ……的名称为< 表名> 的表,非常容易理解 。每一列的数据类型(后述)是必须要指定的,还要为需要的列设置约束(后述) 。约束可以在定义列的时候进行设置,也可以在语句的末尾进行设置 。
在数据库中创建表1-2 中的商品表(Product 表)的CREATE TABLE 语句,如代码清单1-2 所示 。
代码清单1-2 创建Product表的CREATE TABLE语句
CREATE TABLE Product(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));命名规则
我们只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称。例如,不能将product_id 写成product-id,因为标准SQL 并不允许使用连字符作为列名等名称 。$、#、? 这样的符号同样不能作为名称使用 。
尽管有些RDBMS 允许使用上述符号作为列的名称,但这也仅限于在该RDBMS 中使用,并不能保证在其他RDBMS 中也能使用 。虽然大家可能会觉得限制有点太多了,但还是请遵守规则使用半角英文字母、数字和下划线(_)吧 。
此外,名称必须以半角英文字母开头。以符号开头的名称并不多见,但有时会碰到类似1product 或者2009_sales 这样以数字开头的名称 。虽然可以理解,但这在标准SQL 中是被禁止的 。请大家使用product1 或者sales_2009 这样符合规则的名称 。
最后还有一点,在同一个数据库中不能创建两个相同名称的表,在同一个表中也不能创建两个名称相同的列 。如果出现这样的情况,RDBMS会返回错误信息 。
接下来我们根据上述规则,使用代码清单1-2 中的CREATE TABLE 语句来创建表2 中的商品表 。表名为Product,表中的列名如表3 所示 。

文章插图
表3 商品表和Product表列名的对应关系
数据类型的指定
Product 表所包含的列,定义在CREATE TABLE Product( )的括号中 。列名右边的INTEGER 或者CHAR 等关键字,是用来声明该列的数据类型的,所有的列都必须指定数据类型 。
数据类型表示数据的种类,包括数字型、字符型和日期型等 。每一列都不能存储与该列数据类型不符的数据 。声明为整数型的列中不能存储'abc' 这样的字符串,声明为字符型的列中也不能存储1234 这样的数字 。
数据类型的种类很多,各个RDBMS 之间也存在很大差异 。根据业务需要实际创建数据库时,一定要根据不同的RDBMS 选用最恰当的数据类型 。在学习SQL 的时候,使用最基本的数据类型就足够了 。下面我们就来介绍四种基本的数据类型 。
● INTEGER型
用来指定存储整数的列的数据类型(数字型),不能存储小数 。
● CHAR型
CHAR 是CHARACTER(字符)的缩写,是用来指定存储字符串的列的数据类型(字符型) 。可以像CHAR(10) 或者CHAR(200) 这样,在括号中指定该列可以存储的字符串的长度(最大长度) 。字符串超出最大长度的部分是无法输入到该列中的 。RDBMS 不同,长度单位也不一样,既存在使用字符个数的情况,也存在使用字节长度的情况 。
字节是计算机内部的数据单位 。一个字符通常需要1到3个字节来表示(根据字符的种类和表现方式有所不同) 。字符串以定长字符串的形式存储在被指定为CHAR 型的列中 。所谓定长字符串,就是当列中存储的字符串长度达不到最大长度的时候,使用半角空格进行补足 。例如,我们向CHAR(8) 类型的列中输入'abc'的时候,会以'abc '(abc 后面有5 个半角空格)的形式保存起来 。
另外,虽然之前我们说过SQL 不区分英文字母的大小写,但是表中存储的字符串却是区分大小写的 。也就是说,'ABC' 和'abc' 代表了两个不同意义的字符串 。
● VARCHAR型
同CHAR 类型一样,VARCHAR 型也是用来指定存储字符串的列的数据类型(字符串类型),也可以通过括号内的数字来指定字符串的长度(最大长度) 。但该类型的列是以 可变长字符串 的形式来保存字符串的 。定长字符串在字符数未达到最大长度时会用半角空格补足,但可变长字符串不同,即使字符数未达到最大长度,也不会用半角空格补足 。例如,我们向VARCHAR(8) 类型的列中输入字符串'abc'的时候,保存的就是字符串'abc' 。
推荐阅读
- ping ,time,TTL详解
- 数据库两大必备神器:索引和锁底层原理是什么
- FTP原理与配置
- SEO和SEM有什么区别?
- 2019最新整理PHP面试题附答案
- 数据库缓存更新的套路
- html5怎么连接数据库?
- C语言的位级运算
- 女人梦见洗头发是什么意思 梦见洗头发是什么意思 周公解梦
- knscha电容是什么牌子
