02 - 表的创建、删除和更新
2019-08-04 本文已影响0人
丑丑的小怪物
数据库的创建(CREATE DATABASE 语句)
- 语法
CREATE DATABASE <数据库名称>
表的创建 (CREATE TABLE 语句)
- 创建表的CREATE TABLE 语句
CREATE TABLE <表名>
(<列名1> <数据类型> <该列所需约束>,
<列名2> <数据类型> <该列所需约束>,
<列名3> <数据类型> <该列所需约束>,
<列名4> <数据类型> <该列所需约束>,
.
.
.
<该表的约束1>, <该表的约束2>,……);
- 示例
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 表所包含的列,定义在 CREATE TABLE Product( ) 的括号中。列名右边的 INTEGER 或者 CHAR 等关键字,是用来声明该列的数据类型的,所有的列都必须指定数据类型。
- 数据类型表示数据的种类,包括数字型、字符型和日期型等
- 四种基本数据类型
- INTEGER
- 用来指定存储整数的列的数据类型(数字型),不能存储小数。
- CHAR
- CHAR 是 CHARACTER(字符)的缩写,是用来指定存储字符串的列的数据类型(字符型)。
- 可以像 CHAR(10) 或者CHAR(200)这样,在括号中指定该列可以存储的字符串的长度(最大长度)。字符串超出最大长度的部分是无法输入到该列中的。
- 字符串以定长字符串的形式存储在被指定为 CHAR 型的列中
- VARCHAR
- 同 CHAR 类型一样,VARCHAR型也是用来指定存储字符串的列的数据类型(字符串类型),也可以通过括号内的字来指定字符串的长度(最大长度)
- DATE
- 用来指定存储日期(年月日)的列的数据类型(日期型)。
- INTEGER
- 约束的设置
- 约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能
- NOT NULL 约束:非空约束
- PRIMARY KEY (product_id):主键约束
表的删除 (DROP TABLE 语句)
- 语法
DROP TABLE <表面>
- 示例
DROP TABLE Product;
表的更新 (ALTER TABLE 语句)
添加列
ALTER TABLE <表名> ADD COLUMN <列的定义>;
注:
-- Oracle 和 SQL Server 中不用写 COLUMN
ALTER TABLE <表名> ADD <列名> ;
-- 在 Oracle 中同时添加多列的时候,可以像下面这样使用括号。
ALTER TABLE <表名> ADD (<列名>,<列名>,……);
- 示例
-- DB2 PostgreSQL MySQL
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);
-- Oracle
ALTER TABLE Product ADD (product_name_pinyin VARCHAR2(100));
-- SQL Server
ALTER TABLE Product ADD product_name_pinyin VARCHAR(100);
删除列的 ALTER TABLE 语句
ALTER TABLE <表名> DROP COLUMN <列名>;
注:
-- Oracle 和 SQL Server 中不用写 COLUMN
ALTER TABLE <表名> DROP <列名> ;
-- 在 Oracle 中同时删除多列的时候,可以像下面这样使用括号来实现。
ALTER TABLE <表名> DROP (<列名>,<列名>,……);
- 示例
SQL Server DB2 PostgreSQL MySQL
ALTER TABLE Product DROP COLUMN product_name_pinyin;
Oracle
ALTER TABLE Product DROP (product_name_pinyin);
修改表名
- 示例
-- Oracle PostgreSQL
ALTER TABLE Poduct RENAME TO Product;
-- DB2
RENAME TABLE Poduct TO Product;
-- SQL Server
sp_rename 'Poduct', 'Product';
-- MySQL
RENAME TABLE Poduct to Product;
批量插入数据
- 示例
SQL Server PostgreSQL
-- DML :插入数据
BEGIN TRANSACTION;------------------①
INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');
INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
INSERT INTO Product VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品', 100, NULL,'2009-11-11');
COMMIT;
- 注:
- 在MySQL中运行时,需要把①中的 BEGIN TRANSACTION;改写成 START TRANSACTION;
- 在Oracle和DB2中运行时,无需使用①中的BEGIN TRANSACTION;