前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学会Mysql第二天

学会Mysql第二天

作者头像
白胡杨同学
发布2020-04-11 11:03:50
8060
发布2020-04-11 11:03:50
举报
文章被收录于专栏:白胡杨同学

表数据的基本操作

数据的插入

代码语言:javascript
复制
insert into 表名 [(字段列表)] values [(对应字段列表)];
insert into 表名 values (对应表结构);
insert into teacher (name,age) values ("Jerry",21);

多数据的插入

代码语言:javascript
复制
insert into my_insert [(字段列表)] values(值列表),(值列表)...;
--在原有基础上,跟多个值列表即可实现插入多条记录

数据的查询

查询全部数据
代码语言:javascript
复制
select * from 表名;
select * from teacher; --查询teacher表中所有数据
查询部分数据
代码语言:javascript
复制
select 字段列表 from 表名;
select name,age,address from teacher --从teacher表中查找所有人的姓名,年龄和住址。
带条件的查询
代码语言:javascript
复制
select *字段列表 from 表名 [where条件];
select * from teacher where age>30;     --从teacher表中查找年龄大于30的所有人的信息
select name,adddress from teacher where age>30; --从teacher表中查找年龄大于30的人的姓名和地址

数据的删除

代码语言:javascript
复制
delete from 表名 [wehre条件];
delete from teacher where age<30; 删除teacher表中年龄小于30的所有人的信息。

如果没有where条件,则默认删除表中的所有数据

数据的更新

代码语言:javascript
复制
update 表名 set 字段名=新值 [where条件]
update teacher set age=30 where sex="男";    --将teacher表中所有的男性的年龄都改为30
代码语言:javascript
复制
update 表1,表2,... set 表1.列1,表2.列2,...where条件
--可以同时修改多个表中的数据

查询语句

完整的SQL查询指令: select select选项 字段列表 from 数据源 where条件 group by 分组 having 条件 order by 排序 limit 限制

select 选项

系统如何对待查询得到的结果

all 保留所有的结果
distinct 去除全部重复的记录

union all 不去除重复的

字段列表

有时候需要从多张表获取数据,当遇到同名字段的时候,需要用到别名。 基本语法: 字段名 as 别名

from 数据源

实体二维表

from是为前面的表提供数据源,MySQL只要求数据源是一个符合二维表结构的数据源即可。(多表获取数据) 基本语法:from 表1,表2,表3

代码语言:javascript
复制
select * from my_date,my_simple,my_auto;    --查询结果为笛卡尔积(尽量避免)
多表数据

从多张表获取数据,基本语法:

代码语言:javascript
复制
from 表1,表2....
select * from my_int,my_set;

结果:是两张表的记录相乘,字段数拼接

本质:从第一张表取出一条记录,去拼凑第二张表的所有记录,保留所有结果。得到

的结果叫笛卡尔积(尽量避免 )

动态数据

from跟的不是一个实体二维表,而是一个从其他表中查询得到的结果集(子查询) 基本语法:from (select 字段列表 from 表) as 别名 子查询的时候,作子查询的表一定要有别名

代码语言:javascript
复制
select * from (select name,id from my_simple) as int;

where子句

从数据表获取数据的时候进行条件筛选 where用运算符进行条件判断。

Group by 子句

根据指定的字段将数据进行分组,目的是为了统计

group by 将数据分组后,只会显示每组的第一条记录

代码语言:javascript
复制
select * from my_date group by sex; --将表按照性别进行分组
一些统计函数(聚合函数)

count() 统计字段数量,不统计NULL。 avg() 求平均值 sum() 求和 max() 求最大值 min() 求最小值

Group_concat():为了将分组中指定的字段进行合并(字符串拼接)

使用聚合函数统计
代码语言:javascript
复制
select id,max(age) from my_date group by class; --按照年级分组,查询每个年级年龄最大的人

group_concat() 字符串拼接,将指定字段进行拼接

多分组

将数据按照某个字段进行分组之后,对已经分组的数据进行再次分组

基本语法

代码语言:javascript
复制
group by 字段1,字段2;//先按照字段1进行排序,之后将结果再按照字段2进行排序

更新数据

1.数据更新一般是随条件更新,很少全部更新 2.在更新数据的时候,没有条件的时候,会是全表更新,可以使用limit限制更新的数量 update 表名 set 字段名=值 [where 条件] limit 数量

代码语言:javascript
复制
update my_simple set id='1' limit 4;    --只更新前四条记录

删除操作

1.删除数据时,尽量不要全部删除,应该使用where条件限定 2.使用limit限制删除记录的数量

代码语言:javascript
复制
delete from my_simple limit 4;  --删除前四条数据
  • delete删除操作无法重置自增长auto_increment

清除自增长的语法:

truncate 表名

新增数据

多数据插入

只要写一次insert指令,可以直接插入多条记录,(写上多个值列表)

代码语言:javascript
复制
insert into my_insert [(字段列表)] values(值列表),(值列表)...;
--在原有基础上,跟多个值列表即可实现插入多条记录

主键冲突

在有的表中使用了业务主键,但是插入数据时又不确定主键是否存在。

主键冲突的解决方案

1.主键冲突更新 insert into 表名 [(字段列表)] values (值列表) on duplicate key update 字段=新值(更新的是主键之外的新值)

代码语言:javascript
复制
insert into my_student values ('stu001','小婷') on duplicate key update stu_name='小婷';

2.主键冲突替换 当主键冲突之后,删除数据重新插入 replace into 表名 [(字段列表)] values (值列表);

代码语言:javascript
复制
replace into my_stu values('stu001','小婷');

replace的效率比insert的效率要低。

蠕虫复制(一般用来测试表的压力,测试表的效率或者用于数据转移)

蠕虫复制的原则:一分为二,成倍增加。 从已有数据中选择数据,插入到表中。 insert into 表名 [(字段列表)] select */字段列表 from 表

代码语言:javascript
复制
insert into my_copy select * from my_copy;  --从自己表中进行蠕虫复制
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 表数据的基本操作
    • 数据的插入
      • 数据的查询
        • 数据的删除
          • 数据的更新
            • 查询语句
              • select 选项
              • 字段列表
              • from 数据源
              • where子句
              • Group by 子句
            • 更新数据
              • 删除操作
                • 清除自增长的语法:
              • 新增数据
                • 多数据插入
                • 主键冲突
                • 蠕虫复制(一般用来测试表的压力,测试表的效率或者用于数据转移)
            相关产品与服务
            云数据库 MySQL
            腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档