《MySQL必知必会》练习(3-13)

看《MySQL必知必会》

第三章

3.3 了解数据库和表

  • show databases;返回可用数据库的一个列表。
    《MySQL必知必会》练习(3-13)_第1张图片

  • show tables;返回当前选择的数据库内可用表的列表。
    《MySQL必知必会》练习(3-13)_第2张图片

  • show columns form (表名);返回要查询的表的每一列的属性。
    《MySQL必知必会》练习(3-13)_第3张图片

  • show status;用于显示广泛的服务器状态信息。

  • show create database和show create table,分别用来显示创建特定数据库或表的Mysql语句。

  • show grants;用来显示授予用户的安全权限。

  • show errors和show warnings;用来显示服务器错误或警告信息。

第四章 检索数据

4.2 检索单个列

  • select pod_name from products; 从products表中检索一个名为prod_name的列。
    《MySQL必知必会》练习(3-13)_第4张图片
    4.3 检索多个列

  • select prod_id,prod_name,prod_price from products;
    《MySQL必知必会》练习(3-13)_第5张图片

4.4 检索所有列

  • select * from products;
    《MySQL必知必会》练习(3-13)_第6张图片

4.5 检索不同的列

  • select distinct vend_id from products;
    《MySQL必知必会》练习(3-13)_第7张图片

4.6 限制结果

  • select prod_name from products limit 5,5;第一个数为开始位置,第二个数为要检索的行数。
    《MySQL必知必会》练习(3-13)_第8张图片

4.7 使用完全限定的表明

  • select products.prod_name from study.products;
    《MySQL必知必会》练习(3-13)_第9张图片
第五章 排序检索数据

5.1 排序数据

  • select prod_name from products order by prod_name;以字母顺序排序数据。
    《MySQL必知必会》练习(3-13)_第10张图片

5.2 按多个列排序

  • select prod_id, prod_price, prod_name from products order by prod_price, prod_name;首先按价格,然后按名字排序。(多个列排序时,仅在多个行具有相同的prod_price值时,才对产品按prod_name进行排序。)
    《MySQL必知必会》练习(3-13)_第11张图片

5.3 指定排序方向

  • select prod_id, prod_price, prod_name from products order by prod_price desc, prod_name;(默认的排序为顺序)desc关键字只应用到直接位于前面的列名。
    《MySQL必知必会》练习(3-13)_第12张图片
  • select prod_price from products order by prod_price desc limit 1;找出最昂贵物品的值。
    在这里插入图片描述
第六章 过滤数据

6.1使用where子句

  • SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;返回prod_price值为2.50的行。
    《MySQL必知必会》练习(3-13)_第13张图片

where子句操作符

操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
between 在指定的两个值之间

6.2.1检查单个值

  • SELECT prod_name, prod_price FROM products WHERE prod_name = ‘fuses’;返回prod_name的值为fuses的一行。
    《MySQL必知必会》练习(3-13)_第14张图片

  • SELECT prod_name, prod_price FROM products WHERE prod_price <= 10;检索小于等于10的所有产品。
    《MySQL必知必会》练习(3-13)_第15张图片

6.2.2 不匹配检查

  • SELECT vend_id, prod_name FROM products WHERE vend_id <> 1003;不由供应商1003制造的所有产品。
    《MySQL必知必会》练习(3-13)_第16张图片

6.2.3 范围检查

  • SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;检索在5美元和10美元之间的所有产品。
    《MySQL必知必会》练习(3-13)_第17张图片

6.2.4 空值检查

  • SELECT prod_name FROM products WHERE prod_price IS NULL;检查具有NULL值的列。

  • SELECT cust_id FROM customers WHERE cust_email IS NULL;
    《MySQL必知必会》练习(3-13)_第18张图片

第七章 数据过滤

7.1 组合WHERE子句

操作符用来联结或改变WHERE子句中的子句的关键字。也称为逻辑操作符。

7.1.1 AND操作符

AND 用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。

  • SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;检索供应商1003制造且小于等于10美金的所有的名称和价格。
    《MySQL必知必会》练习(3-13)_第19张图片

