mysql学习--mysql必知必会

Posted xfgnongmin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql学习--mysql必知必会相关的知识,希望对你有一定的参考价值。

? 技术图片

上图为数据库操作分类:

?

?

下面的操作參考(mysql必知必会)

创建数据库 运行脚本建表:

mysql> create database mytest;
Query OK, 1 row affected (0.07 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| mytest             |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

mysql> use myte
ERROR 1049 (42000): Unknown database ‘myte‘
mysql> use mytest;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> source /home/huangcd/mysql_scripts/create.sql
mysql> source /home/huangcd/mysql_scripts/populate.sql


?

mysql> show tables;
+------------------+
| Tables_in_mytest |
+------------------+
| customers        |
| orderitems       |
| orders           |
| productnotes     |
| products         |
| vendors          |
+------------------+
6 rows in set (0.02 sec)



删除反复行:

mysql> select vend_id from products;
+---------+
| vend_id |
+---------+
|??? 1001 |
|??? 1001 |
|??? 1001 |
|??? 1002 |
|??? 1002 |
|??? 1003 |
|??? 1003 |
|??? 1003 |
|??? 1003 |
|??? 1003 |
|??? 1003 |
|??? 1003 |
|??? 1005 |
|??? 1005 |
+---------+
14 rows in set (0.00 sec)

mysql> select distinct vend_id from products;
+---------+
| vend_id |
+---------+
|??? 1001 |
|??? 1002 |
|??? 1003 |
|??? 1005 |
+---------+
4 rows in set (0.04 sec)

?

?返回结果中不多于5行:

mysql> select prod_name from products
??? -> limit 5;
+--------------+
| prod_name??? |
+--------------+
| .5 ton anvil |
| 1 ton anvil? |
| 2 ton anvil? |
| Detonator??? |
| Bird seed??? |
+--------------+
5 rows in set (0.00 sec)

?从第5行開始的5行:

mysql> select prod_name
??? -> from products
??? -> limit 5,5;
+--------------+
| prod_name??? |
+--------------+
| Carrots????? |
| Fuses??????? |
| JetPack 1000 |
| JetPack 2000 |
| Oil can????? |
+--------------+
5 rows in set (0.00 sec)

order by 子句对一个或者多个列进行输出排序:

mysql> select prod_name
??? -> from products
??? -> order by prod_name;
+----------------+
| prod_name????? |
+----------------+
| .5 ton anvil?? |
| 1 ton anvil??? |
| 2 ton anvil??? |
| Bird seed????? |
| Carrots??????? |
| Detonator????? |
| Fuses????????? |
| JetPack 1000?? |
| JetPack 2000?? |
| Oil can??????? |
| Safe?????????? |
| Sling????????? |
| TNT (1 stick)? |
| TNT (5 sticks) |
+----------------+

首先按price排序,仅仅有price同样时,才依照名称排序:

mysql> select prod_id, prod_price, prod_name
??? -> from products
??? -> order by prod_price, prod_name;
+---------+------------+----------------+
| prod_id | prod_price | prod_name????? |
+---------+------------+----------------+
| FC????? |?????? 2.50 | Carrots??????? |
| TNT1??? |?????? 2.50 | TNT (1 stick)? |
| FU1???? |?????? 3.42 | Fuses????????? |
| SLING?? |?????? 4.49 | Sling????????? |
| ANV01?? |?????? 5.99 | .5 ton anvil?? |
| OL1???? |?????? 8.99 | Oil can??????? |
| ANV02?? |?????? 9.99 | 1 ton anvil??? |
| FB????? |????? 10.00 | Bird seed????? |
| TNT2??? |????? 10.00 | TNT (5 sticks) |
| DTNTR?? |????? 13.00 | Detonator????? |
| ANV03?? |????? 14.99 | 2 ton anvil??? |
| JP1000? |????? 35.00 | JetPack 1000?? |
| SAFE??? |????? 50.00 | Safe?????????? |
| JP2000? |????? 55.00 | JetPack 2000?? |
+---------+------------+----------------+
14 rows in set (0.05 sec)

默认排序方式是升序,若用降序必须用DESCkeyword:

mysql> select prod_id, prod_price, prod_name from products order by prod_price DESC;
+---------+------------+----------------+
| prod_id | prod_price | prod_name????? |
+---------+------------+----------------+
| JP2000? |????? 55.00 | JetPack 2000?? |
| SAFE??? |????? 50.00 | Safe?????????? |
| JP1000? |????? 35.00 | JetPack 1000?? |
| ANV03?? |????? 14.99 | 2 ton anvil??? |
| DTNTR?? |????? 13.00 | Detonator????? |
| TNT2??? |????? 10.00 | TNT (5 sticks) |
| FB????? |????? 10.00 | Bird seed????? |
| ANV02?? |?????? 9.99 | 1 ton anvil??? |
| OL1???? |?????? 8.99 | Oil can??????? |
| ANV01?? |?????? 5.99 | .5 ton anvil?? |
| SLING?? |?????? 4.49 | Sling????????? |
| FU1???? |?????? 3.42 | Fuses????????? |
| FC????? |?????? 2.50 | Carrots??????? |
| TNT1??? |?????? 2.50 | TNT (1 stick)? |
+---------+------------+----------------+
14 rows in set (0.02 sec)

mysql> select prod_id, prod_price, prod_name from products order by prod_price DESC, prod_name;
+---------+------------+----------------+
| prod_id | prod_price | prod_name????? |
+---------+------------+----------------+
| JP2000? |????? 55.00 | JetPack 2000?? |
| SAFE??? |????? 50.00 | Safe?????????? |
| JP1000? |????? 35.00 | JetPack 1000?? |
| ANV03?? |????? 14.99 | 2 ton anvil??? |
| DTNTR?? |????? 13.00 | Detonator????? |
| FB????? |????? 10.00 | Bird seed????? |
| TNT2??? |????? 10.00 | TNT (5 sticks) |
| ANV02?? |?????? 9.99 | 1 ton anvil??? |
| OL1???? |?????? 8.99 | Oil can??????? |
| ANV01?? |?????? 5.99 | .5 ton anvil?? |
| SLING?? |?????? 4.49 | Sling????????? |
| FU1???? |?????? 3.42 | Fuses????????? |

?

?价格最高的一个:

mysql> select prod_price
    -> from products
    -> order by prod_price desc
    -> limit 1;
+------------+
| prod_price |
+------------+
|      55.00 |
+------------+
1 row in set (0.12 sec)


?技术图片技术图片

?

?

mysql> select prod_name, prod_price 
    -> from products
    -> where prod_price between 5 and 10;
+----------------+------------+
| prod_name      | prod_price |
+----------------+------------+
| .5 ton anvil   |       5.99 |
| 1 ton anvil    |       9.99 |
| Bird seed      |      10.00 |
| Oil can        |       8.99 |
| TNT (5 sticks) |      10.00 |
+----------------+------------+
5 rows in set (0.09 sec)


?空值检查:

mysql> select prod_name
    -> from products
    -> where prod_price is null;
Empty set (0.01 sec)

mysql> select cust_id
    -> from customers
    -> where cust_email is null;
+---------+
| cust_id |
+---------+
|   10002 |
|   10005 |
+---------+
2 rows in set (0.00 sec)


?

?or操作符:

mysql> select prod_name,prod_price from products where vend_id =1002 or vend_id = 1003;
+----------------+------------+
| prod_name      | prod_price |
+----------------+------------+
| Detonator      |      13.00 |
| Bird seed      |      10.00 |
| Carrots        |       2.50 |
| Fuses          |       3.42 |
| Oil can        |       8.99 |
| Safe           |      50.00 |
| Sling          |       4.49 |
| TNT (1 stick)  |       2.50 |
| TNT (5 sticks) |      10.00 |
+----------------+------------+
9 rows in set (0.05 sec)


?

?in操作符:

mysql> select prod_name, prod_price
    -> from products 
    -> where vend_id in (1002, 1003)
    -> order by prod_name;
+----------------+------------+
| prod_name      | prod_price |
+----------------+------------+
| Bird seed      |      10.00 |
| Carrots        |       2.50 |
| Detonator      |      13.00 |
| Fuses          |       3.42 |
| Oil can        |       8.99 |
| Safe           |      50.00 |
| Sling          |       4.49 |
| TNT (1 stick)  |       2.50 |
| TNT (5 sticks) |      10.00 |
+----------------+------------+
9 rows in set (0.07 sec)


in最大的长处是能够包括其它select子句。

?

not操作符:

mysql> select prod_name, prod_price
    -> from products
    -> where vend_id not in (1002, 1003)
    -> order by prod_name;
+--------------+------------+
| prod_name    | prod_price |
+--------------+------------+
| .5 ton anvil |       5.99 |
| 1 ton anvil  |       9.99 |
| 2 ton anvil  |      14.99 |
| JetPack 1000 |      35.00 |
| JetPack 2000 |      55.00 |
+--------------+------------+
5 rows in set (0.00 sec)


?

?在搜索子句中使用通配符,必须使用like操作符。like指示后跟的搜索模式是通配符而不是直接相等匹配。

?

?

?%通配符:随意字符出现随意次数

mysql> select prod_id, prod_name
    -> from products
    -> where prod_name like ‘jet%‘
    -> ;
+---------+--------------+
| prod_id | prod_name    |
+---------+--------------+
| JP1000  | JetPack 1000 |
| JP2000  | JetPack 2000 |
+---------+--------------+
2 rows in set (0.05 sec)
mysql> select prod_id, prod_name from products where prod_name like ‘%anvil%‘;
+---------+--------------+
| prod_id | prod_name    |
+---------+--------------+
| ANV01   | .5 ton anvil |
| ANV02   | 1 ton anvil  |
| ANV03   | 2 ton anvil  |
+---------+--------------+
3 rows in set (0.00 sec)



_通配符:匹配随意单个字符

mysql> select prod_id, prod_name from products where prod_name like ‘_ton anvil‘;
Empty set (0.00 sec)

mysql> select prod_id, prod_name from products where prod_name like ‘_ ton anvil‘;
+---------+-------------+
| prod_id | prod_name   |
+---------+-------------+
| ANV02   | 1 ton anvil |
| ANV03   | 2 ton anvil |
+---------+-------------+
2 rows in set (0.00 sec)


?

mysql必知必会前八章如上。

?

?

以上是关于mysql学习--mysql必知必会的主要内容,如果未能解决你的问题,请参考以下文章

《MySQL必知必会学习笔记》:子查询

《MySQL必知必会学习笔记》:高级联结

《mysql必知必会》学习2018/7/24--欢

mysql必知必会学习笔记

《MySQL必知必会学习笔记》:正则表达式

《mysql必知必会》学习_第23章_20180809