首页 > 数据库 >Mysql基本语句练习

Mysql基本语句练习

时间:2023-03-09 19:31:45浏览次数:35  
标签:语句 10 00 name 练习 查询 2022 Mysql userBehavior


先从简单的开始:

userBehavior:用户行为

record:记录

增加:

向用户行为表添加一条数据

insert into userBehavior
(id,name,record,createTime,updateTime)
values
(1,"gugu","打开了文档","2022-08-03 17:30:00","2022-08-03 17:30:00"),
(2,"longer","打开了文档","2022-08-03 17:30:00","2022-08-03 17:30:00"),
(3,"gys","修改了文档","2022-08-03 17:30:00","2022-08-03 17:30:00");

删除:

删除用户行为表所有名称为“gugu”的数据

delete from userBehavior where name = "gugu";

删除用户行为表所有名称以字母"gu"开头的数据

delete from userBehavior where name like "gu%";

删除用户行为表所有名称以字母"gu"结尾的数据

delete from userBehavior where name like "%gu";

删除用户行为表中名称包含字母"u"的数据

delete from userBehavior where name like "u";

where条件语句中,like表示模糊查询,一般表示为 某个字段  like  "%关键字%"  %表示匹配任意字符,%在前面,表示前面可以是任意字符,%在后面,表示匹配后面是任意字符,%在两头,表示只要包含关键字就满足条件

修改:

将名称为gugu的用户行为记录改为,关闭了文档

update userBehavior set record = "关闭了文档", updateTime = "2022-08-03 18:00:00" where name = "gugu";

条件查询:

简单查询

查询所有数据

select * from userBehavior;


只查询指定的字段

查询出所有数据,并且只展示出name字段

select name from userBehavior

查询用户名为longer的数据

select * from userBehavior where name = "longer"

and查询(”与“查询)

查询用户名为gugu并且record 为“关闭了文档“的数据

select * from userBehavior where name = "gugu" and record = "关闭了文档"

or查询(”或“查询)

查询用户名为gugu或者longer的数据

select * from userBehavior where name = "longer" or name = "gugu"

in查询(就是满足in括号里面 的任意一个值,都可以匹配到)

查询用户名为gugu或者longer的数据

select * from userBehavior where name in ("longer","gugu");

beetween...and...查询

查询创建时间在2022-07-10 10:00:00 到 2022-08-10 10:00:00之间的数据

select * from userBehavior where createTime between 2022-07-10 10:00:00  and 2022-08-10 10:00:00

大于小于查询

beetween...and...就相当于createTime>=2022-07-10 10:00:00 and createTime < 2022-08-10 10:00:00

查询创建时间在2022-07-10 10:00:00 到 2022-08-10 10:00:00之间的数据

select * from userBehavior where createTime>=2022-07-10 10:00:00 and createTime < 2022-08-10 10:00:00

查询创建时间为2022-07-10 10:00:00 到 当前时间的数据

select * from userBehavior where createTime>=2022-07-10 10:00:00

分页

查询用户行为表中,第一页的数据。(每页显示十条数据)

显示第一页的数据其实就是显示前面十条数据,因为数据库里面,条数是从0开始数的,如果要查询前面十条数据,就是 取出第0条数据到第9条数据。(0,1,2,3,4,5,6,7,8,9)

如果要查询第二页的数据,就是 取出第10条数据到19条数据。(10,11,12,13,14,15,16,17,18,19)

如果要查询第三页的数据,就是 取出第20条数据到29条数据。(20,21,22,23,24,25,26,27,28,29)

分页的关键字是limit 0,10

其中0表示从第0条数据开始取,10表示,取出十条数据。

第一页的数据就是

select * from userBehavior  limit 0,10;

第二页的数据就是

select * from userBehavior  limit 10,10;

第三页的数据就是

select * from userBehavior  limit 20,10;

第n页的数据就是  

select * from userBehavior  limit (n-1)*pageSize,pageSize

排序

排序分为升序排序和降序排序。升序排序就是指从小到大,降序排序就是从大到小。

升序的关键字 ASC    降序的关键字 DESC

排序的关键字为  order by

排序语法  order by 某个字段名  ASC或者DESC

如果要按照创建时间倒序查询用户行为表,则

select  * from userBehavior order by createTime desc

关键字不区分大小写。

如果按照创建时间倒序分页查询用户行为表的第3页,每页显示20条数据,则

select * from userBehavior  order by createTime desc limit  (3-1)*20,20;

关联查询

内联

如果现在有两张表,这两张表,一张是存储的用户行为数据,另一张表是存的用户个人信息。有时候我们就需要同时查出用户的个人信息和用户行为。这时候我们就需要使用关联查询。首先我们来说说内联查询。

用户行为表userBehavior

 id,name,record,createTime,updateTime
1,"gugu","打开了文档","2022-08-03 17:30:00","2022-08-03 17:30:00"
2,"longer","打开了文档","2022-08-03 17:30:00","2022-08-03 17:30:00"
3,"gys","修改了文档","2022-08-03 17:30:00","2022-08-03 17:30:00"
4,"buzhidao","关闭了文档","2022-08-03 17:30:00","2022-08-03 17:30:00"

用户个人信息表

