SQL必知必会

必赢365net手机版 9

1.LIKE操作符

1.1**百分号(%)通配符**

SELECT
prod_id, prod_name FROM Products WHERE prod_name LIKE
‘Fish%

必赢365net手机版 1

此例子使用了搜索模式’Fish%’。在执行这条子句时,将检索任意以Fish起头的词。%告诉DBMS接受Fish之后的任意字符,不管它有多少字符。

说明:区分大小写
根据DBMS的不同及其配置,搜索可以是区分大小写的。如果区分大小写,则’fish%’与Fish
bean bag toy就不匹配。

通配符可在搜索模式中的任意位置使用,并且可以使用多个通配符。下面的例子使用两个通配符,它们位于模式的两端
:
SELECT prod_id,
prod_name FROM Products WHERE prod_name LIKE ‘%bean bag%’ 
必赢365net手机版 2

需要特别注意,除了能匹配一个或多个字符外,%还能匹配0个字符。%代表搜索模式中给定位置的0个、1个或多个字符。

警告:请注意NULL
通配符%看起来像是可以匹配任何东西,但有个例外,这就是NULL。子句WHERE
prod_name LIKE ‘%’不会匹配产品名称为NULL的行。

1.2下划线(_)通配符

SELECT
prod_id, prod_name FROM Products WHERE prod_name LIKE
__ inch teddy bear’

必赢365net手机版 3

下划线的用途与%一样,但它只匹配单个字符,而不是多个字符。

1.3方括号([])通配符

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

说明:并不总是支持集合
与前面描述的通配符不一样,并不是所有DBMS都支持用来创建集合的[]。只有微软的Access和SQL Server支持集合。为确定你使用的DBMS是否支持集合,请参阅相应的文档。

SELECT
cust_contact
FROM Customers
WHERE cust_contact LIKE
‘[JM]%’
ORDER BY cust_contact;

此通配符可以用前缀字符^(脱字号)来否定。 

2.使用通配符的技巧

正如所见,SQL的通配符很有用。但这种功能是有代价的,即通配符搜索一般比前面讨论的其他搜索要耗费更长的处理时间。这里给出一些使用通配符时要记住的技巧。

  • 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
  • 在确实需要使用通配符时,也尽量不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。
  • 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

总之,通配符是一种极其重要和有用的搜索工具,以后我们经常会用到它。

3.创建计算字段

3.1拼接字段

mysql语法:

SELECT
Concat
(vend_name, ‘ (‘, vend_country, ‘)’ AS
vend_title FROM Vendors
ORDER BY
vend_name;

必赢365net手机版 4

concat()主要是去除多余的空格。

SELECT语句本身与以前使用的相同,只不过这里的计算字段之后跟了文本AS
vend_title。它指示SQL创建一个包含指定计算结果的名为vend_title的计算字段。从输出可以看到,结果与以前的相同,但现在列名为vend_title,任何客户端应用都可以按名称引用这个列,就像它是一个实际的表列一样。
说明:**AS**通常可选
在很多DBMS中,AS关键字是可选的,不过最好使用它,这被视为一条最佳实践。
提示:别名的其他用途
别名还有其他用途。常见的用途包括在实际的表列名包含不合法的字符(如空格)时重新命名它,在原来的名字含混或容易误解时扩充它。
警告:别名
别名既可以是一个单词也可以是一个字符串。如果是后者,字符串应该括在引号中。虽然这种做法是合法的,但不建议这么去做。多单词的名字可读性高,不过会给客户端应用带来各种问题。因此,别名最常见的使用是将多个单词的列名重命名为一个单词的名字。
说明:导出列
别名有时也称为导出列(derived column),不管怎么叫,它们所代表的是相同的东西。

3.2执行算术计算

计算字段的另一常见用途是对检索出的数据进行算术计算。

SELECT
order_num,
prod_id,
quantity,
item_price,
quantity*item_price AS expanded_price
FROM
OrderItems
WHERE
order_num = 20008;

必赢365net手机版 5

输出中显示的expanded_price列是一个计算字段,此计算为quantity*item_price。

必赢365net手机版 6

 

提示:如何测试计算
SELECT语句为测试、检验函数和计算提供了很好的方法。虽然SELECT通常用于从表中检索数据,但是省略了FROM子句后就是简单地访问和处理表达式,例如SELECT
3 * 2;将返回6,SELECT
Trim(‘ abc ‘);将返回abc,SELECT
Now();使用Now()函数返回当前日期和时间。现在你明白了,可以根据需要使用SELECT语句进行检验。

4.使用函数

4.1文本处理数据

全部字母变为大写:

SELECT
vend_name, UPPER(vend_name) AS vend_name_upcase
FROM
Vendors
ORDER BY
vend_name;

必赢365net手机版 7

 

可以看到,UPPER()将文本转换为大写,因此本例子中每个供应商都列出两次,第一次为Vendors表中存储的值,第二次作为列vend_name_upcase转换为大写。

必赢365net手机版 8

4.2日期和时间处理函数

必赢365net手机版,这个在不同的数据库中差别比较大

MySQL和MariaDB具有各种日期处理函数,但没有DATEPART()。MySQL和MariaDB用户可使用名为YEAR()的函数从日期中提取年份:
输入:
SELECT
order_num
FROM Orders
WHERE YEAR(order_date) = 2012;

4.3数值处理函数

必赢365net手机版 9

数值函数都是差不多的,自行看文档解决即可。

作者:今孝
出处: 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

觉得好就点个推荐把!

Leave a Comment.