【数据库】极简SQL操作手册 | 基于《SQL必知必会(第4版)》

1.查询   

SELECT * FROM Products; 

SELECT id, name, price FROM Products;

SELECT DISTINCT id FROM Products;            -- DISTINCT 去重       TOP 5 查看前5条

    

2.排序   

SELECT id, price, name FROM Products ORDER BY  price, name;        -- ORDER BY 排序,默认是升序,后面加 DESC 降序

SELECT id, price, name FROM Products ORDER BY 2, 3;   -- 按照位置排序,先排 price,后排 name

    

3.过滤   

SELECT name, price FROM Products WHERE price < 5;                --  <、 =、 >、 !=、<=、>= 等等

SELECT name, price FROM Products WHERE price BETWEEN 5 AND 10;        -- BETWEEN 指定范围

SELECT name FROM Products WHERE price IS NULL;      -- 空值

    

SELECT id, price, name FROM Products WHERE id = '01' AND price <= 4;                  -- AND、OR 附加多个条件

SELECT name, price FROM Products WHERE id = '1' OR id = ‘01’ AND price >= 10;         -- AND、OR 全用上

SELECT name, price FROM Products WHERE (id = '1' OR id = ‘01’) AND price >= 10;       -- SQL 优先处理 AND,必要的时候要加括号

SELECT name, price FROM Products WHERE id IN ( 'DLL01', 'BRS01' ) ORDER BY name;        -- IN 满足括号内任意一个条件即可

SELECT name FROM Products WHERE NOT id = 'DLL01' ORDER BY name;          -- NOT 操作

   

 4.通配符过滤      

SELECT id, name FROM Products WHERE name LIKE 'Fish%';    -- nama 只要是以 Fish 开头即可

SELECT id, name FROM Products WHERE name LIKE '__ inch teddy bear';        -- 一个下划线匹配一个字符,%匹配任意多个字符

SELECT cust_contact FROM Customers WHERE cust_contact LIKE '[JM]%' ORDER BY cust_contact;        -- J 或 M 开头都满足,[ ] 里的字符,只需满足一个即可

SELECT cust_contact FROM Customers WHERE cust_contact LIKE '[^JM]%' ORDER BY cust_contact;      -- ^ 表示 否定,不以 J 或 M 开头

    5.字段操作

SELECT name + ' (' + country + ')' FROM Vendors ORDER BY name;    --  用 + 拼接,输出格式为: name  (country)  ,SQL Server 使用+号。Oracle、PostgreSQL、SQLite 使用||。

               Bear Emporium      (USA)

               Bears R Us            (USA)

SELECT RTRIM(name) + ' (' + RTRIM(country) + ')' FROM Vendors ORDER BY name;          -- RTRIM()函数去掉字段右边空格,LTRIM()去掉左边空格

                Bear Emporium (USA)

                Bears R Us (USA)

SELECT id, num, price, num*price AS expanded_price FROM OrderItems     -- num 商品数量,price 单价,num*price AS赋值给总价expanded_price,可操作 +、-、*、/

                id   num    price     expanded_price

                ---  ------    --------    -----------------

                01   5       4.9900   24.9500

      

6.函数操作   

SELECT  UPPER(name), price FROM Products ORDER BY price;          -- UPPER() 将字段的值变为大写,LOWER() 变为小写,LENGTH() 返回字符串长度

SELECT AVG(price) AS avg_price FROM Products;          -- AVG() 求该列的平均值,COUNT() 求行数,MAX()、MIN() 该列最大最小值,SUM() 求该列之和

SELECT COUNT(*) AS num_items, MIN(price) AS price_min, MAX(price) AS price_max, AVG(price) AS price_avg FROM Products;

SELECT name, CAST(price AS char(4)) AS produ_price FROM Products WHERE price < 4;        -- CAST转换数据类型为 chat,并设定字段长度为4

    

7.分组数据   

SELECT id, COUNT(*) AS num FROM Products GROUP BY id;        -- GROUP BY 分组,查询每个 id 的商品数量

SELECT id, COUNT(*) AS num FROM Products GROUP BY id HAVING COUNT(*) >= 2;        -- HAVING 过滤分组,WHERE过滤行

SELECT id, COUNT(*) AS num FROM Products GROUP BY id HAVING COUNT(*) >= 2 ORDER BY num;        -- RODER BY 排序,升序

   

8.SELECT 子句执行顺序

子  句   说  明 是否必须使用
SELECT 要返回的列或表达
FROM 从中检索数据的表 仅在从表选择数据时使用
WHERE 行级过滤
GROUP BY 分组说明 仅在按组计算聚集时使用
HAVING 组级过滤
ORDER BY 输出排序顺序

9.子查询

         -------------------------待更新----------------------------------

猜你喜欢

转载自blog.csdn.net/CSDN_fzs/article/details/100015398
今日推荐