MYSQL操作大全.docx
- 文档编号:29096955
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:28
- 大小:27.95KB
MYSQL操作大全.docx
《MYSQL操作大全.docx》由会员分享,可在线阅读,更多相关《MYSQL操作大全.docx(28页珍藏版)》请在冰豆网上搜索。
MYSQL操作大全
SQL基础命令教程
一.SQL能做什么?
∙SQL面向数据库执行查询
∙SQL可从数据库取回数据
∙SQL可在数据库中插入新的记录
∙SQL可更新数据库中的数据
∙SQL可从数据库删除记录
∙SQL可创建新数据库
∙SQL可在数据库中创建新表
∙SQL可在数据库中创建存储过程
∙SQL可在数据库中创建视图
∙SQL可以设置表、存储过程和视图的权限
二.SQLDML和DDL
可以把SQL分为两个部分:
数据操作语言(DML)和数据定义语言(DDL)。
查询和更新指令构成了SQL的DML部分:
∙SELECT -从数据库表中获取数据
∙UPDATE -更新数据库表中的数据
∙DELETE -从数据库表中删除数据
∙INSERTINTO -向数据库表中插入数据
SQL中最重要的DDL语句:
◆CREATEDATABASE -创建新数据库
◆ALTERDATABASE -修改数据库
◆CREATETABLE -创建新表
◆ALTERTABLE -变更(改变)数据库表
◆DROPTABLE -删除表
◆CREATEINDEX -创建索引(搜索键)
◆DROPINDEX -删除索引
(一)SQLSELECT语法
SELECT列名称FROM表名称以及:
SELECT*FROM表名称
注释:
SQL语句对大小写不敏感。
SELECT等效于select。
Persons"表:
Id
LastName
FirstName
Address
City
1
Adams
John
OxfordStreet
London
2
Bush
George
FifthAvenue
NewYork
3
Carter
Thomas
ChanganStreet
Beijing
SELECTLastName,FirstNameFROMPersons
SELECT*FROMPersons
(二)SELECTDISTINCT语句
在表中,可能会包含重复值。
这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词DISTINCT用于返回唯一不同的值。
SELECTDISTINCT列名称FROM表名称
(三)Orders"表:
Company
OrderNumber
IBM
3532
W3School
2356
Apple
4698
W3School
6953
SELECTDISTINCTCompanyFROMOrders
(四)WHERE子句
如需有条件地从表中选取数据,可将WHERE子句添加到SELECT语句。
语法
SELECT列名称FROM表名称WHERE列运算符值
下面的运算符可在WHERE子句中使用:
操作符
描述
=
等于
<>
不等于
>
大于
<
小于
>=
大于等于
<=
小于等于
BETWEEN
在某个范围内
LIKE
搜索某种模式
注释:
在某些版本的SQL中,操作符<>可以写为!
=。
LastName
FirstName
Address
City
Year
Adams
John
OxfordStreet
London
1970
Bush
George
FifthAvenue
NewYork
1975
Carter
Thomas
ChanganStreet
Beijing
1980
Gates
Bill
Xuanwumen10
Beijing
1985
"Persons"表
SELECT*FROMPersonsWHERECity='Beijing'
引号的使用
请注意,我们在例子中的条件值周围使用的是单引号。
SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
如果是数值,请不要使用引号。
SELECT*FROMPersonsWHEREYear>1965
(五)AND和OR运算符
AND和OR可在WHERE子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则AND运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则OR运算符显示一条记录。
SELECT*FROMPersonsWHEREFirstName='Thomas'ANDLastName='Carter'
SELECT*FROMPersonsWHEREfirstname='Thomas'ORlastname='Carter'
SELECT*FROMPersonsWHERE(FirstName='Thomas'ORFirstName='William')
ANDLastName='Carter'
(六)ORDERBY语句
ORDERBY语句用于根据指定的列对结果集进行排序。
ORDERBY语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用DESC关键字。
SELECTCompany,OrderNumberFROMOrdersORDERBYCompany
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
SELECTCompany,OrderNumberFROMOrdersORDERBYCompany,OrderNumber
以逆字母顺序显示公司名称:
SELECTCompany,OrderNumberFROMOrdersORDERBYCompanyDESC
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECTCompany,OrderNumberFROMOrdersORDERBYCompanyDESC,OrderNumberASC
注意:
在以上的结果中有两个相等的公司名称(W3School)。
只有这一次,在第一列中有相同的值时,第二列是以升序排列的。
如果第一列中有些值为nulls时,情况也是这样的。
(七)INSERTINTO语句用于向表格中插入新的行。
语法
INSERTINTO表名称VALUES(值1,值2,....)
我们也可以指定所要插入数据的列:
INSERTINTOtable_name(列1,列2,...)VALUES(值1,值2,....)
INSERTINTOPersonsVALUES('Gates','Bill','Xuanwumen10','Beijing')
INSERTINTOPersons(LastName,Address)VALUES('Wilson','Champs-Elysees')
(八)Update语句用于修改表中的数据。
语法:
UPDATE表名称SET列名称=新值WHERE列名称=某值
UPDATEPersonSETFirstName='Fred'WHERELastName='Wilson'
我们会修改地址(address),并添加城市名称(city):
UPDATEPersonSETAddress='Zhongshan23',City='Nanjing'
WHERELastName='Wilson'
(九)DELETE语句用于删除表中的行。
DELETEFROM表名称WHERE列名称=值
DELETEFROMPersonWHERELastName='Wilson'
可以在不删除表的情况下删除所有的行。
这意味着表的结构、属性和索引都是完整的:
DELETE*FROMtable_name或者:
DELETEFROMtable_name
提高教程
(一)TOP子句
TOP子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP子句是非常有用的。
注释:
并非所有的数据库系统都支持TOP子句。
MySQL语法
SELECTcolumn_name(s)
FROMtable_name
LIMITnumber
注意:
MySQL和Oracle中的SQLSELECTTOP是等价的
例子
SELECT*
FROMPersons
LIMIT5
Oracle语法
SELECTcolumn_name(s)
FROMtable_name
WHEREROWNUM<=number
例子
SELECT*
FROMPersons
WHEREROWNUM<=5
现在,我们希望从上面的"Persons"表中选取头两条记录。
SELECTTOP2*FROMPersons
现在,我们希望从上面的"Persons"表中选取50%的记录。
SELECTTOP50PERCENT*FROMPersons
(二)LIKE操作符
LIKE操作符用于在WHERE子句中搜索列中的指定模式。
SQLLIKE操作符语法
SELECTcolumn_name(s)
FROMtable_name
WHEREcolumn_nameLIKEpattern
现在,我们希望从上面的"Persons"表中选取居住在以"N"开始的城市里的人:
SELECT*FROMPersons
WHERECityLIKE'N%'
接下来,我们希望从"Persons"表中选取居住在以"g"结尾的城市里的人:
SELECT*FROMPersons
WHERECityLIKE'%g'
接下来,我们希望从"Persons"表中选取居住在包含"lon"的城市里的人:
SELECT*FROMPersons
WHERECityLIKE'%lon%'
通过使用NOT关键字,我们可以从"Persons"表中选取居住在不包含 "lon"的城市里的人:
SELECT*FROMPersons
WHERECityNOTLIKE'%lon%'
(三)SQL通配符
在搜索数据库中的数据时,SQL通配符可以替代一个或多个字符。
SQL通配符必须与LIKE运算符一起使用。
通配符
描述
%
替代一个或多个字符
_
仅替代一个字符
[charlist]
字符列中的任何单一字符
[^charlist]
或者
[!
charlist]
不在字符列中的任何单一字符
使用%通配符
例子1
现在,我们希望从上面的"Persons"表中选取居住在以"Ne"开始的城市里的人:
SELECT*FROMPersons
WHERECityLIKE'Ne%'
例子2
接下来,我们希望从"Persons"表中选取居住在包含"lond"的城市里的人:
SELECT*FROMPersons
WHERECityLIKE'%lond%'
使用_通配符
例子1
现在,我们希望从上面的"Persons"表中选取名字的第一个字符之后是"eorge"的人:
SELECT*FROMPersons
WHEREFirstNameLIKE'_eorge'
例子2
接下来,我们希望从"Persons"表中选取的这条记录的姓氏以"C"开头,然后是一个任意字符,然后是"r",然后是任意字符,然后是"er":
SELECT*FROMPersons
WHERELastNameLIKE'C_r_er'
使用[charlist]通配符
例子1
现在,我们希望从上面的"Persons"表中选取居住的城市以"A"或"L"或"N"开头的人:
SELECT*FROMPersons
WHERECityLIKE'[ALN]%'
例子2
现在,我们希望从上面的"Persons"表中选取居住的城市不以 "A"或"L"或"N"开头的人:
SELECT*FROMPersons
WHERECityLIKE'[!
ALN]%'
(四)IN操作符
IN操作符允许我们在WHERE子句中规定多个值。
SELECTcolumn_name(s)
FROMtable_name
WHEREcolumn_nameIN(value1,value2,...)
现在,我们希望从上表中选取姓氏为Adams和Carter的人:
SELECT*FROMPersons
WHERELastNameIN('Adams','Carter')
(五)BETWEEN操作符
操作符BETWEEN...AND会选取介于两个值之间的数据范围。
这些值可以是数值、文本或者日期。
SELECTcolumn_name(s)
FROMtable_name
WHEREcolumn_name
BETWEENvalue1ANDvalue2
BETWEEN操作符实例
如需以字母顺序显示介于"Adams"(包括)和"Carter"(不包括)之间的人,请使用下面的SQL:
SELECT*FROMPersons
WHERELastName
BETWEEN'Adams'AND'Carter'
如需使用上面的例子显示范围之外的人,请使用NOT操作符:
SELECT*FROMPersons
WHERELastName
NOTBETWEEN'Adams'AND'Carter'
(六)SQLAlias
通过使用SQL,可以为列名称和表名称指定别名(Alias)。
表的SQLAlias语法
SELECTcolumn_name(s)
FROMtable_name
ASalias_name
列的SQLAlias语法
SELECTcolumn_nameASalias_name
FROMtable_name
使用表名称别名:
假设我们有两个表分别是:
"Persons"和"Product_Orders"。
我们分别为它们指定别名"p"和"po"。
SELECTpo.OrderID,p.LastName,p.FirstName
FROMPersonsASp,Product_OrdersASpo
WHEREp.LastName='Adams'ANDp.FirstName='John'
使用一个列名别名
SELECTLastNameASFamily,FirstNameASName
FROMPersons
(七)SQLjoin用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
Key
有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。
我们就需要执行join。
数据库中的表可通过键将彼此联系起来。
主键(PrimaryKey)是一个列,在这个列中的每一行的值都是唯一的。
在表中,每个主键的值都是唯一的。
这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。
请看"Persons"表:
Id_P
LastName
FirstName
Address
City
1
Adams
John
OxfordStreet
London
2
Bush
George
FifthAvenue
NewYork
3
Carter
Thomas
ChanganStreet
Beijing
请注意,"Id_P"列是Persons表中的的主键。
这意味着没有两行能够拥有相同的Id_P。
即使两个人的姓名完全相同,Id_P也可以区分他们。
接下来请看"Orders"表:
Id_O
OrderNo
Id_P
1
77895
3
2
44678
3
3
22456
1
4
24562
1
5
34764
65
"Id_O"列是Orders表中的的主键,同时,"Orders"表中的"Id_P"列用于引用"Persons"表中的人,而无需使用他们的确切姓名。
引用两个表
我们可以通过引用两个表的方式,从两个表中获取数据:
谁订购了产品,并且他们订购了什么产品?
SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo
FROMPersons,Orders
WHEREPersons.Id_P=Orders.Id_P
(八)SQLPRIMARYKEY约束
PRIMARYKEY约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含NULL值。
每个表都应该有一个主键,并且每个表只能有一个主键。
SQLPRIMARYKEYConstraintonCREATETABLE
下面的SQL在"Persons"表创建时在"Id_P"列创建PRIMARYKEY约束:
CREATETABLEPersons
(
Id_PintNOTNULL,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255),
PRIMARYKEY(Id_P)
)
SQLPRIMARYKEYConstraintonALTERTABLE
如果在表已存在的情况下为"Id_P"列创建PRIMARYKEY约束,请使用下面的SQL:
ALTERTABLEPersons
ADDPRIMARYKEY(Id_P)
注释:
如果您使用ALTERTABLE语句添加主键,必须把主键列声明为不包含NULL值(在表首次创建时)。
撤销PRIMARYKEY约束
ALTERTABLEPersons
DROPPRIMARYKEY
(九)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:
CREATETABLEOrders
(
Id_OintNOTNULL,
OrderNointNOTNULL,
Id_Pint,
PRIMARYKEY(Id_O),
FOREIGNKEY(Id_P)REFERENCESPersons(Id_P)
)
SQLFOREIGNKEYConstraintonALTERTABLE
如果在"Orders"表已存在的情况下为"Id_P"列创建FOREIGNKEY约束,请使用下面的SQL:
ALTERTABLEOrders
ADDFOREIGNKEY(Id_P)
REFERENCESPersons(Id_P)
撤销FOREIGNKEY约束
ALTERTABLEOrders
DROPFOREIGNKEYfk_PerOrders
(一十)SQLUNION操作符
UNION操作符用于合并两个或多个SELECT语句的结果集。
请注意,UNION内部的SELECT语句必须拥有相同数量的列。
列也必须拥有相似的数据类型。
同时,每条SELECT语句中的列的顺序必须相同。
SELECTcolumn_name(s)FROMtable_name1
UNION
SELECTcolumn_name(s)FROMtable_name2
SELECTcolumn_name(s)FROMtable_name1
UNIONALL
SELECTcolumn_name(s)FROMtable_name2
注释:
默认地,UNION操作符选取不同的值。
如果允许重复的值,请使用UNIONALL。
另外,UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。
(一十一)SQLSELECTINTO语句可用于创建表的备份复件。
SELECTINTO语句从一个表中选取数据,然后把数据插入另一个表中。
SELECTINTO语句常用于创建表的备份复件或者用于对记录进行存档。
您可以把所有的列插入新表:
SELECT*
INTOnew_table_name[INexternaldatabase]
FROMold_tablename
或者只把希望的列插入新表:
SELECTcolumn_name(s)
INTOnew_table_name[INexternaldatabase]
FROMold_tablename
SQLSELECTINTO实例-制作备份复件
下面的例子会制作"Persons"表的备份复件:
SELECT*
INTOPersons_backup
FROMPersons
IN子句可用于向另一个数据库中拷贝表:
SELECT*
INTOPersonsIN'Backup.mdb'
FROMPersons
(一十二)SQLCREATEDATABASE语法
CREAT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MYSQL 操作 大全
![提示](https://static.bdocx.com/images/bang_tan.gif)