mysql>SELECT COUNT(*), MIN(prod_price), MAX(prod_price),

->AVG(prod_price) FROM products;

单条SELECT语句执行了4个聚集计算,返回4个值

   

   

  • 来得表列

->WHERE SOUNDEX(name) = SOUNDEX(‘雷君’)

  • SUM()函数

那是 《MySQL 必知必会》 的读书计算。也是投机械收割拾的常用操作的参照他事他说加以考察手册。

归来当明天期

  • 本来联结
  • 凯旋门074网址 ,中间统一(等值联结)

mysql>SELECT username FROM tmall_user;

寻找串的三个子串

   

  • 外界联结

  

再次来到日期的年度部分

Minute()

  • 更新数据(UPDATE 语句)

mysql>SHOW DATABASES;

排序数据(O哈弗DEKuga BY 子句)

  • 界定结果
  • 点名排序方向

回到串左侧的字符

更新和删除数据

Now()

Right()

安排数据

函数

mysql>SELECT prod_name FROM products

->WHERE vend_id IN (1002, 1003)

->ORDER BY prod_name;

查询供应商1002和1003制造的所有产品

IN WHERE 子句中用来指定要匹配值得清单的关键字,功能与 OR 相当

mysql>SELECT cust_name, cust_state, (SELECT COUNT(*)FROM orders

-> WHERE orders.cust_id = customers.cust_id) AS orders

->FROM customers

->ORDER BY cust_name;

查询customers表中每个客户的订单总数。订单与相应客户ID存储在orders表中

  • SELECT 子句顺序

   

mysql>SELECT name FROM tmall_user

  • 作为计量字段使用子查询
  • 查询满意条件的行
  • 一对操作符的例证

Day()

mysql>USE mytest;

   

Soundex()

mysql>SELECT username FROM tmall_user

->ORDER BY username;

对 username 结构列以字母顺序排列数据

子查询

  • 结合 WHERE 子句(逻辑操作符)
  • 挑选数据库

mysql>SELECT prod_id, prod_name FROM products

->WHERE vend_id = (SELECT vend_id FROM products

-> WHERE prod_id = ‘DTNTR’);

mysql>SELECT p1.prod_id, p1.prod_name

->FROM products AS p1, products AS p2

->WHERE p1.vend_id = p2.vend_id AND p2.prod_id = ‘DTNTR’

选择某物品的供应商所生产的其他物品,第一种方法使用子查询,第二种方法使用自联结,推荐用自联结而不用子查询。

使用表别名的主要原因是能在单条SELECT语句中不止一次引用相同的表

mysql>SELECT prod_name FROM products

->WHERE vend_id NOT (1002, 1003)

->ORDER BY prod_name;

查询除1002和1003之外的所用供应商制造的产品

NOT WHERE 子句中用来否定后跟条件的关键字,MySQL中的 NOT 支持使用 对 IN、BETWEEN 和 EXISTS 子句取反

动用日期比较过滤查询结果

   

回来子串的字符

  • 澳门凯旋门游戏网址 ,MAX()函数和MIN()函数

mysql>SELECT username FROM tmall_user LIMIT 5

返回5行

mysql>SELECT username FROM tmall_user LIMIT 5,5

返回从第5行开始的5行

注:查询结果的第一行为行0,因此,LIMIT 1,1 将检索出第二行

新语法:LIMIT 4 OFFSET 3 从行3开始取4行,就像 LIMIT 3,4 一样

回去日期时间的日期部分

mysql>SELECT tmall_user.username FROM mytest.tmall_user;

Time()

mysql>SELECT cust_name, cust_contact

->FROM customers AS c, orders AS o, orderitems AS oi

->WHERE c.cust_id = o.cust_id

-> AND oi.order_num = o.order_num

-> AND prod_id = ‘TNT2’;

   

不要省略WHERE子句,再使用UPDATE时一定要注意细心。因为稍不注意,就会更新表中所有行。

UPDATE customers SET cust_email = ‘elmer@fudd.com’

WHERE cust_id = 10005;

更新多个列

UPDATE customers SET cust_email = ‘The Fudds’, cust_email = ‘elmer@fudd.com’

WHERE cust_id = 10005;

  

