第八章|MySQL数据库|数据操作
Posted kris12
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第八章|MySQL数据库|数据操作相关的知识,希望对你有一定的参考价值。
1、数据操作
SQL(结构化查询语言),可以操作关系型数据库
通过sql可以创建、修改账号并控制账号权限; 通过sql可以创建、修改数据库、表; 通过sql可以增删改查数据;
可以通过SQL语句中的DML语言来实现数据的操作,包括
- 使用INSERT实现数据的插入
- UPDATE实现数据的更新
- 使用DELETE实现数据的删除
- 使用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数据库|数据操作的主要内容,如果未能解决你的问题,请参考以下文章