SQL-即查即用之简单查询
1、select语句基本结构
SELECT select_list
[ INTO new_table ]
FROM table_name
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC|DESC ] ];
参数说明
select_list :指定需要查询返回的列
[ INTO new_table ]:船舰新表并将查询结果插入新表中
FROM table_name:指定需要查询的表,也称源表
[ WHERE search_condition ]:指定用于限制返回的行的搜索条件
[ GROUP BY group_by_expression ]:根据group_by_expression列中的值将结果集分成组
[ HAVING search_condition ]:指定组和聚合的搜索条件
[ ORDER BY order_expression [ ASC|DESC ] ]:定义结果集中的行排列的顺序
注意
在MySQL和SQL Server数据库中,SQL代码末尾的分号“;”可以省略,但是在其他数据库比如Oracle中不能省略末尾的分号
2.单列查询
SELECT select_list FROM table_name;
示例01 > 在goods商品信息表中,使用SELECT语句对商品名称(goods_name)进行行查询
SELECT goods_name FROM goods;
3.多列查询
SELECT select_list,...,select_list FROM table_name;
示例02 > 在goods商品信息表中,使用SELECT语句对商品编号(goods_id),商品名称(goods_name),市场价(market_price)进行行查询
SELECT goods_name FROM goods
4.查询所有的列
SELECT * FROM table_name;
示例03> 在goods_type商品类型表中,使用SELECT语句对所有的列进行查看
SELECT * FROM goods_type;
5.别名的应用
创建别名的四种方法:
(1)使用双引号创建别名,代码如下:
SELECT goods_name "商品名称" FROM goods;
(2)使用单引号创建别名,代码如下:
SELECT goods_name '商品名称' FROM goods;
(3)使用AS关键字创建别名,代码如下:
SELECT goods_name AS "商品名称" FROM goods;
(4)不使用引号创建别名,代码如下:
SELECT goods_name 商品名称 FROM goods;
6.对多个表查询时出现相同的列名
示例05>对orderform订单信息表和user_address用户收货信息表中的信息进行查询,使用语句对两个表中的列名相同的用户ID(user_id)列进行别名设置,方便查看
SELECT user_address.mobile AS "订单表中的电话号码",
user.mobile AS "用户收货信息表的电话号码", user_address.address
FROM user_address,users
WHERE user_address.user_id = users.user_id;
7.为计算结果设置别名
示例06> 在goods商品信息表中,通过商品市场价(market_price)减去成本价(cost_peice)来统计商品的盈利,使用SELECT语句对统计结果中出现的列设置别名
SELECT goods_name, market_price AS 市场价, cost_price AS 成本价,
(market_price-cost_peice) AS 商品盈利
From goods;
8.为使用聚合函数的列设置别名
示例7> 在goods商品信息表中,查询出商品表汇总市场最高价和最低价是多少,并为使用聚合函数产生的列设置别名
SELECT MAX(market_peice) AS "市场最高价", MIN(market_peice) AS "市场最低价"
FROM goods;
9.删除重复数据
*DISTINCT关键字可以从SELECT语句中删除重复的行,但需将其放在第一位,不要在其后面添加逗号
*DISTINCT关键字并不是指某一行,而是指不重复select输出的所有列
示例08> 在orderform订单信息表中,在SELECT语句中使用DISTINCT关键字查询出不重复的收货人信息
SELECT consignee,address,mobile FROM orderform;
SELECT DISTINCT consignee,address,mobile FROM orderform;
10、限制查询结果
TOP关键字可以指定返回表中的前n行数据
SELECT TOP n FROM table;
示例09> 查看goods中的前5条数据
SELECT TOP 5 goods_name, market_price FROM goods;
11.限制查询前n条数据
LIMIT子句可以对查询结果的记录条数进行限定,控制它输出的行数
示例10> 查看goods中的前5条数据
SELECT goods_name, market_price FROM goods LIMIT 5;
12.限制查询n条数据
LIMIT 还可以从查询结果的中间部分取值,首先要定义两个参数,参数1是开始读取的第一条记录的编号,参数2是要查询记录的个数
示例:查看goods商品信息表从弟3条数据开始的5条数据信息
SELECT goods_name, market_price FROM goods LIMIT 2, 5;
另一种表达方式是:
SELECT goods_name, market_price FROM goods LIMIT 2 OFFSET 5;
13.在Oracle中限制查询结果
示例:在goods商品信息表中查询前5条数据
SELECT goods_name, market_price FROM goods WHERE ROWNUM<=5;