SQL数据库函数02Word文件下载.docx
- 文档编号:21312455
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:42
- 大小:32.16KB
SQL数据库函数02Word文件下载.docx
《SQL数据库函数02Word文件下载.docx》由会员分享,可在线阅读,更多相关《SQL数据库函数02Word文件下载.docx(42页珍藏版)》请在冰豆网上搜索。
Thomas
ChanganStreet
Beijing
Orders"
Id_O
OrderNo
77895
44678
22456
4
24562
5
34764
65
右连接(RIGHTJOIN)实例
现在,我们希望列出所有的定单,以及定购它们的人-如果有的话。
您可以使用下面的SELECT语句:
SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo
FROMPersons
RIGHTJOINOrders
ONPersons.Id_P=Orders.Id_P
ORDERBYPersons.LastName
结果集:
RIGHTJOIN关键字会从右表(Orders)那里返回所有的行,即使在左表(Persons)中没有匹配的行。
SQLFULLJOIN关键字
只要其中某个表存在匹配,FULLJOIN关键字就会返回行。
FULLJOIN关键字语法
FULLJOINtable_name2
在某些数据库中,FULLJOIN称为FULLOUTERJOIN。
全连接(FULLJOIN)实例
现在,我们希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。
FULLJOINOrders
FULLJOIN关键字会从左表(Persons)和右表(Orders)那里返回所有的行。
如果"
中的行在表"
中没有匹配,或者如果"
中没有匹配,这些行同样会列出。
SQLUNION操作符
UNION操作符用于合并两个或多个SELECT语句的结果集。
请注意,UNION内部的SELECT语句必须拥有相同数量的列。
列也必须拥有相似的数据类型。
同时,每条SELECT语句中的列的顺序必须相同。
SQLUNION语法
SELECTcolumn_name(s)FROMtable_name1
UNION
SELECTcolumn_name(s)FROMtable_name2
默认地,UNION操作符选取不同的值。
如果允许重复的值,请使用UNIONALL。
SQLUNIONALL语法
UNIONALL
另外,UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。
下面的例子中使用的原始表:
Employees_China:
E_ID
E_Name
01
Zhang,Hua
02
Wang,Wei
03
Carter,Thomas
04
Yang,Ming
Employees_USA:
Adams,John
Bush,George
Gates,Bill
使用UNION命令
实例
列出所有在中国和美国的不同的雇员名:
SELECTE_NameFROMEmployees_China
SELECTE_NameFROMEmployees_USA
结果
这个命令无法列出在中国和美国的所有雇员。
在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。
UNION命令只会选取不同的值。
UNIONALL命令和UNION命令几乎是等效的,不过UNIONALL命令会列出所有的值。
SQLStatement1
SQLStatement2
使用UNIONALL命令
实例:
列出在中国和美国的所有的雇员:
SQLSELECTINTO语句可用于创建表的备份复件。
SELECTINTO语句
SELECTINTO语句从一个表中选取数据,然后把数据插入另一个表中。
SELECTINTO语句常用于创建表的备份复件或者用于对记录进行存档。
SQLSELECTINTO语法
您可以把所有的列插入新表:
SELECT*
INTOnew_table_name[INexternaldatabase]
FROMold_tablename
或者只把希望的列插入新表:
SQLSELECTINTO实例-制作备份复件
下面的例子会制作"
表的备份复件:
INTOPersons_backup
IN子句可用于向另一个数据库中拷贝表:
INTOPersonsIN'
Backup.mdb'
如果我们希望拷贝某些域,可以在SELECT语句后列出这些域:
SELECTLastName,FirstName
SQLSELECTINTO实例-带有WHERE子句
我们也可以添加WHERE子句。
下面的例子通过从"
表中提取居住在"
Beijing"
的人的信息,创建了一个带有两个列的名为"
Persons_backup"
的表:
SELECTLastName,Firstname
WHERECity='
Beijing'
SQLSELECTINTO实例-被连接的表
从一个以上的表中选取数据也是可以做到的。
下面的例子会创建一个名为"
Persons_Order_Backup"
的新表,其中包含了从Persons和Orders两个表中取得的信息:
SELECTPersons.LastName,Orders.OrderNo
INTOPersons_Order_Backup
INNERJOINOrders
CREATEDATABASE语句
CREATEDATABASE用于创建数据库。
SQLCREATEDATABASE语法
CREATEDATABASEdatabase_name
SQLCREATEDATABASE实例
现在我们希望创建一个名为"
my_db"
的数据库。
我们使用下面的CREATEDATABASE语句:
CREATEDATABASEmy_db
可以通过CREATETABLE来添加数据库表。
CREATETABLE语句
CREATETABLE语句用于创建数据库中的表。
SQLCREATETABLE语法
CREATETABLE表名称
(
列名称1数据类型,
列名称2数据类型,
列名称3数据类型,
....
)
数据类型(data_type)规定了列可容纳何种数据类型。
下面的表格包含了SQL中最常用的数据类型:
数据类型
描述
∙integer(size)
∙int(size)
∙smallint(size)
∙tinyint(size)
仅容纳整数。
在括号内规定数字的最大位数。
∙decimal(size,d)
∙numeric(size,d)
容纳带有小数的数字。
size"
规定数字的最大位数。
d"
规定小数点右侧的最大位数。
char(size)
容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。
在括号中规定字符串的长度。
varchar(size)
容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。
在括号中规定字符串的最大长度。
date(yyyymmdd)
容纳日期。
SQLCREATETABLE实例
本例演示如何创建名为"
Person"
的表。
该表包含5个列,列名分别是:
Id_P"
、"
LastName"
FirstName"
Address"
以及"
City"
:
CREATETABLEPersons
Id_Pint,
LastNamevarchar(255),
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255)
Id_P列的数据类型是int,包含整数。
其余4列的数据类型是varchar,最大长度为255个字符。
空的"
表类似这样:
可使用INSERTINTO语句向空表写入数据。
SQL约束
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过CREATETABLE语句),或者在表创建之后也可以(通过ALTERTABLE语句)。
我们将主要探讨以下几种约束:
∙NOTNULL
∙UNIQUE
∙PRIMARYKEY
∙FOREIGNKEY
∙CHECK
∙DEFAULT
在下面的章节,我们会详细讲解每一种约束。
SQLNOTNULL约束
NOTNULL约束强制列不接受NULL值。
NOTNULL约束强制字段始终包含值。
这意味着,如果不向字段添加值,就无法插入新纪录或者更新记录。
下面的SQL语句强制"
列和"
列不接受NULL值:
Id_PintNOTNULL,
LastNamevarchar(255)NOTNULL,
SQLUNIQUE约束
UNIQUE约束唯一标识数据库表中的每条记录。
UNIQUE和PRIMARYKEY约束均为列或列集合提供了唯一性的保证。
PRIMARYKEY拥有自动定义的UNIQUE约束。
请注意,每个表可以有多个UNIQUE约束,但是每个表只能有一个PRIMARYKEY约束。
SQLUNIQUEConstraintonCREATETABLE
下面的SQL在"
表创建时在"
列创建UNIQUE约束:
MySQL:
Cityvarchar(255),
UNIQUE(Id_P)
SQLServer/Oracle/MSAccess:
Id_PintNOTNULLUNIQUE,
如果需要命名UNIQUE约束,以及为多个列定义UNIQUE约束,请使用下面的SQL语法:
MySQL/SQLServer/Oracle/MSAccess:
CONSTRAINTuc_PersonIDUNIQUE(Id_P,LastName)
SQLUNIQUEConstraintonALTERTABLE
当表已被创建时,如需在"
P_Id"
列创建UNIQUE约束,请使用下列SQL:
ALTERTABLEPersons
ADDUNIQUE(P_Id)
如需命名UNIQUE约束,并定义多个列的UNIQUE约束,请使用下面的SQL语法:
ADDCONSTRAINTuc_PersonIDUNIQUE(P_Id,LastName)
撤销UNIQUE约束
如需撤销UNIQUE约束,请使用下面的SQL:
DROPINDEXuc_PersonID
DROPCONSTRAINTuc_PersonID
SQLPRIMARYKEY约束
PRIMARYKEY约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含NULL值。
每个表应该都一个主键,并且每个表只能有一个主键。
SQLPRIMARYKEYConstraintonCREATETABLE
列创建PRIMARYKEY约束:
PRIMARYKEY(Id_P)
Id_PintNOTNULLPRIMARYKEY,
如果需要命名PRIMARYKEY约束,以及为多个列定义PRIMARYKEY约束,请使用下面的SQL语法:
CONSTRAINTuc_PersonIDPRIMARYKEY(Id_P,LastName)
SQLPRIMARYKEYConstraintonALTERTABLE
如果在表已存在的情况下为"
列创建PRIMARYKEY约束,请使用下面的SQL:
ADDPRIMARYKEY(Id_P)
ADDCONSTRAINTpk_PersonIDPRIMARYKEY(Id_P,LastName)
如果您使用ALTERTABLE语句添加主键,必须把主键列声明为不包含NULL值(在表首次创建时)。
撤销PRIMARYKEY约束
如需撤销PRIMARYKEY约束,请使用下面的SQL:
DROPPRIMARYKEY
DROPCONSTRAINTpk_PersonID
SQLFOREIGNKEY约束
一个表中的FOREIGNKEY指向另一个表中的PRIMARYKEY。
让我们通过一个例子来解释外键。
请看下面两个表:
请注意,"
中的"
列指向"
表中的"
列。
列是"
表中的PRIMARYKEY。
表中的FOREIGNKEY。
FOREIGNKEY约束用于预防破坏表之间连接的动作。
FOREIGNKEY约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
SQLFOREIGNKEYConstraintonCREATETABLE
表创建时为"
列创建FOREIGNKEY:
CREATETABLEOrders
O_IdintNOTNULL,
OrderNointNOTNULL,
PRIMARYKEY(O_Id),
FOREIGNKEY(Id_P)REFERENCESPersons(Id_P)
O_IdintNOTNULLPRIMARYKEY,
OrderNointNOTNULL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 数据库 函数 02