Ⅰ 记录的详细操作
- 增加记录
- insert 表名(字段1,字段2) values(记录1,记录1),(记录2,记录2) ;
- insert 表名1 select 字段1,字段2 from 库名.表名2; -- 可将表名2中的字段1和2的记录插入到表1
mysql> create table user(id int primary key auto_increment,name varchar(11),password varchar(11)); -- 首先创建一个表
Query OK, 0 rows affected (0.01 sec)
mysql> insert user(name,password) values('qing','1314520'); -- 普通方式插入一条记录
Query OK, 1 row affected (0.00 sec)
mysql> create table user4(name varchar(88),password varchar(88)); -- 建立一个普通的账号密码表
Query OK, 0 rows affected (0.01 sec)
mysql> insert user4 select user,password from mysql.user; -- 从一个表中读取数据并插入新表
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from user4;
+------+-------------------------------------------+
| name | password |
+------+-------------------------------------------+
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | |
| root | |
| | |
+------+-------------------------------------------+
4 rows in set (0.00 sec)
mysql> insert user3 values('qing','1234'),('zhu','521'),('zeng','520'); -- 在表3中插入数据
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> insert user4 select name,password from db1.user3; -- 骚操作>>>从表3中读取数据插入表4
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from user4; -- 查看表4的插入效果
+------+-------------------------------------------+
| name | password |
+------+-------------------------------------------+
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | |
| root | |
| | |
| qing | 1234 |
| zhu | 521 |
| zeng | 520 |
+------+-------------------------------------------+
7 rows in set (0.00 sec)
Ⅱ 修改记录
- update 表 set 字段=值 where 条件;
mysql> update user4 set name='shuai' where name='zhu'; -- 将表4里面的字段name的值改成'shuai',
Query OK, 1 row affected (0.00 sec) 条件是改原字段等于'zhu'的
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from user4;
+-------+-------------------------------------------+
| name | password |
+-------+-------------------------------------------+
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | |
| root | |
| | |
| qing | 1234 |
| shuai | 521 | -- 原'zhu'已经被改成'shuai'
| zeng | 520 |
+-------+-------------------------------------------+
7 rows in set (0.00 sec)
Ⅲ 删除记录
- delete from 表 where 条件;
mysql> delete from user4 where name='qing'; -- 删除表4中字段为'qing'的记录
Query OK, 1 row affected (0.00 sec)
mysql> select * from user4;
+-------+-------------------------------------------+
| name | password |
+-------+-------------------------------------------+
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | |
| root | |
| | |
| shuai | 521 |
| zeng | 520 |
+-------+-------------------------------------------+
6 rows in set (0.00 sec)
Ⅳ 查询记录>>(⭐⭐⭐ ⭐⭐⭐)
- 单表查询
- 完整语法:delect distinct(去除重复记录) 字段1,字段2,字段3,... from 表名
- where 过滤条件
- group by 分组的条件
- having 筛选条件
- limit n(显示多少);
- 重点中的重点:关键字的执行优先级
from >>>找到表:from
where >>>拿着where指定的约束条件,去文件/表中取出一条条记录
group by >>>将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
having >>>将分组的结果进行having过滤
select >>>执行select
distinct >>>去重
order by >>>将结果按条件排序:order by
limit >>>限制结果的显示条数
- 创建并插入数据
create table wot(
id int not null unique auto_increment,
name varchar(20) not null,
sex enum('male','female') not null default 'male', #大部分是男的
age int(3) unsigned not null default 28,
hire_date date not null,
post varchar(50),
post_comment varchar(100),
salary double(15,2),
office int, #一个部门一个屋子
depart_id int
); -- 创建表
mysql> insert into employee(name,sex,age,hire_date,post,salary,office,depart_id) values -- 插入数据
-> ('zhu','male',18,'20170301','坦克世界驻蹲坑懦夫卡办事处',7300.33,401,1), #以下是教育部,教你做人
-> ('shuai','male',78,'20150302','teacher',1000000.31,401,1),
-> ('261工程','male',81,'20130305','teacher',8300,401,1),
-> ('T92','male',73,'20140701','teacher',3500,401,1),
-> ('征服者GC','male',28,'20121101','teacher',2100,401,1),
-> ('VK7201','female',18,'20110211','teacher',9000,401,1),
-> ('FV215b','male',18,'19000301','teacher',30000,401,1),
-> ('超级征服者','male',48,'20101111','teacher',10000,401,1),
->
-> ('FV4005','female',48,'20150311','sale',3000.13,402,2),#以下是黑枪部门
-> ('E-100突击车','female',38,'20101101','sale',2000.35,402,2),
-> ('蟋蟀15','female',18,'20110312','sale',1000.37,402,2),
-> ('268Ⅳ工程','female',18,'20160513','sale',3000.29,402,2),
-> ('FV215b(183)','female',28,'20170127','sale',4000.33,402,2),
->
-> ('棘手问题','male',28,'20160311','operation',10000.13,403,3), #以下是VIP部门
-> ('晴空','male',18,'19970312','operation',20000,403,3),
-> ('安哈尔特-莱昂','female',18,'20130311','operation',19000,403,3),
-> ('加拉哈德','male',18,'20150411','operation',18000,403,3),
-> ('爪哇犀牛','female',18,'20140512','operation',17000,403,3)
-> ;
Query OK, 18 rows affected (0.00 sec)
Records: 18 Duplicates: 0 Warnings: 0
- 简单查询
- select 字段1,字段2 from 表名;
mysql> select name,sex from wot; -- 简单查询,某个,某些字段
+---------------------+--------+
| name | sex |
+---------------------+--------+
| zhu | male |
| shuai | male |
| 261工程 | male |
| T92 | male |
| 征服者GC | male |
| VK7201 | female |
| FV215b | male |
| 超级征服者 | male |
| FV4005 | female |
| E-100突击车 | female |
| 蟋蟀15 | female |
| 268Ⅳ工程 | female |
| FV215b(183) | female |
| 棘手问题 | male |
| 晴空 | male |
| 安哈尔特-莱昂 | female |
| 加拉哈德 | male |
| 爪哇犀牛 | female |
+---------------------+--------+
18 rows in set (0.00 sec)
- 避免重复(针对的是记录)
- select distinct 字段1,字段2 from 表名;
- 这里避免重复是避免记录,而不是字段
mysql> select distinct sex from wot; -- 去重性别字段,只有两个记录了
+--------+
| sex |
+--------+
| male |
| female |
+--------+
2 rows in set (0.00 sec)
mysql> select distinct office from wot; -- 去重部门房间
+--------+
| office |
+--------+
| 401 |
| 402 |
| 403 |
+--------+
3 rows in set (0.00 sec)
mysql> select distinct post from wot; -- 去重职位
+-----------------------------------------+
| post |
+-----------------------------------------+
| 坦克世界驻蹲坑懦夫卡办事处 |
| teacher |
| sale |
| operation |
+-----------------------------------------+
4 rows in set (0.00 sec)
- 进行四则运算
- select name,salary from wot; -- 这里查询的是人的名字和薪资
mysql> select name,salary from wot; --
+---------------------+------------+
| name | salary |
+---------------------+------------+
| zhu | 7300.33 |
| shuai | 1000000.31 |
| 261工程 | 8300.00 |
| T92 | 3500.00 |
| 征服者GC | 2100.00 |
| VK7201 | 9000.00 |
| FV215b | 30000.00 |
| 超级征服者 | 10000.00 |
| FV4005 | 3000.13 |
| E-100突击车 | 2000.35 |
| 蟋蟀15 | 1000.37 |
| 268Ⅳ工程 | 3000.29 |
| FV215b(183) | 4000.33 |
| 棘手问题 | 10000.13 |
| 晴空 | 20000.00 |
| 安哈尔特-莱昂 | 19000.00 |
| 加拉哈德 | 18000.00 |
| 爪哇犀牛 | 17000.00 |
+---------------------+------------+
18 rows in set (0.00 sec)
- select name,salary*12 from wot; -- 这里salary*12得到的就是一个人的年薪
mysql> select name,salary*12 from wot;
+---------------------+-------------+
| name | salary*12 |
+---------------------+-------------+
| zhu | 87603.96 |
| shuai | 12000003.72 |
| 261工程 | 99600.00 |
| T92 | 42000.00 |
| 征服者GC | 25200.00 |
| VK7201 | 108000.00 |
| FV215b | 360000.00 |
| 超级征服者 | 120000.00 |
| FV4005 | 36001.56 |
| E-100突击车 | 24004.20 |
| 蟋蟀15 | 12004.44 |
| 268Ⅳ工程 | 36003.48 |
| FV215b(183) | 48003.96 |
| 棘手问题 | 120001.56 |
| 晴空 | 240000.00 |
| 安哈尔特-莱昂 | 228000.00 |
| 加拉哈德 | 216000.00 |
| 爪哇犀牛 | 204000.00 |
+---------------------+-------------+
18 rows in set (0.00 sec)
- select name,salary*12 as 年薪 from emp; -- 可以将salary*12 的字段给成 年薪
mysql> select name,salary*12 as
-> 年薪 from wot;
+---------------------+-------------+
| name | 年薪 |
+---------------------+-------------+
| zhu | 87603.96 |
| shuai | 12000003.72 |
| 261工程 | 99600.00 |
| T92 | 42000.00 |
| 征服者GC | 25200.00 |
| VK7201 | 108000.00 |
| FV215b | 360000.00 |
| 超级征服者 | 120000.00 |
| FV4005 | 36001.56 |
| E-100突击车 | 24004.20 |
| 蟋蟀15 | 12004.44 |
| 268Ⅳ工程 | 36003.48 |
| FV215b(183) | 48003.96 |
| 棘手问题 | 120001.56 |
| 晴空 | 240000.00 |
| 安哈尔特-莱昂 | 228000.00 |
| 加拉哈德 | 216000.00 |
| 爪哇犀牛 | 204000.00 |
+---------------------+-------------+
18 rows in set (0.00 sec)
- concat()拼接记录的内容
- select 字段1,concat(字段2,字符) from 表名;会在查询出的所有字段2的记录后面加上你需要添加的符号
- select 字段1,concat(字符或符号,字段2) as 别名 from 表名; -- 可起别名
- 如果想要的内容是以某种符号作为分隔符
- select 字段1,concat(字符,分隔符,字段2,分隔符,符号) from 表名; -- 较为麻烦
- select 字段1,concat_ws(第一个必须是分隔符,字符1,字段2,字符2) from 表名; -- concat_ws会将字符和字段之间加上分隔符号,且分隔符号必须写在括号内第一位
Ⅰ select 字段1,concat(字段2,字符) from 表名;会在查询出的所有字段2的记录后面加上你需要添加的符号
mysql> select name,concat(name,'_wot') from wot;
+---------------------+-------------------------+
| name | concat(name,'_wot') |
+---------------------+-------------------------+
| zhu | zhu_wot |
| shuai | shuai_wot |
| 261工程 | 261工程_wot |
| T92 | T92_wot |
| 征服者GC | 征服者GC_wot |
| VK7201 | VK7201_wot |
| FV215b | FV215b_wot |
| 超级征服者 | 超级征服者_wot |
| FV4005 | FV4005_wot |
| E-100突击车 | E-100突击车_wot |
| 蟋蟀15 | 蟋蟀15_wot |
| 268Ⅳ工程 | 268Ⅳ工程_wot |
| FV215b(183) | FV215b(183)_wot |
| 棘手问题 | 棘手问题_wot |
| 晴空 | 晴空_wot |
| 安哈尔特-莱昂 | 安哈尔特-莱昂_wot |
| 加拉哈德 | 加拉哈德_wot |
| 爪哇犀牛 | 爪哇犀牛_wot |
+---------------------+-------------------------+
18 rows in set (0.00 sec)
Ⅱ select 字段1,concat(字符或符号,字段2) as 别名 from 表名; -- 可起别名
mysql> select name,concat(name,'_wot') as 坦克 from wot;
+---------------------+-------------------------+
| name | 坦克 |
+---------------------+-------------------------+
| zhu | zhu_wot |
| shuai | shuai_wot |
| 261工程 | 261工程_wot |
| T92 | T92_wot |
| 征服者GC | 征服者GC_wot |
| VK7201 | VK7201_wot |
| FV215b | FV215b_wot |
| 超级征服者 | 超级征服者_wot |
| FV4005 | FV4005_wot |
| E-100突击车 | E-100突击车_wot |
| 蟋蟀15 | 蟋蟀15_wot |
| 268Ⅳ工程 | 268Ⅳ工程_wot |
| FV215b(183) | FV215b(183)_wot |
| 棘手问题 | 棘手问题_wot |
| 晴空 | 晴空_wot |
| 安哈尔特-莱昂 | 安哈尔特-莱昂_wot |
| 加拉哈德 | 加拉哈德_wot |
| 爪哇犀牛 | 爪哇犀牛_wot |
+---------------------+-------------------------+
18 rows in set (0.00 sec)
Ⅲ 如果想要的内容是以某种符号作为分隔符
Ⅲ①select 字段1,concat(字符,分隔符,字段2,分隔符,符号) from 表名; -- 较为麻烦
mysql> select name,concat('wot_',':',name,':','压倒一切') as 坦克 from wot;
+---------------------+---------------------------------------+
| name | 坦克 |
+---------------------+---------------------------------------+
| zhu | wot_:zhu:压倒一切 |
| shuai | wot_:shuai:压倒一切 |
| 261工程 | wot_:261工程:压倒一切 |
| T92 | wot_:T92:压倒一切 |
| 征服者GC | wot_:征服者GC:压倒一切 |
| VK7201 | wot_:VK7201:压倒一切 |
| FV215b | wot_:FV215b:压倒一切 |
| 超级征服者 | wot_:超级征服者:压倒一切 |
| FV4005 | wot_:FV4005:压倒一切 |
| E-100突击车 | wot_:E-100突击车:压倒一切 |
| 蟋蟀15 | wot_:蟋蟀15:压倒一切 |
| 268Ⅳ工程 | wot_:268Ⅳ工程:压倒一切 |
| FV215b(183) | wot_:FV215b(183):压倒一切 |
| 棘手问题 | wot_:棘手问题:压倒一切 |
| 晴空 | wot_:晴空:压倒一切 |
| 安哈尔特-莱昂 | wot_:安哈尔特-莱昂:压倒一切 |
| 加拉哈德 | wot_:加拉哈德:压倒一切 |
| 爪哇犀牛 | wot_:爪哇犀牛:压倒一切 |
+---------------------+---------------------------------------+
18 rows in set (0.00 sec)
Ⅲ②select 字段1,concat_ws(第一个必须是分隔符,字符1,字段2,字符2) from 表名; -- concat_ws会将字符和
字段之间加上分隔符号,且分隔符号必须写在括号内第一位
mysql> select name,concat_ws(':','wot_',name,'压倒一切') as 坦克 from wot;
+---------------------+---------------------------------------+
| name | 坦克 |
+---------------------+---------------------------------------+
| zhu | wot_:zhu:压倒一切 |
| shuai | wot_:shuai:压倒一切 |
| 261工程 | wot_:261工程:压倒一切 |
| T92 | wot_:T92:压倒一切 |
| 征服者GC | wot_:征服者GC:压倒一切 |
| VK7201 | wot_:VK7201:压倒一切 |
| FV215b | wot_:FV215b:压倒一切 |
| 超级征服者 | wot_:超级征服者:压倒一切 |
| FV4005 | wot_:FV4005:压倒一切 |
| E-100突击车 | wot_:E-100突击车:压倒一切 |
| 蟋蟀15 | wot_:蟋蟀15:压倒一切 |
| 268Ⅳ工程 | wot_:268Ⅳ工程:压倒一切 |
| FV215b(183) | wot_:FV215b(183):压倒一切 |
| 棘手问题 | wot_:棘手问题:压倒一切 |
| 晴空 | wot_:晴空:压倒一切 |
| 安哈尔特-莱昂 | wot_:安哈尔特-莱昂:压倒一切 |
| 加拉哈德 | wot_:加拉哈德:压倒一切 |
| 爪哇犀牛 | wot_:爪哇犀牛:压倒一切 |
+---------------------+---------------------------------------+
18 rows in set (0.00 sec)
- 拓展
- 要求,如果名字是zhu,正常显示;如果名字是shuai,拼接字符'dsb';其他情况拼接字符'sb'
- select (case when 字段='zhu' then when 字段='shuai' then concat(字段,'_dsb') else concat(字段,'_db') end) as 别名 from 表名; -- 这里一定要起别名,否则查询出的表的字段非常长
mysql> select (
case when name='zhu' then name
when name='shuai' then concat(name,'_大帅比')
else concat(name,'_wot') end) as 坦克世界 from wot;
+-------------------------+
| 坦克世界 |
+-------------------------+
| zhu |
| shuai_大帅比 |
| 261工程_wot |
| T92_wot |
| 征服者GC_wot |
| VK7201_wot |
| FV215b_wot |
| 超级征服者_wot |
| FV4005_wot |
| E-100突击车_wot |
| 蟋蟀15_wot |
| 268Ⅳ工程_wot |
| FV215b(183)_wot |
| 棘手问题_wot |
| 晴空_wot |
| 安哈尔特-莱昂_wot |
| 加拉哈德_wot |
| 爪哇犀牛_wot |
+-------------------------+
18 rows in set (0.00 sec)