江苏福彩快三经典sql函数大全,MySQL学习笔记

作者:江苏福彩快三计算机网络

SQL GROUP BY 详解及简单实例,sqlgroup

 GROUP BY 语句用于结合 Aggregate 函数,根据一个或多个列对结果集进行分组。

SQL GROUP BY 语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

 演示数据库

在本教程中,我们将使用众所周知的 Northwind 样本数据库。

下面是选自 "Orders" 表的数据:

OrderID CustomerID EmployeeID OrderDate ShipperID
10248 90 5 1996-07-04 3
10249 81 6 1996-07-05 1
10250 34 4 1996-07-08 2

选自 "Shippers" 表的数据:

ShipperID ShipperName Phone
1 Speedy Express (503) 555-9831
2 United Package (503) 555-3199
3 Federal Shipping (503) 555-9931

选自 "Employees" 表的数据:

EmployeeID LastName FirstName BirthDate Photo Notes
1 Davolio Nancy 1968-12-08 EmpID1.pic Education includes a BA....
2 Fuller Andrew 1952-02-19 EmpID2.pic Andrew received his BTS....
3 Leverling Janet 1963-08-30 EmpID3.pic Janet has a BS degree....

 SQL GROUP BY 实例

现在我们想要查找每个送货员配送的订单数目。

下面的 SQL 语句按送货员进行订单分类统计:

SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName;

GROUP BY 一个以上的列

我们也可以对一个以上的列应用 GROUP BY 语句,如下所示:

