发表于: 2019-10-21 22:31:59
2 990
SQL学习
今天完成的事情:学会了基本SQL语句,SELECT,WHERE条件查询,修改数据表中的内容Update
SQL语法
一个数据库通常包含一个或者多个表。每个表由一个名字标识(例如:“客户”或者“订单”)。表包含带有数据的记录(行)。
下面的例子是一个名为“Persons”的表:
ID | LastName | FirstName | Address | City |
1 | Adams | John | Oxford | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | BeiJing |
上面的表包含三条记录(每一条对应一个人)和五个列(ID,姓、名、地址、和城市)。
SQL语句
下面的语句从表中选取LastName列的数据:
Select LastName FROM Persons
结果集类似这样:
LastName |
Adams |
Bush |
Carter |
![]() |
重要事项
SQL对大小写不敏感!
SQL语句后面的分号?
某些数据库系统要求在每条 SQL 命令的末端使用分号。在我们的教程中不使用分号。
分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。
如果您使用的是 MS Access 和 SQL Server 2000,则不必在每条 SQL 语句之后使用分号,不过某些数据库软件要求必须使用分号。
SQL DML 和DDL
可以把SQL分成两个部分:数据操作语句(DML)和数据定义语句(DDL)
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了SQL的DML部分:
l SELECT – 从数据库表中获取数据
l UPDATE – 更新数据库表中的数据
l DELETE – 从数据库表中删除数据
l INSERT INTO – 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL中最重要的DDL语句:
l CREATE DATABASE – 创建数据库表
l ALTER DATABASE – 修改数据库
l CREATE TABLE – 创建新表
l ALTER TABLE – 修改数据库表
l DROP TABLE – 删除表
l CREATE INDEX – 创建索引(搜索键)
l DROP INDEX – 删除索引
![]() |
SQL SELECT语句
SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT语法
SELECT 列名称 FROM 表名称
SELECT * FROM 表名称
注释:SQL 语句对大小写不敏感。SELECT 等效于 select。
SQL SELECT 实例
SELECT LastName,FirstName FROM `persons`
结果:
SQL SELECT * 实例
SELECT * FROM `persons`
提示:星号(*)是选取所有列的快捷方式。
结果:
SQL SELECT DISTINCT语句
在表中,可能会包含重复值,关键词DISTINCT用于返回唯一不同的值。
语法:
SELECT DISTINCT 列名称 FROM 表名称
使用DISTINCT关键词
SELECT Company FROM `orders`
SELECT DISTINCT Company FROM `orders`
在结果集中,“W3Chool”仅被列出了一次
![]() |
SQL WHERE子句
WHERE 子句用于规定选择的标准。
WHERE子句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
语法
SELECT 列名称FROM 表名称WHERE 列 运算符 值
下面的运算符可在WHERE子句中使用:
注释:在某些版本的SQLzhong ,操作符<>可以写为!=。
![]() |
使用WHERE子句
如果是希望选取居住在城市“BeiJing”中的人,我们需要向SELECT语句添加WHERE子句:
SELECT * FROM Persons WHERE City=‘HangZhou‘
![]() |
引号的使用
请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
文本值:
这是正确的:
SELECT * FROM Persons WHERE FirstName='Bush'
这是错误的:
SELECT * FROM Persons WHERE FirstName=Bush
数值:
这是正确的:
SELECT * FROM Persons WHERE Year>1965
这是错误的:
SELECT * FROM Persons WHERE Year>'1965'
![]() |
SQL AND & OR运算符
AND和OR运算符用于基于一个以上的条件对记录进行过滤。
![]() |
AND 和 OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
AND运算符实例
SELECT * FROM `persons` WHERE FirstName = 'Lv' AND LastName='shanghao'
OR运算符实例
SELECT * FROM `persons` where lastname='Carter' or FirstName='Lv'
结果:
结合AND和OR运算符
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM `persons` where (FirstName='Thomas' OR FirstName="Lv")
AND LastName='Carter'
结果:
![]() |
SQL ORDER BY 子句
ORDER BY 语句用于对结果集进行排序。
ORDER BY语句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
实例1:
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
SELECT * from Orders ORDER BY Company,OrderNumber
结果:
实例2:
以逆字母顺序显示公司名称:
SELECT * from Orders ORDER BY Company DESC
实例3:
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT * from Orders ORDER BY Company DESC,ordernumber ASC
结果:
![]() |
INSERT INTO语句
INSERT INTO语句用于向表格中插入新的行
语法
INSERT INTO 表名称 VALUES (值1,值2……)
我们也可以指定所要插入数据的列:
INSERT INTO table_name(列1,列2……)VALUES (值1,值2……)
插入新的行:
Persons表:
SQL语句:
INSERT INTO persons VALUES(5,'Gates','Bill','xuanwumen10','BeiJing')
结果:
![]() |
在指定的列中插入数据
Person表:
SQL语句:
INSERT INTO persons(LastName,Address) VALUES('Wilson','Champs-Elysees')
结果:
![]() |
SQL UPDATE语句
Update用于修改表中的数据
语法:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
Person
更新某一行中的一个列:
UPDATE persons set firstname ='Fred' where LastName ='Wilson'
结果:
更新某一行中的若干列
UPDATE persons set Address ='Zhongshan 23',City='NanJing' where LastName ='Wilson'
结果:
明天计划的事情:学习SQL高级教程10+小节的内容
今天遇到的问题:在进行条件查询时结果错误,最后发现数据表中的name列中的数据多了空格导致查询结果不正确。
收获:今日的学习对数据有了大概的了解,以及掌握了一些基本语法的使用,期待明天有更好的收获!
评论