SQL学习—SELECT语句

来源:互联网 发布:linux查看ssh端口号 编辑:程序博客网 时间:2024/05/29 11:06

SQL之SELECT语句总结:

一、检索数据:

1、检索单列:SELECT prod_name FROM Products;
2、检索多列:SELECT prod_id,prod_name,prod_price FROM Products;
3、检索所有列:SELECT * FROM Products;
4、检索不同值:加DISTINCT关键字
5、限制结果:用top限制检索的数量,SELECTtop 5 prod_name FROM Products

二、排序检索:

后面加ORDER BY子句,倒序的话后面加DESC
如:SELECT prod_name FROM Products ORDER BY prod_name

三、过滤数据:

1、使用WHERE子句
如:SELECT prod_name,prod_price FROM Products WHERE prod_price BETWEEN 5 AND 10;

2、WHERE子句操作符:=,<>,!=,<,<=,!<,>,>=,!>,BETWEEN,IS NULL

3、用AND、OR操作符连接两个WHERE子句

4、用IN操作符指定范围条件(最大优点是里面可以包含其他SELECT语句)

5、使用LIKE操作符进行通配符搜索(只适用于文本字段) 百分号(%)通配符,%能匹配多个字符:
如:

SELECT prod_name.prod_id FROM Products WHERE prod_name LIKE 'Fish%'SELECT prod_name.prod_id FROM Products WHERE prod_name LIKE '%bean bag%'SELECT prod_name.prod_id FROM Products WHERE prod_name LIKE 'F%y'

6、下划线(_)通配符,一个下划线匹配一个字符:
如:SELECT prod_name.prod_id FROM Products WHERE prod_name LIKE '_ inch teddy bear'

7、方括号([ ])通配符,方括号指定一个集合,匹配指定位置的一个字符:
如:SELECT prod_name.prod_id FROM Products WHERE prod_name LIKE "[JM]%"

四、创建计算字段

1、拼接字段:
如:SELECT vend_name + '(' + vend_country + ')' FROM Vendors ORDEY BY vend_name

2、使用别名:(有别名客户端才能引用它)
如:SELECT vend_name + '(' + vend_country + ')' AS vend_title FROM Vendors ORDEY BY vend_name

3、执行算术计算:
如:SELECT prod_id,quantity,item_price,quantity*item_price AS expanded_price FROM OrderItems WHERE order_num=2008

五、使用函数:

1、文本处理函数:
LEFT() 返回字符串左边字符
LENGTH() 返回字符串的长度
LOWER() 将字符串转换为小写
LTRIM() 去掉字符串左边的空格
RTRIM() 去掉字符串右边的空格

2、日期和时间处理函数:
ABS() 返回一个数的绝对值
COS() 返回一个角度的余弦
TAN() 返回一个角度的正弦
EXP() 返回一个数的指数值
PI() 返回圆周率

3、聚集函数:
AVG()函数,返回所选列的平均值
COUNNT()函数,COUNT(*)对表中的行数进行计数,COUNT(column)对特定列具有值得行进行计数
MAX()函数,返回指定列中的最大值
SUM()函数,返回指定列值得和

4、组合聚集函数:
如:SELECT COUNT(*) AS num_items,MIN(prod_price) AS price_min,MAX(prod_price) AS
price_max, AVG(prod_name) AS price_avg FROM Products;

六、分组数据:

1、创建分组:使用group by子句
如:SELECT vend_id,COUNT(*) AS num_prods FROM Products GROUP BY vend_id

2、过滤分组:使用having子句
如:SELECT vend_id,COUNT(*) AS num_prods FROM Products GROUP BY vend_id HAVING COUNT(*)>=2

3、分组和排序:group by和order by的区别

七、使用子查询:

1、利用子查询进行过滤:
如:SELECT cust_id FROM Orders WHERE order_num IN (SELECT order_num FROM OrderItems WHERE prod_id='RGAN01')

2、作为计算字段使用子查询:
如:SELECT cust_name,cust_state,(SELECT COUNT(*) FROM Orders WHERE Orders.cust_id=Customers.cust_id) AS orders FROM Customers ORDER BY cust_name

八、联结表(可代替子查询)

1、关系表:把信息分解成多个表,一类数据一个表。各表通过某些共同的值相互关联(关系数据库)

2、等值联结(内联结):
如:SELECT vend_name,prod_name,prod_price FROM Vendors,Products WHERE Vendors.vend_id=Products.vend_id
SELECT vend_name,prod_name,prod_price FROM Vendors INNER JOIN Products ON Vendors.vend_id=Products.vend_id

3、高级联结:
使用表别名:SELECT cust_name,cust_contact FROM Customers AS C,Orders AS O,OrderItems AS OI WHERE
C.cust_id=O.cust_id AND OI.order_num=O.order_num AND prod_id=’RGAN01’
自联结:
自然联结:
外联结:左外联结,右外联结

九、组合查询

UNION操作符将多条SELECT 语句组合成一个结果集,要注意的是union中的每个查询必须包含相同的列、表达式或聚集函数。
如:SELECT cust_name,cust_contact,cust_email From Customers WHERE cust_state IN ('IL','IN','MI') UNION
SELECT cust_name,cust_contact,cust_email FROM Customers WHERE cust_name='Fun4All'

其他:
1、注释:–和/* */

原创粉丝点击