SELECT Shippers.ShipperName, Employees.LastName,
COUNT(Orders.OrderID) AS NumberOfOrders
FROM ((Orders
INNER JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID)
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY ShipperName,LastName;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

GROUP BY 详解及简单实例,sqlgroup GROUP BY 语句用于结合 Aggregate 函数,根据一个或多个列对结果集进行分组。 SQL GROUP BY 语法 SELECT column_n...

SQL FORMAT() 实例

  我们拥有下面这个 "Products" 表:   

Prod_Id ProductName Unit UnitPrice
1 gold 1000 g 32.35
2 silver 1000 g 11.56
3 copper 1000 g 6.85

现在,我们希望显示每天日期所对应的名称和价格(日期的显示格式是 "YYYY-MM-DD")。
  我们使用如下 SQL 语句:
  SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD, ') as PerDateFROM Products结果集类似这样:   

ProductName UnitPrice PerDate
gold 32.35 12/29/2008
silver 11.56 12/29/2008
copper 6.85 12/29/2008

参考自:runoob

Date 数据类型

类型 格式
DATE 格式:YYYY-MM-DD
DATETIME 格式:YYYY-MM-DD HH:MM:SS
TIMESTAMP 格式:YYYY-MM-DD HH:MM:SS
YEAR 格式:YYYY 或 YY

SQL FIRST() 语法

  SELECT FIRST(column_name) FROM table_name

BETWEEN

BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

AND & OR

多条件
例:

SELECT Name 
FROM student_4088 
WHERE Birth LIKE '%9%'
AND
(
Name LIKE '小%'
OR
Sex like '女' 
);

江苏福彩快三,ROUND() 函数

  ROUND 函数用于把数值字段舍入为指定的小数位数。   

UNION

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

Attention: UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

/*默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。*/
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

江苏福彩快三 1

img

江苏福彩快三 2

img

另外,带where的union all会这样:

江苏福彩快三 3

img

COUNT()

COUNT() 函数返回匹配指定条件的行数。

SELECT COUNT(column_name) FROM table_name;

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

SELECT COUNT(DISTINCT column_name) FROM table_name;

SQL SUM() 语法

  SELECT SUM(column_name) FROM table_name

SQL Function

函数

MIN() 函数

  MIN 函数返回一列中的最小值。NULL 值不包括在计算中。   

Where

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

其他扩展

GROUP BY 语句

  GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。   

正则表达式

/* 正则表达式匹配 */
SELECT * FROM Websites
WHERE name REGEXP '^[GFs]';

/* 正则表达式匹配 否定形式 */
SELECT * FROM Websites
WHERE name NOT REGEXP '^[GFs]';

MID()

MID() 函数用于从文本字段中提取字符。

SELECT MID(column_name,start[,length]) FROM table_name;
参数 意义
column_name 字段
start 开始位置默认为1
length 长度

SQL ROUND() 实例

  我们拥有下面这个 "Products" 表:   

Prod_Id ProductName Unit UnitPrice
1 gold 1000 g 32.35
2 silver 1000 g 11.56
3 copper 1000 g 6.85

现在,我, 们希望把名称和价格舍入为最接近的整数。
  我们使用如下 SQL 语句:
  SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products结果集类似这样:   

ProductName UnitPrice
gold 32
silver 12
copper 7

apps表

 ---- ------------ ------------------------- --------- 
| id | app_name   | url                     | country |
 ---- ------------ ------------------------- --------- 
|  1 | QQ APP     | http://im.qq.com/       | CN      |
|  2 | 微博 APP | http://weibo.com/       | CN      |
|  3 | 淘宝 APP | https://www.taobao.com/ | CN      |
 ---- ------------ ------------------------- --------- 

Number 类型:

数据类型 描述
TINYINT(size) -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。
SMALLINT(size) -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。
MEDIUMINT(size) -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。
INT(size) -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。
BIGINT(size) -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615
FLOAT(size,d) 带有浮动小数点的小数字。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DOUBLE(size,d) 带有浮动小数点的大数字。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DECIMAL(size,d) 作为字符串存储的 DOUBLE 类型,允许固定的小数点。在size参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。

*这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。
如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。

SQL MID() 语法

  SELECT MID(column_name,start[,length]) FROM table_name

参数 描述
column_name 必需。要提取字符的字段。
start 必需。规定开始位置(起始值是 1)。
length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

Order by

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

Note that ASC is the default way.


TRUNCATE TABLE 语句

删除表内的数据,但并不删除表本身。

TRUNCATE TABLE table_name

SQL GROUP BY 实例

  我们拥有下面这个 "Orders" 表:   

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

现在,我们希望查找每个客户的总金额(总订单)。
  我们想要使用 GROUP BY 语句对客户进行组合。
  我们使用下列 SQL 语句:
  SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY Customer结果集类似这样:   

Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000

很棒吧,对不对?
  让我们看一下如果省略 GROUP BY 会出现什么情况:
  SELECT Customer,SUM(OrderPrice) FROM Orders结果集类似这样:   

Customer SUM(OrderPrice)
Bush 5700
Carter 5700
Bush 5700
Bush 5700
Adams 5700
Carter 5700

上面的结果集不是我们需要的。
  那么为什么不能使用上面这条 SELECT 语句呢?解释如下:上面的 SELECT 语句指定了两列(Customer 和 SUM(OrderPrice))。"SUM(OrderPrice)" 返回一个单独的值("OrderPrice" 列的总计),而 "Customer" 返回 6 个值(每个值对应 "Orders" 表中的每一行)。因此,我们得不到正确的结果。不过,您已经看到了,GROUP BY 语句解决了这个问题。

Basic Usage

/* Select */
SELECT column_name,column_name
FROM table_name;

SELECT * FROM table_name;

/* Insert */
INSERT INTO table_name
VALUES (value1,value2,value3,...);

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

/* Update */
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

/* Delete */
DELETE FROM table_name
WHERE some_column=some_value;

DROP

SQL LCASE() 实例

  我们拥有下面这个 "Persons" 表:   

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

现在,我们希望选取 "LastName" 和 "FirstName" 列的内容,然后把 "LastName" 列转换为小写。
  我们使用如下 SQL 语句:
  SELECT LCASE(LastName) as LastName,FirstName FROM Persons结果集类似这样:   

LastName FirstName
adams John
bush George
carter Thomas

HAVING

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用

HAVING 子句可以让我们筛选分组后的各组数据

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

查找访问量大于200的网站

SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

DISTINCT

仅列出不同值

SELECT DISTINCT column_name,column_name
FROM table_name;

SQL GROUP BY 语法

  SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name

通配符

在 SQL 中,通配符与 SQL LIKE 操作符一起使用,SQL 通配符用于搜索表中的数据。

通配符 描述
_ 代替一个字符
% 代替0或多个字符
[字符串] 字符串中的任意一个字符
[^字符串] 或 [!字符串] 不在字符串中的任意一个字符
SELECT * FROM Websites
WHERE url LIKE 'https%';

RIGHT JOIN

RIGHT JOIN 关键字从右表返回所有的行,即使左表中没有匹配。如果左表中没有匹配,则结果为 NULL。
右边都有左边看情况。
江苏福彩快三 4

SELECT column_name(s)
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column_name=table2.column_name;

例:

SELECT s.name, c.C_name, c.Grade
FROM student_4088 AS s
RIGHT JOIN score_4088 AS c
ON s.Id = c.Stu_id;

函数的类型

  在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是:
  Aggregate 函数 Scalar 函数

INNER JOIN

江苏福彩快三 5

SQL INNER JOIN

语法如下:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

/*或者*/
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

/* 实例 */
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count;

举例如下:

江苏福彩快三 6

img

INNER JOIN

INNER JOIN 关键字在表中存在至少一个匹配时返回行。
交集
江苏福彩快三 7

SELECT column_name(s)
FROM table1
[INNER] JOIN table2
ON table1.column_name=table2.column_name;

例:

SELECT s.name, c.C_name, c.Grade
FROM student_4088 AS s
INNER JOIN score_4088 AS c
ON s.Id = c.Stu_id;

SQL UCASE() 语法

  SELECT UCASE(column_name) FROM table_name

Access_log 表

 ----- --------- ------- ------------ 
| aid | site_id | count | date       |
 ----- --------- ------- ------------ 
|   1 |       1 |    45 | 2016-05-10 |
|   2 |       3 |   100 | 2016-05-13 |
|   3 |       1 |   230 | 2016-05-14 |
|   4 |       2 |    10 | 2016-05-14 |
|   5 |       5 |   205 | 2016-05-14 |
|   6 |       4 |    13 | 2016-05-15 |
|   7 |       3 |   220 | 2016-05-15 |
|   8 |       5 |   545 | 2016-05-16 |
|   9 |       3 |   201 | 2016-05-17 |
 ----- --------- ------- ------------ 

LENGTH()

LENGTH() 函数返回文本字段中值的长度。

SELECT LENGTH(column_name) FROM table_name;

SQL ROUND() 语法

  SELECT ROUND(column_name,decimals) FROM table_name

参数 描述
column_name 必需。要舍入的字段。
decimals 必需。规定要返回的小数位数。

演示数据库说明

删除索引

例子 2

  现在,我们希望找到 OrderPrice 值高于 OrderPrice 平均值的客户。
  我们使用如下 SQL 语句:
  SELECT Customer FROM OrdersWHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)结果集类似这样:   

Customer
Bush
Carter
Adams

COUNT() 函数COUNT() 函数返回匹配指定条件的行数。

GROUP BY

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

江苏福彩快三 8

img

精确搜索

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

例:

SELECT Name 
FROM student 
WHERE Sex = '男';

SQL UCASE() 实例

  我们拥有下面这个 "Persons" 表:   

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

现在,我们希望选取 "LastName" 和 "FirstName" 列的内容,然后把 "LastName" 列转换为大写。
  我们使用如下 SQL 语句:
  SELECT UCASE(LastName) as LastName,FirstName FROM Persons结果集类似这样:   

LastName FirstName
ADAMS John
BUSH George
CARTER Thomas

Advanced

Date 类型:

数据类型 描述
DATE() 日期。格式:YYYY-MM-DD、注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’
DATETIME() *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’
TIMESTAMP() *时间戳。TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至今的秒数来存储。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC
TIME() 时间。格式:HH:MM:SS注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’
YEAR() 2 位或 4 位格式的年。注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。

*即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。
在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。
TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。

本文由江苏福彩快三发布,转载请注明来源

关键词: 江苏福彩快三