7.1.2 OR操作符

OR 检索匹配任一条件即可。

  • SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003;检索由任一个指定供应商制造的所有产品的产品名和价格。
    《MySQL必知必会》练习(3-13)_第20张图片

7.1.3计算次序

  • SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;优先处理AND操作符。
    《MySQL必知必会》练习(3-13)_第21张图片

  • SELECT prod_name, prod_price FROM products WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;
    《MySQL必知必会》练习(3-13)_第22张图片

7.2 IN操作符

  • SELECT prod_name, prod_price FROM products WHERE vend_id IN (1002,1003) ORDER BY prod_name;检索供应商1002和1003制造的所有产品。(功能与OR相当)
    《MySQL必知必会》练习(3-13)_第23张图片

7.3 NOT操作符

NOT WHERE子句中用来否定后跟条件的关键字。

  • SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN(1002,1003) ORDER BY prod_name;检索除了1002和1003之外的所有供应商制造的产品。
    《MySQL必知必会》练习(3-13)_第24张图片
第八章 用通配符进行过滤

8.1 LIKE操作符
通配符 用来匹配值的一部分的特殊字符。
搜索模式 由字面值、通配符或两者组合构成的搜索条件。

LIKE操作符,指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等进行比较。

8.1.1 百分号(%)通配符

**%**表示任意和字符出现任意次数。

  • SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘jet%’;检索任意以jet起头的词。
    《MySQL必知必会》练习(3-13)_第25张图片

  • SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘%anvil%’;
    《MySQL必知必会》练习(3-13)_第26张图片

8.1.2 下划线(_)通配符

**(_)**用途与%一样,但下划线只匹配单个字符而不是多个字符。

  • SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘_ ton anvil’;
    《MySQL必知必会》练习(3-13)_第27张图片
第九章 用正则表达式进行搜索

9.1 正则表达式介绍

正则表达式是用来匹配文本的特殊的串(字符集合)。

9.2 使用MySQL正则表达式

9.2.1 基本字符匹配

  • SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000’ ORDER BY prod_name;检索prod_name包含文本1000的所有行。
    《MySQL必知必会》练习(3-13)_第28张图片

  • SELECT prod_name FROM products WHERE prod_name REGEXP ‘.000’ ORDER BY prod_name;’.'表示匹配任意一个字符
    《MySQL必知必会》练习(3-13)_第29张图片

9.2.2 进行OR匹配

为搜索两个串之一,使用|。

  • SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000|2000’ ORDER BY prod_name;
    《MySQL必知必会》练习(3-13)_第30张图片

9.2.3 匹配几个字符之一

  • SELECT prod_name FROM products WHERE prod_name REGEXP ‘[123] Ton’ ORDER BY prod_name;[123]定义一组字符,它的意思时匹配1或2或3。
    《MySQL必知必会》练习(3-13)_第31张图片

9.2.4 匹配范围

  • SELECT prod_name FROM products WHERE prod_name REGEXP ‘[1-5] Ton’ ORDER BY prod_name;
    《MySQL必知必会》练习(3-13)_第32张图片

9.2.5 匹配特殊字符

为了匹配特殊字符,必须用\为前导。

  • SELECT vend_name FROM vendors WHERE vend_name REGEXP ‘\\.’ ORDER BY vend_name;
    《MySQL必知必会》练习(3-13)_第33张图片

9.2.6 匹配字符类

字符类
《MySQL必知必会》练习(3-13)_第34张图片

9.2.7 匹配多个实例

重复元字符
《MySQL必知必会》练习(3-13)_第35张图片

  • SELECT prod_name FROM products WHERE prod_name REGEXP ‘\\([0-9] sticks?\\)’ ORDER BY prod_name;\\(匹配),[0-9]匹配任意数字,sticks?匹配stick和sticks(?匹配它前面的任何字符的0次或一次出现),\\)匹配)。
    《MySQL必知必会》练习(3-13)_第36张图片

  • SELECT prod_name FROM products WHERE prod_name REGEXP ‘[[:digit:]]{4}’ ORDER BY prod_name;匹配连在一起的任意4位数字。
    《MySQL必知必会》练习(3-13)_第37张图片