id,name,gender,age,mobile
1,gugu,男,22,17602322222
2,longer,女,19,15685212565
3,sd,未知,6,12544545412

这时候我们查询出 name  record  createTime  gender  age mobile字段,就需要两张表,进行关联查询。因为需要的字段在两张表中

首先,我们不指定查询的字段,我们只是将两张表的数据查出来。inner join 也就是内联的标志就是用逗号将多个表隔开就可以了。

select * from userBehavior  as  a , userInfo as b on a.name = b.name

上面这句话的意思就是:

我要查询userBehavior表和userInfo表。并且,我给userBehavior命名了一个别名为a,相当于起个昵称,这个是非常必要的。然后给userInfo起了一个别名叫b,这时候相当于别人喊a的时候,其实就是在喊userBehavior。

on关键字表示,两张表是靠什么连接起来的,这里因为我们两张表中都有name字段,所以我们通过两张表的name字段进行关联。所以  a.name = b.name 就相当于 userBehavior.name = userInfo.name,但是我们不能用表的真名,只能用别名,所以我用删除线划掉了。当给表起了别名后,后面的所有操作都以别名为准。

内联查询的作用就是,连接后的结果是两张表能关联上的数据才会查出来。根据上面的数据。最后查询的结果就是:

 1,"gugu","打开了文档","2022-08-03 17:30:00","2022-08-03 17:30:00" 1,gugu,男,22,17602322222

2,"longer","打开了文档","2022-08-03 17:30:00","2022-08-03 17:30:00" 2,longer,女,19,15685212565

为什么只有两条数据呢?因为userBehavior表中,名字为gys和buzhidao的,在userInfo表中没有记录,这条数据就关连不起来,所以就查不到。同理,userInfo表中名字为sd的人,在userBehavior表中也没有,所以查不出来。也就是只有满足了on中a.name=b.name的数据才会被查出来。

因为我们用的select * 所以会将所有的字段都查出来,这时候我们怎么才能只查询出name  record  createTime  gender  age mobile 这几个字段呢?

select a.name , a.record , a.createTime , b.gender , b.age, b.mobile from userBehavior  as  a , userInfo as b on a.name = b.name

上面查询指定字段的时候,都加了个a.或者b. 这里是因为我们对表命了别名,a.name就表示查询userBehavior表中的name字段,b.gender就表示查询userInfo中的gender字段。

这时候如果我们需要查出两张表中age为19的数据怎么写呢?

select a.name , a.record , a.createTime , b.gender , b.age, b.mobile from userBehavior  as  a , userInfo as b on a.name = b.name where b.age = 19

这时候的where条件中,字段名前也要带上表的别名,代表你是指定哪个表的哪个字段。因为我们b表才有age字段,所以使用 where b.age = 19

标签:语句,10,00,name,练习,查询,2022,Mysql,userBehavior
From: https://blog.51cto.com/gugu/6111137

相关文章

  • mysql备份
    mysql中通过mysqldump进行逻辑备份。1.导出指定表的数据mysqldump-tdatabase-uusername-ppassword--tablestable_name1table_name2 table_name3 >D:\db_scrip......
  • centos 安装clickhouse 并导入mysql数据
    一.安装clickhouse1.系统要求 ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LECPU架构的Linux,FreeBSD或MacOSX上运行。 官方预构建的二进制文件通常针对x86_......
  • 【MYSQL】函数的分类
     数值函数  取随机数四舍五入 截断 弧度和角度  一个圆等于2Π ......
  • 江南信息学2023第三周练习20230310 题解
    比赛链接1001:三个数的最大值条件判断,如判断a最大就是a>=b&&a>=c,以此类推1002:星期几取余,n%7结果是0则是周一,是1则周二,以此类推1003:奇偶分家设两个求和变量sum1,sum2......
  • SQL Server INSERT INTO SELECT语句
    SQLServerINSERTINTOSELECT语句以下内容仅是站长或网友个人学习笔记、总结和研究收藏。不保证正确性,因使用而带来的风险与本站无关! 在本教程中,将学习如何使用S......
  • mysql 视图 view
    1.创建视图,相对于平时使用的select语句,虚拟表  理解为存储起来的 SELECT 语句CREATEVIEW视图名称AS查询语句CREATEviewrecords_status_viewasSELECTa.idfr......
  • mysql使用DBeaver工具导入数据,隐藏坑
    数据中不能包含",否则会识别失败!   其实是由于数据里面有英文分号,”导致工具识别出错。  将分号去掉即可。......
  • mysql的一些配置解决 Lock wait timeout exceeded; try restarting transaction
    innodb_rollback_on_timeout:默认是off,当为off时,事务如果超时,只会回滚最后条sql 当为on时会回滚事务的所有sqlinnodb_lock_wait_timeout:事务超时时间默认是50s,可以改......
  • 1 MySql基础介绍
    目录1mysql逻辑架构1.1连接管理与安全性1.2优化与执行2并发控制2.1锁粒度2.2表锁2.3行级锁3事务3.1数据库事务四特性3.2隔离级别3.3死锁3.4事务日志3.5MySql......
  • Mysql 根据经纬度计算距离
     方式1:st_distance_spherest_distance_sphere函数返回以米为单位SELECT*,st_distance_sphere(point(lng,lat),point(116.3424590000,40.0497810000))asjuliFR......