Ltrim()

mysql>SELECT prod_name, prod_price FROM products

->WHERE prod_price = 2.50

返回 prod_price 值为 2.50 的行

mysql>SELECT customers.cust_name, customers.cust_id,

-> COUNT(orders.order_num) AS num_ord

->FROM customers INNER JOIN orders

-> ON customers.cust_id = orders.cust_id

->GROUP BY customers.cust_id;

检索所有客户及每个客户所下的订单数

mysql>SELECT customers.cust_name, customers.cust_id,

-> COUNT(orders.order_num) AS num_ord

->FROM customers LEFT OUTER JOIN orders

-> ON customers.cust_id = orders.cust_id

->GROUP BY customers.cust_id;

检索所有客户及每个客户所下的订单数(包括没有下订单的客户)

mysql>SELECT prod_id, prod_price, prod_name FROM products

->ORDER BY prod_peice, prod_name;

查询三个列,先按照价格排序,然后再按名称排序

归来日期的天命部分

mysql>SELECT vend_name, prod_name, prod_price

->FROM vendors, products

->WHERE vendors.vend_id = products.vend_id

->ORDER BY vend_name, prod_name;

这两个表用WHERE子句联结,需要完全限定列名。

由没有联结条件的表关系返回的结果为笛卡尔积,检索出的行数=表1的行数×表2的行数。应该保证所有联结都有WHERE子句。

mysql>SELECT vend_name, prod_name, prod_price

->FROM vendors INNER JOIN products

->ON vendors.vend_id = products.vend_id;

两个表之间的关系以 INNER JOIN 指定,ON 的条件与上例 WHERE 条件相同

mysql>SELECT COUNT(*) FROM customers;

对所有行进行计数,包括列值为NULL的行

mysql>SELECT COUNT(name) FROM tmall_user;

只对有昵称的行进行计数,忽略列值为NULL的行

  • 按多个列排序

->WHERE DATE(time) = ‘2016-09-21’;

意义与上例同样

  • 统一多少个表(内部统一)

   

任何字符出现率性次数,不能够相配 NULL

查询2014年7月注册的用户数量

  • 骨干查询(SELECT 语句)。SHOW 的其他用法

返回:雷军

  • AVG() 函数
  • 利用联结的要点

mysql>SELECT prod_id, prod_price, prod_name FROM products

->ORDER BY prod_price DESC

默认的排序是升序排序,DESC 关键字指定降序排序(价格由高到低)

  • 骨干查询(SELECT 语句)。COUNT() 函数

SubString()

mysql>SELECT count(id) FROM tmall_user

  • 运用表外号

回去日期时间的年华部分

  • 询问全体列

可观灵活的日期运算函数

分组数据(GROUP BY 子句和 HAVING 子句)

AddDate()

   

  • 组合聚焦函数

回到串SOUNDEX值(依照发音相比而不是字母比较)

测算八个日子之差

  • 数值管理函数

重返时间的分钟部分

别的一个字符

  • 光阴和日期管理函数

骨干查询(SELECT 语句)。大旨查询(SELECT 语句)

mysql>SELECT customers.cust_id, orders.order_num

->FROM customers INNER LEFT OUTER JOIN orders

->ON customers.cust_id = orders.cust_id;

查询所有客户及其订单,包括没有订单的客户,

LEFT 指从左边的表选择所有行

RIGHT 指从右边的表选择所有行

mysql>SELECT prod_price FROM products

->ORDER BY prod_price DESC

->LIMIT 1;

查询价格最贵的那个商品

mysql>SELECT cust_name, cust_contact FROM customers

->WHERE cust_id IN (SELECT cust_id FROM orders

-> WHERE order_num IN(SELECT order_num

-> FROM orderitems

-> WHERE prod_id = ‘TNT2’));

虽然子查询一般与IN操作符结合使用,但也可以用于测试等于=、不等于<>。

去掉串左侧的空格

Date_Add()

  • 骨干查询(SELECT 语句)。创建分组

重临日期对应的星期数

  • 自联结
  • 骨干查询(SELECT 语句)。过滤分组

自然联结排除多次出现,使每个列只返回一次。这一般是通过对第一个表使用SELECT *,对所有其他的表使用明确的子集来完成的。

