第八章|MySQL数据库|数据操作

Posted kris12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第八章|MySQL数据库|数据操作相关的知识,希望对你有一定的参考价值。

1、数据操作

SQL(结构化查询语言),可以操作关系型数据库

通过sql可以创建、修改账号并控制账号权限;  通过sql可以创建、修改数据库、表;  通过sql可以增删改查数据;

可以通过SQL语句中的DML语言来实现数据的操作,包括

  1. 使用INSERT实现数据的插入
  2. UPDATE实现数据的更新
  3. 使用DELETE实现数据的删除
  4. 使用SELECT查询数据以及。

1.1数据的增删改查

插入数据INSERT 

1. 插入完整数据(顺序插入)
    语法一:
    INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n);
    语法二:
    INSERT INTO 表名 VALUES (值1,值2,值3…值n);

2. 指定字段插入数据
    语法:
    INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…);

3. 插入多条记录
    语法:
    INSERT INTO 表名 VALUES
        (值1,值2,值3…值n),
        (值1,值2,值3…值n),
        (值1,值2,值3…值n);

4. 插入查询结果
    语法:
    INSERT INTO 表名(字段1,字段2,字段3…字段n) 
                    SELECT (字段1,字段2,字段3…字段n) FROM 表2
                    WHERE …;
更新数据UPDATE 
语法:
    UPDATE 表名 SET
        字段1=值1,
        字段2=值2,
        WHERE CONDITION;
示例:
    UPDATE mysql.user SET password=password(‘123’) 
        where user=’root’ and host=’localhost’;

删除数据DELETE 
语法:
    DELETE FROM 表名 
        WHERE CONITION;
示例:
    DELETE FROM mysql.user 
        WHERE password=’’;

练习:
    更新MySQL root用户密码为mysql123
    删除除从本地登录的root用户以外的所有用户

1.2单表查询

把表中所有行和列都列举出来使用“*” 来表示所有的列如select * from student; 

查询部分行和列需要列举不同的列名,而查询部分分行需要where子句进行条件限制,如select studentNo,studentName,address from student where address = \'河南新乡\';

在查询中使用列的别名,AS子句可以用来改变结果集中列的名称,也可以为组合或计算出的列指定名称,让标题列的信息更易懂。如select studentNo AS 学生编号,studentName as 学生姓名,address as 学生地址 from student where address = ‘河南新乡’;   还有一种情况是为通过计算、合并得到的新列命名 如select firstName+ ‘.’+lastName as 姓名 from employee

 

单表查询

select distinct 字段1,字段2,字段3 from 库.表 
    where 条件
    group by 分组条件
    having 过滤  having运行完之后不是去运行order,而是去运行distinct后边的字段,进行去重;distinct运行完之后再运行order by
    order by 排序字段
    limit n; 最后再运行limit
   
