MySQL知识系统学习(SQL篇)--------保姆级教学

SQL语句部分

SQL分类

DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)

DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)

DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

针对数据库的操作

查看所有数据库(返回所有数据库的名字)

show databases

查看当前数据库(返回当前数据库名字)

select database()

创建数据库

create database 数据库名 charset = UTF-8

删除数据库

drop database 数据库名

使用数据库

user 数据库名

查看数据库中的表

user 数据库名;
show tables

针对表的操作

查看表结构
返回表的信息(type,是否null,key…)

user 数据库名;
desc 表名

创建表

create table 表名(
	字段名 数据类型 属性,
)

#举例
create table students(
	id int auto_increment primary key not null,
	name varchar(20)
)

修改表-----添加字段

alter table 表名 add 字段名 数据类型 属性

#举例
alter table student add grade int not null

修改表-----修改字段名和属性

alter table 表名 change 旧字段名 新字段名 类型 属性(可以没有)

#举例
alter table student change name username varchar(10)

修改表----修改字段属性

alter table 表名 modify 字段名 类型 属性(可以没有)

#举例
alter table student modify username varchar(20) null

删除字段

alter table 表名 drop 字段名

#举例
alter table student drop grade

删除表

drop table 表名

#举例
drop table students

增删改查

查询

查询所有数据行

select * from 表名

查询某一行

select * from 表名 where 字段 = ?

查询某一行的一个或多个字段

select 字段1,字段2.. from 表名 where 字段 = ?

插入

插入一行(全部字段)

#value顺序需要依照表中顺序
insert into 表名 values(value1,value2...)

插入一行(部分字段)

#clomns和value需要一一对应
insert into 表名(colmns1,colmns2) values(value1,value2...)

修改

通过字段判断从而修改字段
update 表名 set 字段 = ? where 字段 = ?;

#举例
update student set username = 'john' where username = 'mike'

删除

delete from 表名 where 字段 = ?;

as关键字

主要用字段名或者数据库名过长,我们在SQL语句中进行一个代替方便SQL语句书写。

select 字段1 as a,字段2 as b
from1 as x,2 as y
where a = ? and b = ?

union关键字

union是连接两个select查询语句,使用union的查询语句必须保证select的字段完全一样包括类型名字,主要是用有union和union all两种。
union:根据两个查询语句的字段合并然后去除重复。
union all:则是union不去重复。

条件语句查询

where
比较运算符
逻辑运算符
模糊查询
范围查询
空判断
子查询

比较运算符

等于: =
大于: >
大于等于: >=
小于: <
小于等于: <=
不等于: !=

这部分过于简单不做举例

逻辑运算符

and
相当于且(并)关系
or
相当于或关系
not
否认语句

##举例----此时我有id = 1,2,3三条数据,下面语句会返回id = 2,3的数据行
select * from student where not id = 1

模糊查询
like(可左右模糊查询,可以两侧模糊查询)
%表示任意多个任意字符
_表示一个任意字符

select * from student where username like 'john_'

范围查询

范围查询分为非连续范围查询(in)和 连续范围查询(between)
in

#该语句用于查询 id = 1 和 id = 2 的数据行
#等价于select * from student where id = 1 or id = 2
select * from student where id in (1,2)

between

#该语句用于查询 1 <= id <= 3 的数据行
select * from student where id BETWEEN 1 and 3

空判断

查询数据行对应字段为空的数据行

#用于查询用户名为空的id
select id from student where username is null

也可以用于反向判定不为空的情况

#用于查询用户名不为空的id
select * from student where username is  not null

子查询
针对于子查询返回一行数据

#因为我们已知只会返回一行,所以这里可以使用 = 
select username
from student
where id = (
select id 
from student 
where grade = 90 
)

针对资产寻返回多行多列

#该方法也可以用于处理单行,in的使用可以看上面解析
select username
from student
where id in (
select id 
from student 
where grade = 80 
)
#any代表满足里面的任一条件,是或关系,
#all代表满足里面的所有条件,是且关系。
select username
from student
where id = ANY (
select id 
from student 
where grade > 80 
)

优先级问题
优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符
and比or先运算,如果同时出现并希望先算or,需要结合()使用

排序

order by 字段 asc/desc

order by 字段名作为排序依据,asc/desc代表正序或者倒序

select * from student where id > 0 order by grade asc/desc

分页

select * from 表名 limit start,count

start代表从获取的数据中第几个开始获取(下标默认从0开始)
,count为获取的数据量。

select * from student limit 0,2

聚合函数

count(字段或者 * )
返回查询结果的数据行数
就算是写入字段或者 * 查询结果是一样的。