mysql>SELECT c*, o.order_num, o.order_date, oi.prod_id, oi_quantity,

->oi.item_price

->FROM customers AS c, orders AS o, orderitems AS oi

->WHERE c.cust_id = o.cust_id

->AND oi.order_num = o.order_num

->AND prod_id = ‘FB’;

回到当前几日子

mysql>SELECT username, password, time FROM tmall_user;

规范

mysql>SELECT DISTINCT password FROM tmall_user;

注:DISTINCT 关键字应用于所有列。

重返贰个格式化的日期或时间串

mysql>SHOW TABLES;

Date_Format

回去日期的月份部分

mysql>SELECT AVG(prod_price) FROM products;

返回所有products表中产品的平均价格

mysql>SELECT AVG(prod_price) FROM products

->WHERE vend_id = 1003;

返回特定供应商所提供产品的平均价格

AVG() 函数只应用于单个列,忽略列值为NULL的行

  • LIKE 操作符(通配符过滤)
  • 运用 O昂CoraDEWrangler BY 和 LIMIT 的重组,搜索一个列中最高或最低的值

重组查询(UNION 操作符)

->WHERE Year(time) = 2016 AND Month(time) = 9;

->WHERE prod_name LIKE ‘s%e’;

  • 骨干查询(SELECT 语句)。集中函数

mysql>SELECT vend_id, COUNT(*) FROM products

->GROUP BY vend_id;

按vend_id排序并分组数据,COUNT()会对每个 vend_id 分组计算 num_prods 一次而不是对整个表计算。

   

回到当后天子和岁月

Abs()

  

Cos()

  

Mod()

  

Pi()

  

Rand()

  

Sin()

  

Sqrt()

  

Tan()

  

  • 行使完全限定的列名、表名

回去时间的钟点有些

mysql>SELECT MAX(prod_price) FROM products;

返回最贵的物品的价格

MAX()函数一般用于找出最大的数值或日期值,但也可以返回任意列中的最大值。在用于文本数据时,按照相应顺序排序,返回最后一行。

MAX()函数忽略列值为NULL的行

MIN()函数与MAX()函数功能相反。

=

等于

<>

不等于

!=

不等于

<

小于

<=

小于等于

>

大于

>=

大于等于

BETWEEN

在指定的两个值之间

   

AND

OR

Year()

Hour()

   

AVG()

返回某列的平均值

COUNT()

返回某列的行数

MAX()

返回某列的最大值

MIN()

返回某列的最小值

SUM()

返回某列值之和

Second()

mysql>SELECT * FROM tmall_user;

CurTime()

  • 连接到 MySQL

Left()

  • 展现数据库中的表

查询以s最先以e结尾的制品

  • 多少个列排序并内定方向

Month()

  

Locate()

  • IN 操作符

mysql>SELECT SUM(quantity) FROM orderitems

->WHERE order_num = 20005;

查询所订购物品的总数(所有quantity之和)

mysql>SELECT SUM(item_price*quantity) FROM orderitems

->WHERE order_num = 20005;

查询所订购物品的总金额。

全文本寻找

  • 保证正确的联结条件
  • 应该总是提供联结条件,否则会得出笛卡尔积
  • 如果一个联结中包含多个表,甚至每个联结采用不同的联结类型,应当先分别测试每个联结,这将使故障排除更为简单。

mysql>SELECT count(id) FROM tmall_user

  • 查询多列
  • 对 SQL 关键字接纳大写,而对全体列和表名使用小写,那样做使代码更便于阅读和调节和测试。
  • 其余时候使用全部 AND 和 O路虎极光 操作符的 WHERE 子句,都应该利用圆括号鲜明地分组操作符。
  • 毫不过分使用通配符,通配符平日消耗越多的时间。
  • 使用聚焦函数来聚集数据,比你在和睦的软件中总括要快得多,那么些函数是火速设计的。
  • 用逐步子查询来构造建设查询

查询条件(WHERE 子句)

  • 呈现数据库

Date()

Upper()

   

  • 查询预约物品TNT2的具有客户

_

%

mysql>SELECT prod_name, vend_name, prod_price, quantity

->FROM orderitems, products, vendors

