--1. 常用的存储过程
sp_databases
--返回可用的数据库的一个列表
sp_tables
--返回当前选择的数据库内可用表的列表,不仅包括你自己的表,还包括系统表和其他表
sp_tables null, dbo, scratch,"'table'"
--只返回当前选择的数据库的可用表,不包括视图和系统表
sp_columns ARPU
--显示表ARPU的列
--2. 标识:表示某些表列需要唯一值,如订单号,在表增加一行时,SQL Server能自动分配下一个可用的编号;
--3. 结束SQL语句,多条SQL 语句必须以分号;分隔。 也可以不加,但是加上去可读性比较强;
--4. SQL语句不区分大小写,习惯对SQL 关键字大写,对所有列和表名使用小写,易于阅读和调试;
--5. 空白,处理SQL语句时,所有空白都被忽略,SQL 语句分成多行更容易阅读和调试;
--6. 查询多个列,列之间用,逗号分隔;
-- 将值与串数据类型的列进行比较,则需要限定引号。用来与数值列进行比较的值不用引号;
-----------------------SELECT 检索数据-----------------------
--7. 仅返回不同的行
-- SELECT DISTINCT vend_id
-- FROM products;
-- 8. DISTINCT用于所有的行,将所有不同的行输出
-- SELECT DISTINCT vend_id,prod_price
-- FROM products;
-- 9. 限制结果:只显示前5行数据;
--SELECT TOP(5) prod_name
--FROM products;
-- 10. 限制结果:只显示表的前25%行数据;
--SELECT TOP(25) PERCENT prod_name
--FROM products;
-- 11. 使用完全限制的表名查询;
SELECT products.prod_name
--表名.列名
FROM crashcourse.dbo.products
--数据库名.表所有者名.表名
---------------------------排序 检索数据--------------------------
-- 12. 对prod_name列以字母顺序排序,使用order by,默认升序排列(ASC)
SELECT prod_name
FROM products
ORDER BY prod_name;
-- 按prod_name,降序排序
SELECT prod_name
FROM products
ORDER BY prod_name DESC;
-- 13. 按多个列排序,检索3列,并按其中两列对结果进行排序-- 首先按价格,然后再按名称排序
SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price,prod_name;
-- 14. 指定排序方向:按多个列排序,检索3列,并按其中两列对结果进行排序-- 首先按价格降序,然后再按名称排序
SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price DESC,prod_name;
-- 15. 找到一列中的最大值,最贵产品的价格
SELECT TOP(1) prod_price
FROM products
ORDER BY prod_price DESC;
-- 16. 找到一列中的最小值
SELECT TOP(1) prod_price
FROM products
ORDER BY prod_price ASC;
---------------------------过滤 数据--------------------------
----------搜索条件(search criteria) 即过滤条件(filter condition)
-- 17. 检查单值: 使用where 子句,返回prod_price 值为2.50的行
SELECT prod_name, prod_price
FROM products
WHERE prod_price = 2.50;
-- ORDER BY 语句需要位于WHERE 子句后面,否则会出错
SELECT prod_name, prod_price
FROM products
WHERE prod_price = 2.50
ORDER BY prod_name DESC
-- 18. 不匹配检查: 列出不是由供应商1003制造的所有产品
SELECT vend_id, prod_name
FROM products
WHERE vend_id <> 1003;
--WHERE vend_id != 1003;
-- 19. 范围检查: 检索价格在5美元和10美元之间的所有产品
SELECT prod_name, prod_price
FROM products
WHERE prod_price BETWEEN 5 AND 10;
--WHERE prod_price >= 5 AND prod_price <= 10;
-- 20. 空值检查: 返回用户电子邮件为NULL的值
SELECT cust_id
FROM customers
where cust_email IS NULL
--返回产品表中产品价格为NULL的产品名称,由于没有匹配项,输出为空
SELECT prod_name
FROM products
WHERE prod_price IS NULL