• SQL学习笔记8


    SQL FOREIGN KEY 约束

    一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。

    FOREIGN KEY 约束用于预防破坏表之间连接的行为。

    FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

    下面的 SQL 在 "Orders" 表创建时在 "P_Id" 列上创建 FOREIGN KEY 约束:

    MySQL:

    CREATE TABLE Orders
    (
    O_Id int NOT NULL,
    OrderNo int NOT NULL,
    P_Id int,
    PRIMARY KEY (O_Id),
    FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
    )

    SQL Server / Oracle / MS Access:

    CREATE TABLE Orders
    (
    O_Id int NOT NULL PRIMARY KEY,
    OrderNo int NOT NULL,
    P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
    )

    如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法:

    MySQL / SQL Server / Oracle / MS Access:

    CREATE TABLE Orders
    (
    O_Id int NOT NULL,
    OrderNo int NOT NULL,
    P_Id int,
    PRIMARY KEY (O_Id),
    CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
    REFERENCES Persons(P_Id)
    )
     
     
    *****************************************************************************************************************************************************************************************
     
     

    ALTER TABLE 时的 SQL FOREIGN KEY 约束

    当 "Orders" 表已被创建时,如需在 "P_Id" 列创建 FOREIGN KEY 约束,请使用下面的 SQL:

    MySQL / SQL Server / Oracle / MS Access:

    ALTER TABLE Orders
    ADD FOREIGN KEY (P_Id)
    REFERENCES Persons(P_Id)

    如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法:

    MySQL / SQL Server / Oracle / MS Access:

    ALTER TABLE Orders
    ADD CONSTRAINT fk_PerOrders
    FOREIGN KEY (P_Id)
    REFERENCES Persons(P_Id)


    撤销 FOREIGN KEY 约束

    如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:

    MySQL:

    ALTER TABLE Orders
    DROP FOREIGN KEY fk_PerOrders

    SQL Server / Oracle / MS Access:

    ALTER TABLE Orders
    DROP CONSTRAINT fk_PerOrders
     
     
    *****************************************************************************************************************************************************************************************
     

    CHECK 约束用于限制列中的值的范围。

    如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

    如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。

    *****************************************************************************************************************************************************************************************

    DEFAULT 约束用于向列中插入默认值。

    如果没有规定其他的值,那么会将默认值添加到所有的新记录。

    通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值:

    CREATE TABLE Orders
    (
        O_Id int NOT NULL,
        OrderNo int NOT NULL,
        P_Id int,
        OrderDate date DEFAULT GETDATE()
    )

    ALTER TABLE 时的 SQL DEFAULT 约束

    当表已被创建时,如需在 "City" 列创建 DEFAULT 约束,请使用下面的 SQL:

    MySQL:

    ALTER TABLE Persons
    ALTER City SET DEFAULT 'SANDNES'

    SQL Server / MS Access:

    ALTER TABLE Persons
    ADD CONSTRAINT ab_c DEFAULT 'SANDNES' for City

    Oracle:

    ALTER TABLE Persons
    MODIFY City DEFAULT 'SANDNES'




    撤销 DEFAULT 约束

    如需撤销 DEFAULT 约束,请使用下面的 SQL:

    MySQL:

    ALTER TABLE Persons
    ALTER City DROP DEFAULT

    SQL Server / Oracle / MS Access:

    ALTER TABLE Persons
    ALTER COLUMN City DROP DEFAULT


    ****************************************************************************************************************************

    CREATE INDEX 语句用于在表中创建索引。

    在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

    SQL CREATE INDEX 语法

    在表上创建一个简单的索引。允许使用重复的值:

    CREATE INDEX index_name
    ON table_name (column_name)

    SQL CREATE UNIQUE INDEX 语法

    在表上创建一个唯一的索引。不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。Creates a unique index on a table. Duplicate values are not allowed:

    CREATE UNIQUE INDEX index_name
    ON table_name (column_name)

    注释:用于创建索引的语法在不同的数据库中不一样。因此,检查您的数据库中创建索引的语法。


    ***************************************************************************************************************************************************

    DROP INDEX 语句

    DROP INDEX 语句用于删除表中的索引。

    用于 MS Access 的 DROP INDEX 语法:

    DROP INDEX index_name ON table_name

    用于 MS SQL Server 的 DROP INDEX 语法:

    DROP INDEX table_name.index_name

    用于 DB2/Oracle 的 DROP INDEX 语法:

    DROP INDEX index_name

    用于 MySQL 的 DROP INDEX 语法:

    ALTER TABLE table_name DROP INDEX index_name
     

    DROP TABLE 语句

    DROP TABLE 语句用于删除表。

    DROP TABLE table_name
    
    

    DROP DATABASE 语句

    DROP DATABASE 语句用于删除数据库。

    DROP DATABASE database_name
    
    

    TRUNCATE TABLE 语句

    如果我们仅仅需要删除表内的数据,但并不删除表本身,那么我们该如何做呢?

    请使用 TRUNCATE TABLE 语句:

    TRUNCATE TABLE table_name


    ****************************************************************************************************************************************************

    SQL ALTER TABLE 语法

    如需在表中添加列,请使用下面的语法:

    ALTER TABLE table_name
    ADD column_name datatype

    如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):

    ALTER TABLE table_name
    DROP COLUMN column_name

    要改变表中列的数据类型,请使用下面的语法:

    SQL Server / MS Access:

    ALTER TABLE table_name
    ALTER COLUMN column_name datatype

    My SQL / Oracle:

    ALTER TABLE table_name
    MODIFY COLUMN column_name datatype

    Oracle 10G 之后版本:

    ALTER TABLE table_name
    MODIFY column_name datatype;
     
  • 相关阅读:
    android技能树
    BitmapFactory 读取图片方法总结
    如何利用SecureCRT连接Ubuntu12.0.4
    Ubuntu 12.04如何从登录界面登录root
    ubuntu中vi在编辑状态下方向键不能用的解决
    在ubuntu12.0.4上搭建samba服务器以实现文件共享
    怎么利用ultraISO对一个文件夹制作ISO镜像
    VMware网络选项分析
    在vmware 6.5+ubuntu12.04上安装VMware tools出现问题的分析
    在ubuntu中获得root权限
  • 原文地址:https://www.cnblogs.com/chickenwrap/p/9967110.html
Copyright © 2020-2023  润新知