什么是数据库?什么是SQL?怎么入门SQL?( 五 )


该类型的列中存储的字符串也和CHAR 类型一样,是区分大小写的 。

特定的SQL
Oracle中使用VARCHAR2型(Oracle中也有VARCHAR这种数据类型,但并不推荐使用) 。
● DATE型
用来指定存储日期(年月日)的列的数据类型(日期型) 。
特定的SQL
除了年月日之外,Oracle中使用的DATE型还包含时分秒 。
约束的设置
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能 。Product 表中设置了两种约束 。
Product 表的product_id 列、product_name 列和product_type 列的定义如下所示 。
product_id CHAR(4) NOT NULL,product_name VARCHAR(100) NOT NULL,product_type VARCHAR(32) NOT NULL,数据类型的右侧设置了NOT NULL 约束 。NULL 是代表空白(无记录)的关键字 。在NULL 之前加上了表示否定的NOT,就是给该列设置了不能输入空白,也就是必须输入数据的约束(如果什么都不输入就会出错) 。
NULL这个词是无或空的意思,NULL是使用SQL时的常见关键字,请大家牢记 。
这样一来,Product 表的product_id(商品编号)列、product_name(商品名称)列和product_type(商品种类)列就都成了必须输入的项目 。
另外,在创建Product 表的CREATE TABLE 语句的后面,还有下面这样的记述 。
PRIMARY KEY (product_id)这是用来给product_id 列设置主键约束的 。所谓键,就是在指定特定数据时使用的列的组合 。键种类多样,主键(primary key)就是可以特定一行数据的列B 。也就是说,如果把product_id 列指定为主键,就可以通过该列取出特定的商品数据了 。
反之,如果向product_id 列中输入了重复数据,就无法取出唯一的特定数据了(因为无法确定唯一的一行数据) 。这样就可以为某一列设置主键约束了 。
表的删除(DROP TABLE语句)
此前介绍的都是关于Product 表的内容的创建,下面我们就来介绍一下删除表的方法 。删除表的SQL 语句非常简单,只需要一行DROP TABLE 语句即可 。
语法1-3 删除表时使用的DROP TABLE语句
DROP TABLE <表名>;如果想要删除Product 表,只需要像代码清单1-3 那样书写SQL语句即可 。
代码清单1-3 删除Product表
DROP TABLE Product;DROP 在英语中是“丢掉”“舍弃”的意思 。需要特别注意的是,删除的表是无法恢复的 。即使是被误删的表,也无法恢复,只能重新创建,然后重新插入数据 。
其实很多RDBMS 都预留了恢复的功能,但还是请大家认为是无法恢复的 。
如果不小心删除了重要的业务表,那就太悲剧了 。特别是存储了大量数据的表,恢复起来费时费力,请大家务必注意!
表定义的更新(ALTER TABLE语句)
有时好不容易把表创建出来之后才发现少了几列,其实这时无需把表删除再重新创建,只需使用变更表定义的ALTER TABLE 语句就可以了 。ALTER 在英语中就是“改变”的意思 。下面就给大家介绍该语句通常的使用方法 。
首先是添加列时使用的语法 。
语法1-4 添加列的ALTER TABLE语句
ALTER TABLE <表名> ADD COLUMN <列的定义>;
特定的SQL
Oracle 和SQL Server 中不用写COLUMN 。
ALTER TABLE <表名> ADD <列名> ;
另外,在Oracle 中同时添加多列的时候,可以像下面这样使用括号 。
ALTER TABLE <表名> ADD (<列名>,<列名>,……);例如,我们可以使用代码清单1-4 中的语句在Product 表中添加这样一列,product_name_pinyin(商品名称(拼音)),该列可以存储100 位的可变长字符串 。
代码清单1-4 添加一列可以存储100位的可变长字符串的product_name_pinyin列
DB2 PostgreSQL MySQLALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);OracleALTER TABLE Product ADD (product_name_pinyin VARCHAR2(100));SQL ServerALTER TABLE Product ADD product_name_pinyin VARCHAR(100);反之,删除表中某列使用的语法如下所示 。
语法1-5 删除列的ALTER TABLE语句
ALTER TABLE <表名> DROP COLUMN <列名>;
特定的SQL
Oracle 中不用写COLUMN 。
ALTER TABLE <表名> DROP <列名> ;
另外,在Oracle 中同时删除多列的时候,可以像下面这样使用括号来实现 。
ALTER TABLE <表名> DROP (<列名>,<列名>,……);例如,我们可以使用代码清单1-5 中的语句来删除之前添加的product_name_pinyin 列 。


推荐阅读