我是靠谱客的博主 忧郁黄豆,最近开发中收集的这篇文章主要介绍SQL 创建、更新、删除表、重命表名SQL 创建、更新、删除表、重命表名,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

SQL 创建、更新、删除表、重命表名

一、创建表:

  • SQL不仅用于表数据操纵,还用来执行数据库和表的所有操作,包括表本身的创建和处理。

  • 一般有两种创建表的方法:

    1.多数DBMS都具有交互式创建和管理数据库表的工具。(可视化工具)

    2.表也可以直接用SQL语句操纵。(原生SQL语句)

  • 用程序创建表,可以使用SQL的CREATE TABLE语句

    • 需要注意的是,使用交互式工具时实际上就是使用SQL语句。
  • 注意:语法差别

    • 再不同的SQL实现中,CREATE TABLE语句的语法可能有所不同。

1.1:表创建基础:

  • 利用CREATE TABLE创建表,必须给出下列信息:

    1.新表的名字,再关键字CREATE TABLE 之后给出

    2.表列的名字和定义,用逗号分隔

    3.有的DBMS还要求指定表的位置;

    CREATE TABLE Products_01(
    prod_id
    CHAR(10)
    NOT NULL,
    vend_id
    CHAR(10)
    NOT NULL,
    prod_name CHAR(10) NOT NULL,
    Prod_price
    DECIMAL(8,2) NOT NULL,
    prod_desc
    VARCHAR(1000)
    NULL
    );
    

    查看一下新创建的表:

    mysql> show tables;
    +------------------+
    | Tables_in_fe_cow |
    +------------------+
    | custcopy
    |
    | customers
    |
    | orderitems
    |
    | orders
    |
    | products
    |
    | products_01
    |
    # 上述新创建的表
    | vendors
    |
    +------------------+
    7 rows in set (0.00 sec)
    
    • 表名紧跟CREATE TABLE关键字
    • 实际表的定义(所有列)括再圆括号中,各列之间用逗号分隔。这个表由5列组成。
    • 每列的定义以列名(它再表中必须是唯一的)开始,后跟列的数据类型
    • 整条语句以圆括号后的分号结束。
  • 注意:语句格式化

    • SQL语句中忽略的空格。语句可以再一个长行上输入,也可以分成许多行,它们没有差别。
  • 提示:替换现有的表

    • 再创建新的表时,指定表名必须不存在,否则会出错。

1.2:使用NULL值

  • NULL值就是没有值或缺值
  • 允许NULL值的列也允许再插入行时不给出该列的值。不允许NULL值的列不接收没有列值的行。
  • 每个表列要么是NULL列,要么是NOT NULL列,这种状态再创建时由表的定义规定
  • 注意:指定NULL
    • 再不指定NOT NULL 时,多数DBMS认为指定的是NULL,但不是所有的DBMS都这样。
  • 注意:主键和NULL值得
    • 主键是唯一标识表中每一行的列。只有不允许NULL值的列可作为主键,允许NULL值的列不能作为唯一标识。
  • 注意:理解NULL
    • 不要把NULL值与空字符串相混淆。
    • NULL值没有值,不是空字符串。如果指定’ '(两个单引号,其间没有字符),这再NOT NULL列中是允许的。空字符串是有效值,它不是无值。
    • NULL值用关键字NULL而不是空字符串指定

1.3:指定默认值:

  • SQL允许指定默认值,再插入行时如果不给出值,DBMS将自动采用默认值。

  • 默认值再CREATE TABLE 语句的列定义中用关键字DEFAULT指定

    CREATE TABLE OrderItems_01 (
    order_num
    INTEGER NOT NULL,
    order_item INTEGER NOT NULL,
    prod_id
    CHAR(10) NOT NULL,
    quantity
    INTEGER
    NOT NULL
    DEFAULT 1,
    item_Price DECIMAL(8,2) NOT
    NULL
    );
    
    • 表中列名为quantity为订单中每个物品的数量。这个表中,列的描述增加了DEFAULT 1,指示DBMS,如果不给出数量,则使用数量1。
  • 默认值经常用于日期或时间戳列

    • 例如:通过指定引用系统日期的函数或变量,将系统日期用作默认日期。
      • MySQL用户指定DEFAULT CURRENT_DATE()。
  • 提示:使用DEFAULT而不是NULL值

    • 建议使用DEFAULT而不是NULL列,对于用于计算或数据分组的列更是如此。

