零基础入门 SQL 系列之(九)创建和操作表

创建表

SQL 不仅可以用来操纵表中的数据,还可以对表本身进行操纵,包括表的创建、更改和删除。
一般有两种创建表的方法:

  • 用可视化的管理数据库表的工具来创建。
  • 直接用 SQL 语句来创建。
    其实,在用工具创建的时候,本质上也是通过 SQL 语句来创建,只不过这些 SQL 语句是工具帮我们生成的。
    创建表使用 CREATE TABLE 关键字,创建过程中,给出如下信息:
  • 新表的名字,在关键字 CREATE TABLE 之后给出。
  • 表列的名字和定义,用逗号分隔。

我们以 customers 表的创建为例,创建语句如下:

CREATE TABLE customers
(
  cust_id      char(10)  NOT NULL ,
  cust_name    char(50)  NOT NULL ,
  cust_address char(50)  NULL ,
  cust_city    char(50)  NULL ,
  cust_state   char(5)   NULL ,
  cust_zip     char(10)  NULL ,
  cust_country char(50)  NULL ,
  cust_contact char(50)  NULL ,
  cust_email   char(255) NULL 
);

在创建新的表时,指定的表名必须不存在,否则会出错。为防止意外覆盖已有的表,SQL 要求首先手工删除该表,然后再重建它,而不是简单的用创建表语句覆盖它。
每个表列要么是 NULL 列,要么是 NOT NULL 列。当我们不明确指定 NULLNOT NULL 时,默认为 NULL
SQL 允许指定默认值,在插入行时如果不给出值,DBMS 将自动采用默认值。默认值在 CREATE TABLE 语句的列定义中用关键字 DEFAULT 指定。
例如:

CREATE TABLE orderitems
(
  order_num  int          NOT NULL ,
  order_item int          NOT NULL ,
  prod_id    char(10)     NOT NULL ,
  quantity   int          NOT NULL DEFAULT 1,
  item_price decimal(8,2) NOT NULL 
);

在这个例子中,这一列的描述增加了 DEFAULT 1,指示 DBMS,如果不给出数值则使用数值 1。
默认值经常用于日期或时间戳列。例如,通过指定引用系统日期的函数 或变量, 将系统日期 用作默认日期。

在前面的课程我们提到,NULL 值就是没有值或缺值。允许 NULL 值的列允许在插入行时不给出该列的值。当指定列为 NOT NULL 时,如果有设定默认值,在插入行时,允许不给出该列的值。当指定列为 NOT NULL 时,如果没有设定默认值,在插入或更新行时,该列必须有值。如果不给出值,在插入的时候会报错。

在选择使用 DEFAULT 值还是 NULL 时,我们更倾向使用 DEFAULT 值。

更改表

在需要更新表定义时,我们可以使用 ALTER TABLE 语句。
使用 ALTER TABLE 更改表结构,必须给出下面的信息:

  • ALTER TABLE 之后给出要更改的表名(该表必须存在,否则将出错);
  • 列出要做哪些更改。
    例如,我们要给 vendors 表增加一个 vend_phone 列。
ALTER TABLE Vendors 
ADD vend_phone CHAR(20);

删除刚才增加的列:

ALTER TABLE Vendors 
DROP COLUMN vend_phone;

复杂的表结构更改一般需要手动删除过程,它涉及以下步骤:

  • 用新的列布局创建一个新表;
  • 使用 INSERT SELECT 语句从旧表复制数据到新表。
  • 检验包含所需数据的新表;
  • 重命名旧表(如果确定,可以删除它);
  • 用旧表原来的名字重命名新表;
  • 根据需要,重新创建触发器、存储过程、索引和外键。

使用 ALTER TABLE 要极为小心,应该在进行改动前做完整的备份(表结构和数据的备份)。数据库表的更改不能撤销,如果增加了不需要的列,也许无法删除它们。类似地,如果删除了不应该删除的列,可能会丢失该列中的所有数据。

删除表

删除表:
删除表(删除整个表而不是其内容)非常简单,使用 DROP TABLE 语句 即可:
例如:

DROP TABLE CustCopy;

删除表没有确认,也不能撤销,执行这条语句将永远删除该表。

这一课介绍了几条新的 SQL 语句。CREATE TABLE 用来创建新表,ALTER TABLE 用来更改表列(或其他诸如约束或索引等对象),而 DROP TABLE 用来完整地删除一个表。这些语句必须小心使用,并且应该在备份后使用。

备注:示例中用到的表和数据可以通过链接(https://github.com/songw/sql)下载。

本系列目录:
零基础入门 SQL 系列之(一)查询数据
零基础入门 SQL 系列之(二)排序
零基础入门 SQL 系列之(三)过滤数据
零基础入门 SQL 系列之(四)内置函数
零基础入门 SQL 系列之(五)数据汇总
零基础入门 SQL 系列之(六)表连接
零基础入门 SQL 系列之(七)组合
零基础入门 SQL 系列之(八)插入、更新、删除
零基础入门 SQL 系列之(九)创建和操作表
零基础入门 SQL 系列之(十)视图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值