网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL教程6

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

    SQL约束
    约束用于限制加入表的数据的类型。
    可以在创建表时规定约束(通过CREATETABLE语句),或者在表创建之后也可以(通过ALTERTABLE语句)。
    我们将主要探讨以下几种约束:
    ?NOTNULL?UNIQUE?PRIMARYKEY?FOREIGNKEY?CHECK?DEFAULT
    SQLNOTNULL约束
    NOTNULL约束强制列不接受NULL值。
    NOTNULL约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新纪录或者更新记录。
    下面的SQL语句强制"Id_P"列和"LastName"列不接受NULL值:
    CREATETABLEPersons(Id_Pint
    NOTNULL,NOTNULL,
    LastNamevarchar(255)
    FirstNamevarchar(255),Addressvarchar(255),Cityvarchar(255))
    SQLUNIQUE约束
    UNIQUE约束唯一标识数据库表中的每条记录。
    UNIQUE和PRIMARYKEY约束均为列或列集合提供了唯一性的保证。
    PRIMARYKEY拥有自动定义的UNIQUE约束。
    请注意,每个表可以有多个UNIQUE约束,但是每个表只能有一个PRIMARYKEY约束。
    SQLUNIQUEConstraintonCREATETABLE
    下面的SQL在"Persons"表创建时在"Id_P"列创建UNIQUE约束:
    MySQL:
    CREATETABLEPersons(Id_PintNOTNULL,LastNamevarchar(255)NOTNULL,FirstNamevarchar(255),Addressvarchar(255),Cityvarchar(255),
    UNIQUE(Id_P)
    )
    SQLServer/Oracle/MSAccess:
    CREATETABLEPersons(Id_PintNOTNULL
    UNIQUE,
    LastNamevarchar(255)NOTNULL,FirstNamevarchar(255),Addressvarchar(255),Cityvarchar(255))
    如果需要命名UNIQUE约束,以及为多个列定义UNIQUE约束,请使用下面的SQL语法:
    MySQL/SQLServer/Oracle/MSAccess:
    CREATETABLEPersons(Id_PintNOTNULL,LastNamevarchar(255)NOTNULL,FirstNamevarchar(255),Addressvarchar(255),
    Cityvarchar(255),
    CONSTRAINTuc_PersonIDUNIQUE(Id_P,LastName)
    )
    SQLUNIQUEConstraintonALTERTABLE
    当表已被创建时,如需在"P_Id"列创建UNIQUE约束,请使用下列SQL:
    MySQL/SQLServer/Oracle/MSAccess:
    ALTERTABLEPersons
    ADDUNIQUE(P_Id)
    如需命名UNIQUE约束,并定义多个列的UNIQUE约束,请使用下面的SQL语法:
    MySQL/SQLServer/Oracle/MSAccess:
    ALTERTABLEPersons
    ADDCONSTRAINTuc_PersonIDUNIQUE(P_Id,LastName)
    撤销UNIQUE约束
    如需撤销UNIQUE约束,请使用下面的SQL:
    MySQL:
    ALTERTABLEPersons
    DROPINDEXuc_PersonID
    SQLServer/Oracle/MSAccess:
    ALTERTABLEPersons
    DROPCONSTRAINTuc_PersonID
    SQLPRIMARYKEY约束
    PRIMARYKEY约束唯一标识数据库表中的每条记录。
    主键必须包含唯一的值。
    主键列不能包含NULL值。
    每个表应该都一个主键,并且每个表只能有一个主键。
    SQLPRIMARYKEYConstraintonCREATETABLE
    下面的SQL在"Persons"表创建时在"Id_P"列创建PRIMARYKEY约束:
    MySQL:
    CREATETABLEPersons(Id_PintNOTNULL,LastNamevarchar(255)NOTNULL,FirstNamevarchar(255),Addressvarchar(255),Cityvarchar(255),
    PRIMARYKEY(Id_P)
    )
    SQLServer/Oracle/MSAccess:
    CREATETABLEPersons(Id_PintNOTNULL
    PRIMARYKEY,
    LastNamevarchar(255)NOTNULL,FirstNamevarchar(255),Addressvarchar(255),Cityvarchar(255))
    如果需要命名PRIMARYKEY约束,以及为多个列定义PRIMARYKEY约束,请使用下面的SQL语法:
    MySQL/SQLServer/Oracle/MSAccess:
    CREATETABLEPersons(Id_PintNOTNULL,LastNamevarchar(255)NOTNULL,FirstNamevarchar(255),
    Addressvarchar(255),Cityvarchar(255),
    CONSTRAINTuc_PersonIDPRIMARYKEY(Id_P,LastName)
    )
    SQLPRIMARYKEYConstraintonALTERTABLE
    如果在表已存在的情况下为"Id_P"列创建PRIMARYKEY约束,请使用下面的SQL:
    MySQL/SQLServer/Oracle/MSAccess:
    ALTERTABLEPersons
    ADDPRIMARYKEY(Id_P)
    如果需要命名PRIMARYKEY约束,以及为多个列定义PRIMARYKEY约束,请使用下面的SQL语法:
    MySQL/SQLServer/Oracle/MSAccess:
    ALTERTABLEPersons
    ADDCONSTRAINTpk_PersonIDPRIMARYKEY(Id_P,LastName)
    注释:注释:如果您使用ALTERTABLE语句添加主键,必须把主键列声明为不包含NULL值(在表首次创建时)。
    撤销PRIMARYKEY约束
    如需撤销PRIMARYKEY约束,请使用下面的SQL:
    MySQL:
    ALTERTABLEPersons
    DROPPRIMARYKEY
    SQLServer/Oracle/MSAccess:
    ALTERTABLEPersons
    DROPCONSTRAINTpk_PersonID
    SQLFOREIGNKEY约束
    一个表中的FOREIGNKEY指向另一个表中的PRIMARYKEY。
    让我们通过一个例子来解释外键。请看下面两个表:
    "Persons"表:
    Id_P
    LastName
    FirstName
    Address
    City
    1
    Adams
    John
    OxfordStreet
    London
    2
    Bush
    George
    FifthAvenue
    NewYork
    3
    Carter
    Thomas
    ChanganStreet
    Beijing
    "Orders"表:
    Id_O
    OrderNo
    Id_P
    1
    77895
    3
    2
    44678
    3
    3
    22456
    1
    4
    24562
    1
    请注意,"Orders"中的"Id_P"列指向"Persons"表中的"Id_P"列。
    "Persons"表中的"Id_P"列是"Persons"表中的PRIMARYKEY。
    "Orders"表中的"Id_P"列是"Orders"表中的FOREIGNKEY。
    FOREIGNKEY约束用于预防破坏表之间连接的动作。
    FOREIGNKEY约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
    SQLFOREIGNKEYConstraintonCREATETABLE
    下面的SQL在"Orders"表创建时为"Id_P"列创建FOREIGNKEY:
    MySQL:
    CREATETABLEOrders(O_IdintNOTNULL,OrderNointNOTNULL,Id_Pint,
    PRIMARYKEY(O_Id),
    FOREIGNKEY(Id_P)REFERENCESPersons(Id_P)
    )
    SQLServer/Oracle/MSAccess:
    CREATETABLEOrders(O_IdintNOTNULLPRIMARYKEY,OrderNointNOTNULL,
    Id_PintFOREIGNKEYREFERENCESPersons(Id_P)
    )
    如果需要命名FOREIGNKEY约束,以及为多个列定义FOREIGNKEY约束,请使用下面的SQL语法:
    MySQL/SQLServer/Oracle/MSAccess:
    CREATETABLEOrders(O_IdintNOTNULL,OrderNointNOTNULL,Id_Pint,PRIMARYKEY(O_Id),
    CONSTRAINTfk_PerOrdersFOREIGNKEY(Id_P)REFERENCESPersons(Id_P)
    )
    SQLFOREIGNKEYConstraintonALTERTABLE
    如果在"Orders"表已存在的情况下为"Id_P"列创建FOREIGNKEY约束,请使用下面的SQL:
    MySQL/SQLServer/Oracle/MSAccess:
    ALTERTABLEOrders
    ADDFOREIGNKEY(Id_P)REFERENCESPersons(Id_P)
    如果需要命名FOREIGNKEY约束,以及为多个列定义FOREIGNKEY约束,请使用下面的SQL语法:
    MySQL/SQLServer/Oracle/MSAccess:
    ALTERTABLEOrders
    ADDCONSTRAINTfk_PerOrdersFOREIGNKEY(Id_P)REFERENCESPersons(Id_P)
    撤销FOREIGNKEY约束
    如需撤销FOREIGNKEY约束,请使用下面的SQL:
    MySQL:
    ALTERTABLEOrders
    DROPFOREIGNKEYfk_PerOrders
    SQLServer/Oracle/MSAccess:
    ALTERTABLEOrders
    DROPCONSTRAINTfk_PerOrders
    SQLCHECK约束
    CHECK约束用于限制列中的值的范围。
    如果对单个列定义CHECK约束,那么该列只允许特定的值。
    如果对一个表定义CHECK约束,那么此约束会在特定的列中对值进行限制。
    SQLCHECKConstraintonCREATETABLE
    下面的SQL在"Persons"表创建时为"Id_P"列创建CHECK约束。CHECK约束规定"Id_P"列必须只包含大于0的整数。
    MySQL:
    CREATETABLEPersons(Id_PintNOTNULL,LastNamevarchar(255)NOTNULL,
    FirstNamevarchar(255),Addressvarchar(255),Cityvarchar(255),
    CHECK(Id_P>0)
    )
    SQLServer/Oracle/MSAccess:
    CREATETABLEPersons(Id_PintNOTNULL
    CHECK(Id_P>0),
    LastNamevarchar(255)NOTNULL,FirstNamevarchar(255),Addressvarchar(255),Cityvarchar(255))
    如果需要命名CHECK约束,以及为多个列定义CHECK约束,请使用下面的SQL语法:
    MySQL/SQLServer/Oracle/MSAccess:
    CREATETABLEPersons(Id_PintNOTNULL,LastNamevarchar(255)NOTNULL,FirstNamevarchar(255),Addressvarchar(255),Cityvarchar(255),
    CONSTRAINTchk_PersonCHECK(Id_P>0ANDCity='Sandnes')
    )
    SQLCHECKConstraintonALTERTABLE
    如果在表已存在的情况下为"Id_P"列创建CHECK约束,请使用下面的SQL:
    MySQL/SQLServer/Oracle/MSAccess:
    ALTERTABLEPersons
    ADDCHECK(Id_P>0)
    如果需要命名CHECK约束,以及为多个列定义CHECK约束,请使用下面的SQL语法:
    MySQL/SQLServer/Oracle/MSAccess:
    ALTERTABLEPersons
    ADDCONSTRAINTchk_PersonCHECK(Id_P>0ANDCity='Sandnes')
    撤销CHECK约束
    如需撤销CHECK约束,请使用下面的SQL:
    SQLServer/Oracle/MSAccess:
    ALTERTABLEPersons
    DROPCONSTRAINTchk_Person
    
  • 上一篇资讯: sql教程完整版(1)
  • 下一篇资讯: sql教程
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师