美文网首页
02 - 表的创建、删除和更新

02 - 表的创建、删除和更新

作者: 丑丑的小怪物 | 来源:发表于2019-08-04 14:50 被阅读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
      • 用来指定存储日期(年月日)的列的数据类型(日期型)。
  • 约束的设置
    • 约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能
    • 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;

相关文章

网友评论

      本文标题:02 - 表的创建、删除和更新

      本文链接:https://www.haomeiwen.com/subject/jjhydctx.html