9.2.8 定位符

定位元字符
《MySQL必知必会》练习(3-13)_第38张图片

  • SELECT prod_name FROM products WHERE prod_name REGEXP ‘^[0-9\.]’ ORDER BY prod_name;查找以一个数(包含以小数点开始的输)开始的所有产品。
    《MySQL必知必会》练习(3-13)_第39张图片
第十章 创建计算字段

10.2 拼接字段

拼接 将值联结到一起构成单个值。
可用Concat()函数来拼接两个列。

  • SELECT Concat(vend_name,’(’,vend_country,’)’) FROM vendors ORDER BY vend_name;
    《MySQL必知必会》练习(3-13)_第40张图片

  • SELECT Concat(RTrim(vend_name),’(’,RTrim(vend_country),’)’) FROM vendors ORDER BY vend_name;RTrim()函数去掉值右边的所有空格。
    《MySQL必知必会》练习(3-13)_第41张图片

使用别名

  • SELECT Concat(RTrim(vend_name),’(’,RTrim(vend_country),’)’) AS vend_title FROM vendors ORDER BY vend_name;
    《MySQL必知必会》练习(3-13)_第42张图片

10.3 执行算数计算

  • SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderitems WHERE order_num = 20005;
    《MySQL必知必会》练习(3-13)_第43张图片
第十一章 使用数据处理函数

11.2.1 文本出路函数

  • SELECT vend_name, Upper(vend_name) AS vend_name_upcse FROM vendors ORDER BY vend_name;Upper()将文本转换为大写。
    《MySQL必知必会》练习(3-13)_第44张图片

常用的文本处理函数
《MySQL必知必会》练习(3-13)_第45张图片《MySQL必知必会》练习(3-13)_第46张图片
SOUNDEX是一个将任何文本串转换为描述气语音表示的字母数字模式的算法。

11.2.2 日期和时间处理函数

常用日期和时间处理函数
《MySQL必知必会》练习(3-13)_第47张图片

  • SELECT cust_id, order_num FROM orders WHERE Date(order_date) BETWEEN ‘2005-09-01’ AND ‘2005-09-30’;
    《MySQL必知必会》练习(3-13)_第48张图片

11.2.3 数据处理函数

常用数据处理函数
《MySQL必知必会》练习(3-13)_第49张图片

第十二章 汇总数据

12.1 聚集函数

运行在行组上,计算和返回单个值得函数。

SQL聚集函数
《MySQL必知必会》练习(3-13)_第50张图片

12.1.1 AVG()函数

  • SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id = 1003;
    《MySQL必知必会》练习(3-13)_第51张图片

12.1.2 COUNT()函数

  • SELECT COUNT(*) AS num_cust FROM customers;
    《MySQL必知必会》练习(3-13)_第52张图片

12.2 聚集不同值

  • SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 1003;
    《MySQL必知必会》练习(3-13)_第53张图片

12.3 组合聚集函数

  • SELECT COUNT(*) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max, AVG(prod_price) AS price_avg FROM products;
    《MySQL必知必会》练习(3-13)_第54张图片
第十三章 分组数据

13.2 创建分组

分组实在SELECT语句得GROUP BY子句中建立得。

  • SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id;
    《MySQL必知必会》练习(3-13)_第55张图片

13.3 过滤分组

  • SELECT vend_id, COUNT() AS num_prods FROM products WHERE prod_price >= 10 GROUP BY vend_id HAVING COUNT() >= 2;列出具有两个(含)以上、价格为10(含)以上得产品得供应商。
    《MySQL必知必会》练习(3-13)_第56张图片

13.4 分组和排序
《MySQL必知必会》练习(3-13)_第57张图片

  • SELECT order_num, SUM(quantityitem_price) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(quantityitem_price) >= 50 ORDER BY ordertotal;
    《MySQL必知必会》练习(3-13)_第58张图片

13.5 SELECT子句顺序
《MySQL必知必会》练习(3-13)_第59张图片《MySQL必知必会》练习(3-13)_第60张图片

你可能感兴趣的:(mysql)