max(字段)和min(字段)
返回对应字段的最大值和最小值

sum(字段)
返回对应字段的查询结果的累加值

avg(字段)
返回对应字段查询结果的平均值

分组

group by 字段名
返回在查询结果中不重复的对应字段的对应结果

select grade from student group by grade

特殊情况
下面语句中表中有4条数据,针对于grade = 80情况有2条数据行,我们这里要求返回的是一整条数据行,这条语句返回的只有第一条grade = 80的数据,第二次出现的数据不会被返回。

select * from student group by grade

group_concat(字段名)
返回根据group by的不重复的结果对应的group_concat()字段的一个整体集合(这个集合全在对应行的一列中)

select grade,GROUP_CONCAT(username) from student group by grade

group by + 聚合函数
根据上面的启发,我们可以通过使用聚合函数将他们统计出来,例如:

统计不同grade的人数

select grade,count(*)
from student group by grade

统计不同部门的平均年龄

select department,avg(age)
from people group by department

主要在于灵活应用
group by + having
having关键字只能用于group by ,用于过滤信息,有点类似于where

#分组后对分组筛选:筛选grade > 80 的组
select grade
from student group by grade having grade > 80
#分组后对分组筛选:筛选分组成员数 > 1的分组
select grade
from student group by grade having count(*) > 1

连接查询

内连接

根据特定条件返回两个表的对应字段数据,如果两个表存在复数数据,那么就返回两个表数据的各种情况的数据。(换句话说就是两个表的交集的所有情况,和外连接存在区别)
例如:
男1 选了 语文 ,男2 选了 语文
女1 选了 语文 ,女2 选了 语文
针对于class = 语文情况此时就会返回四种结果
男1 女1
男1 女2
男2 女1
男2 女2
(注意:内连接只会返回两个表符合条件的部分)

#用于查询选课一样的男女学生
select boy.class,bname,gname 
from boy inner join girl on boy.class = girl.class

左外连接

和内连接类似,就用上面的例子,左外连接是指左表完全显示,右边表满足条件(这里的满足条件是指on后面的条件,如果是boy.class = girl.class这样的情况,那就是指所有的boy表的class)的筛选出来,和左表全部组合,如果右表不存在的则填入null。

select boy.class,bname,gname from boy left join girl on boy.class = girl.class

右外连接

和左外连接相反,右表完全显示,左表符合条件的和右表进行组合,如果左表不存在符合条件的则填入null。

select boy.class,bname,gname from boy right join girl on boy.class = girl.class
MyBatis-Plus是一个MyBatis的增强工具,它在MyBatis的基础上进行增强而不改变原有框架,旨在简化开发并提高效率。它具有以下特点和功能: 1. 无侵入:引入MyBatis-Plus不会对现有工程产生影响,只做增强而不改变原有代码。 2. 强大的CRUD操作:MyBatis-Plus内置了通用Mapper和通用Service,通过少量配置即可实现单表大部分CRUD操作,同时提供强大的条件构造器,满足各类查询需求。 3. 支持Lambda形式调用:通过Lambda表达式,方便地编写各类查询条件,避免字段写错的问题。 4. 支持主键自动生成:MyBatis-Plus支持多种主键策略,包括分布式唯一ID生成器,可以自由配置,解决了主键生成的问题。 5. 支持ActiveRecord模式:支持通过继承Model类进行强大的CRUD操作。 6. 支持自定义全局通用操作:MyBatis-Plus支持全局通用方法注入,可以在任何地方使用,提高代码复用性。 7. 内置代码生成器:可以通过代码或者Maven插件快速生成Mapper、Model、Service、Controller层代码,支持模板引擎和自定义配置。 8. 内置分页插件:基于MyBatis的物理分页,配置好插件后,分页操作与普通List查询相同。 9. 支持多种数据库:MyBatis-Plus支持多种关系型数据库,如MySQL、Oracle、SQLServer等。 10. 内置性能分析插件:可以输出SQL语句及其执行时间,方便开发测试时进行性能分析。 11. 内置全局拦截插件:提供全表delete、update操作的智能分析阻断,也可以自定义拦截规则,预防误操作。 总的来说,MyBatis-Plus在提供便捷的CRUD操作的同时,还提供了许多其他功能和特性,以提高开发效率和性能。 #### 引用[.reference_title] - *1* *3* [MyBatis-Flex、MyBatis-Plus与Fluent-Mybatis三者的比较](https://blog.csdn.net/boonya/article/details/130059483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Mybatis-Plus 实现增删改查 -- Mybatis-Plus 快速入门保姆教程(一)](https://blog.csdn.net/HHX_01/article/details/130183726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值