#########简单查询 
mysql> use db5;
Database changed
mysql> desc employee;
+--------------+-----------------------+------+-----+---------+----------------+
| Field        | Type                  | Null | Key | Default | Extra          |
+--------------+-----------------------+------+-----+---------+----------------+
| id           | int(11)               | NO   | PRI | NULL    | auto_increment |
| name         | varchar(20)           | NO   |     | NULL    |                |
| sex          | enum(\'male\',\'female\') | NO   |     | male    |                |
| age          | int(3) unsigned       | NO   |     | 28      |                |
| hire_date    | date                  | NO   |     | NULL    |                |
| post         | varchar(50)           | YES  |     | NULL    |                |
| post_comment | varchar(100)          | YES  |     | NULL    |                |
| salary       | double(15,2)          | YES  |     | NULL    |                |
| office       | int(11)               | YES  |     | NULL    |                |
| depart_id    | int(11)               | YES  |     | NULL    |                |
+--------------+-----------------------+------+-----+---------+----------------+
10 rows in set (0.16 sec)

mysql> select * from employee;
+----+------------+--------+-----+------------+-----------------------------------------+--------------+------------+--------+-----------+
| id | name       | sex    | age | hire_date  | post                                    | post_comment | salary     | office | depart_id |
+----+------------+--------+-----+------------+-----------------------------------------+--------------+------------+--------+-----------+
|  1 | egon       | male   |  18 | 2017-03-01 | 老男孩驻沙河办事处外交大使                  | NULL         |    7300.33 |    401 |         1 |
|  2 | alex       | male   |  78 | 2015-03-02 | teacher                                 | NULL         | 1000000.31 |    401 |         1 |
|  3 | wupeiqi    | male   |  81 | 2013-03-05 | teacher                                 | NULL         |    8300.00 |    401 |         1 |
|  4 | yuanhao    | male   |  73 | 2014-07-01 | teacher                                 | NULL         |    3500.00 |    401 |         1 |
|  5 | liwenzhou  | male   |  28 | 2012-11-01 | teacher                                 | NULL         |    2100.00 |    401 |         1 |
|  6 | jingliyang | female |  18 | 2011-02-11 | teacher                                 | NULL         |    9000.00 |    401 |         1 |
|  7 | jinxin     | male   |  18 | 1900-03-01 | teacher                                 | NULL         |   30000.00 |    401 |         1 |
|  8 | 成龙       | male   |  48 | 2010-11-11 | teacher                                 | NULL         |   10000.00 |    401 |         1 |
|  9 | 歪歪       | female |  48 | 2015-03-11 | sale                                    | NULL         |    3000.13 |    402 |         2 |
| 10 | 丫丫       | female |  38 | 2010-11-01 | sale                                    | NULL         |    2000.35 |    402 |         2 |
| 11 | 丁丁       | female |  18 | 2011-03-12 | sale                                    | NULL         |    1000.37 |    402 |         2 |
| 12 | 星星       | female |  18 | 2016-05-13 | sale                                    | NULL         |    3000.29 |    402 |         2 |
| 13 | 格格       | female |  28 | 2017-01-27 | sale                                    | NULL         |    4000.33 |    402 |         2 |
| 14 | 张野       | male   |  28 | 2016-03-11 | operation                               | NULL         |   10000.13 |    403 |         3 |
| 15 | 程咬金     | male   |  18 | 1997-03-12 | operation                               | NULL         |   20000.00 |    403 |         3 |
| 16 | 程咬银     | female |  18 | 2013-03-11 | operation                               | NULL         |   19000.00 |    403 |         3 |
| 17 | 程咬铜     | male   |  18 | 2015-04-11 | operation                               | NULL         |   18000.00 |    403 |         3 |
| 18 | 程咬铁     | female |  18 | 2014-05-12 | operation                               | NULL         |   17000.00 |    403 |         3 |
+----+------------+--------+-----+------------+-----------------------------------------+--------------+------------+--------+-----------+
18 rows in set (0.00 sec)
mysql> select id,name,salary from employee;
+----+------------+------------+
| id | name       | salary     |
+----+------------+------------+
|  1 | egon       |    7300.33 |
|  2 | alex       | 1000000.31 |
|  3 | wupeiqi    |    8300.00 |
|  4 | yuanhao    |    3500.00 |
|  5 | liwenzhou  |    2100.00 |
|  6 | jingliyang |    9000.00 |
|  7 | jinxin     |   30000.00 |
|  8 | 成龙       |   10000.00 |
|  9 | 歪歪       |    3000.13 |
| 10 | 丫丫       |    2000.35 |
| 11 | 丁丁       |    1000.37 |
| 12 | 星星       |    3000.29 |
| 13 | 格格       |    4000.33 |
| 14 | 张野       |   10000.13 |
| 15 | 程咬金     |   20000.00 |
| 16 | 程咬银     |   19000.00 |
| 17 | 程咬铜     |   18000.00 |
| 18 | 程咬铁     |   17000.00 |
+----+------------+------------+
18 rows in set (0.00 sec)

mysql> select post from employee;
+-----------------------------------------+
| post                                    |
+-----------------------------------------+
| 老男孩驻沙河办事处外交大使              |
| teacher                                 |
| teacher                                 |
| teacher                                 |
| teacher                                 |
| teacher                                 |
| teacher                                 |
| teacher                                 |
| sale                                    |
| sale                                    |
| sale                                    |
| sale                                    |
| sale                                    |
| operation                               |
| operation                               |
| operation                               |
| operation                               |
| operation                               |
+-----------------------------------------+
18 rows in set (0.00 sec)

mysql> select distinct post from employee;  ##distinct是避免重复
+-----------------------------------------+
| post                                    |
+-----------------------------------------+
| 老男孩驻沙河办事处外交大使                  |
| teacher                                 |
| sale                                    |
| operation                               |
+-----------------------------------------+
4 rows in set (0.08 sec)

mysql> select name,salary*12 from employee;  ##通过四则运算查询 
+------------+-------------+
| name       | salary*12   |
+------------+-------------+
| egon       |    87603.96 |
| alex       | 12000003.72 |
| wupeiqi    |    99600.00 |
| yuanhao    |    42000.00 |
| liwenzhou  |    25200.00 |
| jingliyang |   108000.00 |
| jinxin     |   360000.00 |
| 成龙       |   120000.00 |
| 歪歪       |    36001.56 |
| 丫丫       |    24004.20 |
| 丁丁       |    12004.44 |
| 星星       |    36003.48 |
| 格格       |    48003.96 |
| 张野       |   120001.56 |
| 程咬金     |   240000.00 |
| 程咬银     |   228000.00 |
| 程咬铜     |   216000.00 |
| 程咬铁     |   204000.00 |
+------------+-------------+
18 rows in set (0.09 sec)

mysql> select name,salary*12 annual_salary from employee;
+------------+---------------+
| name       | annual_salary |
+------------+---------------+
| egon       |      87603.96 |
| alex       |   12000003.72 |
| wupeiqi    |      99600.00 |
| yuanhao    |      42000.00 |
| liwenzhou  |      25200.00 |
| jingliyang |     108000.00 |
| jinxin     |     360000.00 |
| 成龙       |     120000.00 |
| 歪歪       |      36001.56 |
| 丫丫       |      24004.20 |
| 丁丁       |      12004.44 |
| 星星       |      36003.48 |
| 格格       |      48003.96 |
| 张野       |     120001.56 |
| 程咬金     |     240000.00 |
| 程咬银     |     228000.00 |
| 程咬铜     |     216000.00 |
| 程咬铁     |     204000.00 |
+------------+---------------+
18 rows in set (0.00 sec)

mysql> select concat(\'姓名:\', name, \'性别:\', sex)as info from employee;  ##concat通常用于连接字符串 
+--------------------------------+
| info                           |
+--------------------------------+
| 姓名:egon性别:male             |
| 姓名:alex性别:male             |
| 姓名:wupeiqi性别:male          |
| 姓名:yuanhao性别:male          |
| 姓名:liwenzhou性别:male        |
| 姓名:jingliyang性别:female     |
| 姓名:jinxin性别:male           |
| 姓名:成龙性别:male             |
| 姓名:歪歪性别:female           |
| 姓名:丫丫性别:female           |
| 姓名:丁丁性别:female           |
| 姓名:星星性别:female           |
| 姓名:格格性别:female           |
| 姓名:张野性别:male             |
| 姓名:程咬金性别:male           |
| 姓名:程咬银性别:female         |
| 姓名:程咬铜性别:male           |
| 姓名:程咬铁性别:female         |
+--------------------------------+
18 rows in set (0.14 sec)

mysql> select concat(\'姓名:\', name, \'性别:\', sex) as info, concat(\'年薪:\', salar
y*12) as annual_salary from employee;
+--------------------------------+--------------------+
| info                           | annual_salary      |
+--------------------------------+--------------------+
| 姓名:egon性别:male             | 年薪:87603.96      |
| 姓名:alex性别:male             | 年薪:12000003.72   |
| 姓名:wupeiqi性别:male          | 年薪:99600.00      |
| 姓名:yuanhao性别:male          | 年薪:42000.00      |
| 姓名:liwenzhou性别:male        | 年薪:25200.00      |
| 姓名:jingliyang性别:female     | 年薪:108000.00     |
| 姓名:jinxin性别:male           | 年薪:360000.00     |
| 姓名:成龙性别:male             | 年薪:120000.00     |
| 姓名:歪歪性别:female           | 年薪:36001.56      |
| 姓名:丫丫性别:female           | 年薪:24004.20      |
| 姓名:丁丁性别:female           | 年薪:12004.44      |
| 姓名:星星性别:female           | 年薪:36003.48      |
| 姓名:格格性别:female           | 年薪:48003.96      |
| 姓名:张野性别:male             | 年薪:120001.56     |
| 姓名:程咬金性别:male           | 年薪:240000.00     |
| 姓名:程咬银性别:female         | 年薪:228000.00     |
| 姓名:程咬铜性别:male           | 年薪:216000.00     |
| 姓名:程咬铁性别:female         | 年薪:204000.00     |
+--------------------------------+--------------------+
18 rows in set (0.00 sec)

mysql> select concat(name, \':\', age) from employee;
+------------------------+
| concat(name, \':\', age) |
+------------------------+
| egon:18                |
| alex:78                |
| wupeiqi:81             |
| yuanhao:73             |
| liwenzhou:28           |
| jingliyang:18          |
| jinxin:18              |
| 成龙:48                |
| 歪歪:48                |
| 丫丫:38                |
| 丁丁:18                |
| 星星:18                |
| 格格:28                |
| 张野:28                |
| 程咬金:18              |
| 程咬银:18              |
| 程咬铜:18              |
| 程咬铁:18              |
+------------------------+
18 rows in set (0.00 sec)

mysql> select concat_ws(\':\', name, sex, age) from employee;  ##concat_ws()第一个参数为分隔符
+--------------------------------+
| concat_ws(\':\', name, sex, age) |
+--------------------------------+
| egon:male:18                   |
| alex:male:78                   |
| wupeiqi:male:81                |
| yuanhao:male:73                |
| liwenzhou:male:28              |
| jingliyang:female:18           |
| jinxin:male:18                 |
| 成龙:male:48                   |
| 歪歪:female:48                 |
| 丫丫:female:38                 |
| 丁丁:female:18                 |
| 星星:female:18                 |
| 格格:female:28                 |
| 张野:male:28                   |
| 程咬金:male:18                 |
| 程咬银:female:18               |
| 程咬铜:male:18                 |
| 程咬铁:female:18               |
+--------------------------------+
18 rows in set (0.00 sec)
练习:
1 查出所有员工的名字,薪资,格式为 <名字:egon> <薪资:3000> 2 查出所有的岗位(去掉重复) 3 查出所有员工名字,以及他们的年薪,年薪的字段名为annual_year
mysql> select concat(\'<名字>:\', name, \'>\')from employee;
+--------------------------------+
| concat(\'<名字>:\', name, \'>\')   |
+--------------------------------+
| <名字>:egon>                   |
| <名字>:alex>                   |
| <名字>:wupeiqi>                |
| <名字>:yuanhao>                |
| <名字>:liwenzhou>              |
| <名字>:jingliyang>             |
| <名字>:jinxin>                 |
| <名字>:成龙>                   |
| <名字>:歪歪>                   |
| <名字>:丫丫>                   |
| <名字>:丁丁>                   |
| <名字>:星星>                   |
| <名字>:格格>                   |
| <名字>:张野>                   |
| <名字>:程咬金>                 |
| <名字>:程咬银>                 |
| <名字>:程咬铜>                 |
| <名字>:程咬铁>                 |
+--------------------------------+
18 rows in set (0.00 sec)

mysql> select concat(\'<名字>:\', name, \'>\'), concat(\'<薪资:\', salary, \'>\') from employee;
+--------------------------------+---------------------------------+
| concat(\'<名字>:\', name, \'>\')   | concat(\'<薪资:\', salary, \'>\')   |
+--------------------------------+---------------------------------+
| <名字>:egon>                   | <薪资:7300.33>                  |
| <名字>:alex>                   | <薪资:1000000.31>               |
| <名字>:wupeiqi>                | <薪资:8300.00>                  |
| <名字>:yuanhao>                | <薪资:3500.00>                  |
| <名字>:liwenzhou>              | <薪资:2100.00>                  |
| <名字>:jingliyang>             | <薪资:9000.00>                  |
| <名字>:jinxin>                 | <薪资:30000.00>                 |
| <名字>:成龙>                   | <薪资:10000.00>                 |
| <名字>:歪歪>                   | <薪资:3000.13>                  |
| <名字>:丫丫>                   | <薪资:2000.35>                  |
| <名字>:丁丁>                   | <薪资:1000.37>                  |
| <名字>:星星>                   | <薪资:3000.29>                  |
| <名字>:格格>                   | <薪资:4000.33>                  |
| <名字>:张野>                   | <薪资:10000.13>                 |
| <名字>:程咬

以上是关于第八章|MySQL数据库|数据操作的主要内容,如果未能解决你的问题,请参考以下文章

第八章|MySQL数据库|库操作|表操作

第八章| 2. MySQL数据库|数据操作| 权限管理

MySQL比知必会第八章 用通配符进行过滤

20165103java程序设计第八章查漏补缺

第八章· MySQL日志管理

第八章数据库后台编程技术