数据库查询语句研究
重点研究查询数据,其他语句只做了解!!!
"""
一些最重要的 SQL 命令:
select - 从数据库中提取数据
update - 更新数据
delete - 删除数据
insert - 插入数据
create database - 创建新数据库
alter database - 修改数据库
create table - 创建表
alter table - 变更数据库表
drop table - 删除表
create index - 创建索引(搜索键)
drop index - 删除索引
"""
第一:select语句
#select - 从数据库中提取数据,结果被存储在一个结果表中,称为结果集
#column_name(s):数据库表中所有列的名称
#column_name:列名称
#group by:分组
#table_name:表名
select key from 表名
select key,where from 表名
select * from 表名
select key from 表名 where 条件1 and|or 条件2
#列名位于两者之间的数据
select 列名(s) from 表名 where 列名 between value1 and value2
#合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句
select 列名1, SUM(列名2) from 表名 group by 列名1
select 列名(s) from 表名 where 列名 IN(value1, value2,..)
第二:select distinct语句
#distinct关键词用于返回唯一不同的值,起到去重的作用
SELECT DISTINCT column_name,column_name FROM table_name
第三:where
1)含义:子句用于过滤记录
#column_name operator value 表达式还包含:like,以及各种运算符号,<,>=等等
where 子句用于提取那些满足指定标准的记录。
table_name:表名
column_name:列名
column_name operator value:列名的表达式
select column_name,column_name from table_name where column_name operator value
示例:
SELECT * FROM Customers WHERE Country='Mexico'
SELECT * FROM Customers WHERE CustomerID=1
第四:and & or 运算符用于基于一个以上的条件对记录进行过滤。
1)and,需要2个条件同时满足方可输出结果
2)or,只需要2个条件满足1个即可
3)示例:
SELECT * FROM 表名 WHERE 列名1='Germany' and 列名2='Berlin'
SELECT * FROM 表名 WHERE 列名1='Berlin' OR 列名2='München'
SELECT * FROM 表名 WHERE 列名1='Germany' and (列名2='Berlin' or 列名2='München'),含义为:从表中查找列名1='Germany'的数据且(列名2='Berlin' or 列名2='München'满足其一的数据)
第五:order by
1)含义:关键字用于对结果集按照一个列或者多个列进行排序
1)默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 desc 关键字
2)语法:SELECT 列名1,列名2 FROM 表名 ORDER BY 列名1,列名2 ASC|DESC
3)示例
SELECT * FROM 表名 ORDER BY Country #默认升序
SELECT * FROM 表名 ORDER BY Country ESC #降序
SELECT * FROM 表名 ORDER BY Country , CustomerName #按照2个列名的判断条件来排序
第六:规定要返回的记录的数目(不同服务器类型语句会有一定区别)
1)SELECT TOP number|percent column_name(s) FROM table_name
2)SELECT column_name(s) FROM table_name limit number
number:要返回的数据条数
3)示例:
SELECT * FROM Persons limit 5
SELECT TOP 2 * FROM Customers 选取头2条记录
SELECT TOP 50 percent * FROM Customers 从表Customers中选取前50%的记录
第七:like
1)含义:操作符用于在 where 子句中搜索列中的指定模式
1)语法:SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
2)示例:
SELECT * FROM 表名 WHERE City like 's%' 选取 City 以字母 "s" 开始的所有客户,
SELECT * FROM 表名 WHERE City like '%s' 选取 City 以字母 "s" 结尾的所有客户
SELECT * FROM 表名 WHERE City like '%Enshi%' 选取 City 包含模式 "Enshi" 的所有客户
SELECT * FROM 表名 WHERE City not like '%Enshi%' 选取 City 不包含模式 "Enshi" 的所有客户
3)%:定义通配符
第八:通配符研究
1)% 替代 0 个或多个字符
2)_ 下划线替代一个字符
3)[charlist] 字符列中的任何单一字符
4)[^charlist] or [!charlist] 不在字符列中的任何单一字符
5)示例:
SELECT * from Customers WHERE City LIKE 'ber%'
SELECT * from Customers WHERE City LIKE '%es%'
SELECT * from Customers WHERE City LIKE '_erlin' 选取City以一个任意字符开始,然后是 "erlin" 的所有客户
SELECT * FROM Customers WHERE City LIKE 'L_n_on'
SELECT * FROM Customers WHERE City LIKE '[bsp]%' 选取 City 以 "b"、"s" 或 "p" 开始的所有客户
SELECT * FROM Customers WHERE City LIKE '[a-c]%' 选取 City 以 "a"、"b" 或 "c" 开始的所有客户
SELECT * FROM Customers WHERE City LIKE '[!bsp]%' 选取 City 不以 "b"、"s" 或 "p" 开始的所有客户
第九:IN 操作符
1)允许您在 where 子句中规定多个值
2)语法:select column_name(s) from table_name where column_name IN (value1,value2,...)
3)示例:
SELECT * FROM Customers WHERE City IN ('Paris','London') 选取 City 为 "Paris" 或 "London" 的所有客户
从表中查找city的数据,这个city有限定在paris火london之类
第十:between
1)含义:between 操作符用于选取介于两个值之间的数据范围内的值,这些值可以是数值、文本或者日期
2)语法:select column_name(s) from table_name where column_name between value1 and value2
3)示例:
SELECT * FROM 表名 WHERE Price between 10 AND 20 选取价格介于 10 和 20 之间的所有产品
SELECT * FROM 表名 WHERE Price NOT between 10 AND 20 不在范围内的产品,用 NOT between
SELECT * FROM 表名 WHERE (Price BETWEEN 10 AND 20) AND NOT CategoryID IN (1,2,3) 选取价格介于 10 和 20 之间但 CategoryID 不为 1、2 或 3 的所有产品
SELECT * FROM 表名 WHERE ProductName NOT BETWEEN 'C' AND 'M' 选取 ProductName 不以介于 'C' 和 'M' 之间字母开始的所有产品
SELECT * FROM 表名 WHERE OrderDate BETWEEN #07/04/1996# AND #07/09/1996# 选取 OrderDate 介于 '04-July-1996' 和 '09-July-1996' 之间的所有订单
4)注意事项:是否包含临界值本身,需要根据情况测试
第十一:别名
1)含义:使用 SQL,可以为表名称或列名称指定别名(Alias),基本上,创建别名是为了让列名称的可读性更强
2)用途:
在查询中涉及超过一个表
在查询中使用了函数
列名称很长或者可读性差
需要把两个列或者多个列结合在一起
3)语法:
SELECT column_name AS alias_name FROM table_name 列名创建别名
SELECT column_name(s) FROM table_name AS alias_name 表名创建别名
4)示例:
SELECT CustomerName AS Customer, ContactName AS [Contact Person] FROM Customers;
#CustomerName 列的别名,ContactName 列的别名。提示:如果列名称包含空格,要求使用双引号或方括号
SELECT CustomerName, Address+', '+City+', '+PostalCode+', '+Country AS Address FROM Customers
#把四个列(Address、City、PostalCode 和 Country)结合在一起,并创建一个名为 "Address" 的别名: