sql: count, order by, join

LIKE

为了在搜索子句中使用通配符,必须使用LIKE操作符

⚠️通配符搜索只能用于文本字段(字符串),对于非文本数据类型不能使用通配符搜索。

通配符出现在中间:

SELECT prod_name
FROM Products 
WHERE prod_name LIKE 'F%y'   -- 找出F开头y结尾的数据

⚠️:百分号%能够匹配任意位置的0个、1个或者多个字符,但是不能匹配NULL

下划线_

下划线通配符的用途和百分号类似,但是它只能匹配一个字符,百分号是匹配多个字符,这是二者的区别。

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '__ inch teddy bear'   --  前面是两个下划线_

-- 结果
prod_id           prod_name
-------           ---------
BR02              12 inch teddy bear   -- 12或者18刚好是两个字符
BR03              18 inch teddy bear

 

方括号[]

方括号[]通配符用来指定一个字符集,它必须匹配指定位置的一个字符。

SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%'    -- 匹配JM当中一个字母开头,后面是任意字符的内容
ORDER BY cust_contact
  • [JM]:匹配其中一个字符
  • %:匹配任意内容

取反字符^

使用取反符号^来否定内容:

SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[^JM]%'   -- 匹配不是JM开头的任意内容
ORDER BY cust_contact;

使用NOT操作符可以得到类似上面的结果:

SELECT cust_contact
FROM Customers
WHERE NOT cust_contact LIKE '[JM]%'   -- 匹配不是JM开头的任意内容;NOT表示取反,否定内容
ORDER BY cust_contact;

通配符使用技巧

⚠️通配符使用的几点注意事项:

  1. 不要过度使用通配符
  2. 如果确实需要使用通配符,尽可能不要将它们放在搜索模式的开始位置。通配符处于开始处,搜索是最慢的。

 

 

FULL JOIN 

FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。

"Persons" 表:

Id_PLastNameFirstNameAddressCity
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

 

"Orders" 表:

Id_OOrderNoId_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

 

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

 

LastNameFirstNameOrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George  
    34764

 

 

Order By

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

 

COUNT

COUNT(*) 函数返回表中的记录数

SELECT COUNT(*) FROM table_name

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)

SELECT COUNT(column_name) FROM table_name

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目

SELECT COUNT(DISTINCT column_name) FROM table_name

 

posted @ 2021-08-18 17:28  Raylan  阅读(248)  评论(0)    收藏  举报