【网学网提醒】:网学会员,鉴于大家对易忘sql整理sql_study十分关注,会员在此为大家搜集整理了“易忘sql整理sql_study”一文,供大家参考学习!
SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo
FROMPersons,Orders
WHEREPersons.Id_P=Orders.Id_P
SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo
FROMPersons
INNERJOINOrders
ONPersons.Id_P=Orders.Id_P
ORDERBYPersons.LastName
除了我们在上面的例子中使用的INNERJOIN(内连接),我们还可以其他几种连接。
下面列出了您可以使用的JOIN类型,以及它们之间的差异。
JOIN:如果表中有至少一个匹配,则返回行
LEFTJOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHTJOIN:即使左表中没有匹配,也从右表返回所有的行
FULLJOIN:只要其中一个表中存在匹配,就返回行
---------SELECTINTO语句--------------
SELECTINTO语句从一个表中选取数据,然后把数据插入另一个表中。
SELECTINTO语句常用于创建表的备份复件或者用于对记录进行存档。
SQLSELECTINTO语法
您可以把所有的列插入新表:
SELECT*
INTOnew_table_name[INexternaldatabase]
FROMold_tablename
或者只把希望的列插入新表:
SELECTcolumn_name(s)
INTOnew_table_name[INexternaldatabase]
FROMold_tablename
SELECT*
INTOPersonsIN'Backup.mdb'
FROMPersons
------------------CREATEDATABASE用于创建数据库。----------------
SQLCREATEDATABASE语法
CREATEDATABASEdatabase_name
--------unique--------
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_PintNOTNULLUNIQUE,
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
ADDC
ONSTRAINTuc_PersonIDUNIQUE(P_Id,LastName)
撤销UNIQUE约束
如需撤销UNIQUE约束,请使用下面的SQL:
MySQL:
ALTERTABLEPersons
DROPINDEXuc_PersonID
SQLServer/Oracle/MSAccess:
ALTERTABLEPersons
DROPCONSTRAINTuc_PersonID
-----------Constraints----------
SQL约束
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过CREATETABLE语句),或者在表创建之后也可以(通过ALTERTABLE语句)。
我们将主要探讨以下几种约束:
NOTNULL
UNIQUE
PRIMARYKEY
FOREIGNKEY
CHECK
DEFAULT
------------PRIMARY----------------
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_PintNOTNULLPRIMARYKEY,
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
------------FOREIGN------------
FOREIGNKEY约束用于预防破坏表之间连接的动作。
FOREIGNKEY约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
SQLFOREIGNKEYConstraintonCREATETABLE
下面的SQL在"Orders"表创建时为"Id_P"列创建FOREIGNKEY:
MySQL:
CREATETABLEOrders
(
O_IdintNOTNULL,
OrderNointNOTN
ULL,
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_PerOrders
FOREIGNKEY(Id_P)
REFERENCESPersons(Id_P)
撤销FOREIGNKEY约束
如需撤销FOREIGNKEY约束,请使用下面的SQL:
MySQL:
ALTERTABLEOrders
DROPFOREIGNKEYfk_PerOrders
SQLServer/Oracle/MSAccess:
ALTERTABLEOrders
DROPCONSTRAINTfk_PerOrders
--------------CHECK---------------------
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_PintNOTNULLCHECK(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
--------DEFAULT-----------
SQLDEFAULT约束
DEFAULT约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新纪录。
SQLDEFAULTConstraintonCREATETABLE
下面的SQL在"Persons"表创建时为"City"列创建DEFAULT约束:
MySQL/SQLServer/Oracle/MSAccess:
CREATETABLEPersons
(
Id_PintNOTNULL,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255)DEFAULT'Sandnes'
)
通过使用类似GETDATE()这样的函数,DEFAULT约束也可以用于插入系统值:
CREATETABLEOrders
(
Id_OintNOTNULL,
OrderNointNOTNULL,
Id_Pint,
OrderDatedateDEFAULTGETDATE()
)
SQLDEFAULTConstraintonALTERTABLE
如果在表已存在的情况下为"City"列创建DEFAULT约束,请使用下面的SQL:
MySQL:
ALTERTABLEPersons
ALTERCitySETDEFAULT'SANDNES'
SQLServer/Oracle/MSAccess:
ALTERTABLEPersons
ALTERCOLUMNCitySETDEFAULT'SANDNES'
撤销DEFAULT约束
如需撤销DEFAULT约束,请使用下面的SQL:
MySQL:
ALTERTABLEPersons
ALTERCityDROPDEFAULT
SQLServer/Oracle/MSAccess:
ALTERTABLEPersons
ALTERCOLUMNCityDROPDEFAULT
---------ALTERTABLE语句------------------
ALTERTABLE语句用于在已有的表中添加、修改或删除列。
SQLALTERTABLE语法
如需在表中添加列,请使用下列语法:
ALTERTABLEtable_name
ADDcolumn_namedatatype
要删除表中的列,请使用下列语法:
ALTERTABLEtable_name
DROPCOLUMNcolumn_name
注释:某些数据库系统不允许这种在数据库表中删除列的方式(DROPCOLUMNcolumn_name)。
要改变表中列的数据类型,请使用下列语法:
ALTERTABLEtable_name
ALTERCOLUMNcolumn_namedatatype
----------------
我们必须使用ISNULL和ISNOTNULL操作符。