二、更新表:

  • 更新表的定义,可以使用ALTER TABLE语句。

  • 使用ALTER TABLE 时需要考虑的事情:

    1.不要再表中包含数据时对其进行更新。

    2.应该再表的设计过程中充分考虑未来可能的需求,避免今后对表的结构做大改动。

    3.所有DBMS都允许给现有的表增加列,不过对所增加列的数据类型(以及NULL和DEFAULT的使用)有所限制。

    • 可以看出,对已有表做更改既复杂又不统一。
  • 使用ALTER TABLE 更改表结构,必须给出下面的信息:

    1.再ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错)。

    2.列出要做哪些更改。

  • 下面举个栗子:

    ALTER TABLE Orderitems_01[表名]
    ADD[增加]
    total_price[新的列名]
    DECIMAL(10,2)[数据类型];
    
    mysql> desc Orderitems_01;
    +-------------+---------------+------+-----+---------+-------+
    | Field
    | Type
    | Null | Key | Default | Extra |
    +-------------+---------------+------+-----+---------+-------+
    | order_num
    | int(11)
    | NO
    |
    | NULL
    |
    |
    | order_item
    | int(11)
    | NO
    |
    | NULL
    |
    |
    | prod_id
    | char(10)
    | NO
    |
    | NULL
    |
    |
    | quantity
    | int(11)
    | NO
    |
    | 1
    |
    |
    | item_Price
    | decimal(8,2)
    | NO
    |
    | NULL
    |
    |
    | total_price | decimal(10,2) | YES
    |
    | NULL
    |
    |
    # 新增加的
    +-------------+---------------+------+-----+---------+-------+
    6 rows in set (0.00 sec)
    
    • 这条语句给Orderitems_01表增加一个名为total_price的列,其数据类型为DECIMAL(10,2)。
  • 更改或删除列、增加约束或增加键,这些操作也使用类似的语法

  • 注意:ALTER TABLE 和 SQLite

    • SQLite对使用ALTER TABLE执行的操作有所限制。最重要的一个限制是,它不支持使用ALTER TABLE 定义主键和外键,这些必须再最初创建表时指定
  • 特别注意:小心使用ALTER TABLE

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

三、删除表:

  • 删除表(删除整个表而不是其内容),使用DROP TABLE语句

    DROP
    TABLE
    CustCopy[表名];
    
    • 这条语句删除Custcopy表。删除表没有确认,也不能撤销,执行这条语句将永久删除该表
  • 提示:使用关系规则防止意外删除

    • 许多DBMS允许强制实施有关规则,防止删除与其他相关联的表。再实施这些规则时,如果对某个表发布一条DROP TABLE语句,且该表是某个关系的组成部分,则DBMS将阻止这条语句执行,直到该关系被删除为止
    • 如果允许,应该启用这些选项,它能防止意外删除有用的表

四、重命名表:

  • 每个DBMS对表的重命名的支持有所不同。对于DB2、Mari-aDB、MySQL、Oracle和PostgreSQL用户使
    RENAME语句

  • 所有重命名操作的基本语法都要求指定旧表名和新表名

    RENAME TABLE
    Orders_01[原表名]
    TO
    New_orders[新表名];
    
    mysql> show tables;
    +------------------+
    | Tables_in_fe_cow |
    +------------------+
    | customers
    |
    | new_orderitems
    |
    | new_orders
    |
    #
    上述重命名的表名
    | orderitems
    |
    | orders
    |
    | products
    |
    | products_01
    |
    | vendors
    |
    +------------------+
    8 rows in set (0.00 sec)
    

五、总结:

  • 创建新表:CREATE TABLE

  • 更改表列:ALTER TABLE

  • 删除表:DROP TABLE

  • 重命名表名:RENAME TABLE

  • 这些语句必须小心使用,并且应该再备份后使用。

最后

以上就是忧郁黄豆为你收集整理的SQL 创建、更新、删除表、重命表名SQL 创建、更新、删除表、重命表名的全部内容,希望文章能够帮你解决SQL 创建、更新、删除表、重命表名SQL 创建、更新、删除表、重命表名所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部