->WHERE products.vend_id = vendors.vend_id

-> AND orderitems.prod_id = products.prod_id

-> AND order_num = 20005;

mysql>SELECT cust_name, cust_contact

->FROM customers, orders, orderitems

->WHERE customers.cust_id = orders.cust_id

-> AND orderitems.order_num = orders.order_num

-> AND prod_id = ‘TNT2’;

使用联结查询订购物品TNT2的所有客户

归来串右侧的字符

mysql>SELECT prod_name FROM products

去掉串左侧的空格

  • 带聚焦函数的联结

转变为题写

  • 排列数据
  • 文本管理函数

使用 MySQL

SELECT

要返回的列或表达式

FROM

要查询的表

WHERE

行过滤

GROUP BY

分组

HAVING

分组过滤

ORDER BY

输出排序顺序

LIMIT

行数

mysql>SELECT prod_name, prod_price FROM products

->WHERE prod_price < 10;

列出价格小于 10 的所有产品

mysql>SELECT vend_id, prod_name FROM products

->WHERE vend_id <> 1003;

列出不是由供应商1003制造的所有产品

mysql>SELECT prod_name, prod_price FROM products

->WHERE prod_price BETWEEN 5 AND 10

查询价格在 5 和 10 之间的所有产品

mysql>SELECT prod_name FROM products

->WHERE prod_price IS NULL;

查询价格列值为 NULL 的行。(空值=值为NULL)

mysql>SELECT prod_id, prod_price, prod_name FROM products

->ORDER BY prod_price DESC, prod_name;

以降序排序产品(价格从高到低),然后再对产品名排序。

注:DESC 关键字之应用到直接位于其前面的列名,如果想在多个列上进行降序排序,必须对每个列指定 DESC 关键字。

  • WHERE 子句操作符

DateDiff()

mysql>SHOW STATUS;

显示服务器的状态信息

mysql>SHOW CREATE DATABASE mytest;

显示创建数据库的语句

mysql>SHOW CREATE TABLE tmall_user;

显示创建表的语句

mysql>SHOW GRANTS;

显示授权用户的安全权限

mysql>SHOW ERRORS;

显示服务器错误

mysql>SHOW WARNINGS;

显示服务器警告信息

   

回来串的尺寸

HAVING 非常类似于 WHERE。HAVING 支持所有 WHERE 操作符。他们之间的差别是WHERE 过滤行,而HAVING 过滤分组。

另一种理解:WHERE 在数据分组前进行过滤,HAVING 在数据分组后进行过滤。

mysql>SELECT cust_id, COUNT(*) FROM orders

->GROUP BY cust_id

->HAVING COUNT(*) >= 2;

过滤两个以上的订单的分组

mysql>SELECT vend_id, COUNT(*) FROM products

->WHERE prod_price >=10

->GROUP BY vend_id

->HAVING COUNT(*) >= 2;

列出具有两个以上,价格为10以上的产品的供应商

mysql>SELECT order_num, SUM(quantity*item_price) AS ordertotal

->FROM orderitems

->ORDER BY order_num

->HANVING SUM(quantity*item_price) >= 50

->ORDER BY ordertoal;

GROUP BY 子句按照订单号分组数据,以便SUM(*)返回总计订单价格。HAVING 子句过滤数据,使得返回总计订单价格>=50的订单。最后用ORDER BY排序输出。

   

Length()

DayOfWeek()

  • 询问不一样行

AddTime()

mysql>SELECT AVG(DISTINCT prod_price) FROM products

->WHERE vend_id = 1003;

返回特定供应商的产品的平均价格,平均值只考虑各个不同的价格。

  • NOT 操作符

CurDate()

mysql>SELECT username FROM tmall_user

  • 集聚不一样值(DISTINCT)

->WHERE DATE(time) BETWEEN ‘2016-09-01’ AND ‘2016-09-30’;

联结表

shell>mysql -u root -p

Enter password:******

mysql>SHOW COLUMNS FROM tmall_user;

mysql>DESCRIBE tmall_user;

第二种方法与第一种方法效果相同

  • 询问某列

   

回去时间的秒数部分

Rtrim()

聚集数据(集中函数)

   

  • 创办联结

   

相关文章