数据库查询语句研究

重点研究查询数据,其他语句只做了解!!!
"""
一些最重要的 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" 的别名:

posted @ 2016-04-04 10:50  Xiao|Deng  阅读(235)  评论(0编辑  收藏  举报