【整理集合大全】MySQL(4) 数据库增删改查SQL语句

查看数据库

复制代码
show databases; 

使用数据库

复制代码
use 数据库名;

创建数据库

复制代码
CREATE DATABASE 数据库名;

删除数据库

复制代码
DROP DATABASE 数据库名;

创建表

复制代码
create table 表名(
    列名1 类型(长度) [约束],
    列名2 类型(长度) [约束],
    ......
);

长度区别

int类型带长度:不影响存取值,即使设定的值超出了长度的范畴,也能存,如果没有达到设定的长度,则使用空格自动填充到设定的长度

char类型:不可变字符,设定的长度就是规定当前字段能存的数据的最大长度,若超出长度,则会报错,若没有达到长度,使用空格填充到设定的长度

varchar:可变字符,设定的长度同样是规定当前字段能存的数据的最大长度,若超出长度,则会报错,若没有达到长度,不会使用空格填充,实际多长就是多长

删除表

复制代码
DROP TABLE 表名;

表约束

复制代码
1.非空约束    NOT NULL
2.默认值约束  DEFAULT '男'
3.唯一约束    UNIQUE
4.主键约束    PRIMARY KEY

查看表结构

复制代码
DESC 表名

修改表

修改列名

复制代码
Alter table 表名  change  列名  新列名 类型;

修改列类型

复制代码
Alter table 表名  change 列名  列名  新类型;

修改列类型

复制代码
Alter table 表名  modify  列名  新类型;

==数据查询-单表=====

查询表中全部信息

复制代码
select * from 表名;

查询表中指定列的信息

复制代码
select 列1,列2 from 表名;

语句的执行顺序:from--->select

数据去重

复制代码
select distinct 列.... From 表名;

拼接结果

复制代码
select concat(列1,列2) from 表名;

运算符优先级:

1.乘法和除法的优先级高于加法和减法

2.同级运算的顺序是从左到右

3.表达式中使用"括号"可强行改变优先级的运算顺序

复制代码
select 列1[+-*/]列2 from 表名;

设置别名(注意:关键字as可以省略)

复制代码
select 列 as 别名 from 表名;   
select 列 别名 from 表名;      

语句的执行顺序:from--->select

条件查询

复制代码
select 列... from 表名 where 条件;  

条件中比较运算符:( 等于:= 大于:> 大于等于:>= 小于:< 小于等于:<= 不等于:!= 或 <> )

复制代码
where 列  比较运算符  值;

注意:字符串、日期需使用单引号括起来

语句的执行顺序:from--->where--->select

逻辑运算符( 并且:and 或 && 或:or 非:not 或 ! )

复制代码
where 条件1  逻辑运算符  条件2;  
where not 条件; 

范围查询

复制代码
where 列 between 条件1  and 条件2;          //列在这个区间的值
where 列 not between 条件1 and 条件2;    //不在这个区间
where !( 列 between 条件1 and 条件2 );     //同样表示不在这个区间

集合查询( 判断列的值是否在指定的集合中 )

复制代码
where 列 in(值1,值2);          //列中的数据是in后的值里面的
where 列 not in(值1,值2);   //不是in中指定值的数据

NULL值查询( 注意:列中值为null不能使用=去查询 )

复制代码
where 列 is null;  //查询列中值为null的数据

模糊查询

%:表示0到多个字符,示例:

复制代码
where 列 like '%0';   //表示以0结尾
where 列 like  '0%';   //表示以0开头
where 列 like  '%0%';   //表示数据中包含0

_:表示一个字符,可多次使用,示例:

复制代码
where 列 like '%0_';   //数据结尾第二位是0

结果排序( 对查询出的结果按照一列或多列进行升序还是降序排列 升序:asc 降序:desc 注意:不能使用中文的别名排序)

复制代码
where 条件 order by 列 [asc/desc]

语句的执行顺序:from--->where--->select--->order by

分页查询( beginIndex:表示从第多少条数据开始 pageSize:表示每页显示的数据条数 )

复制代码
where [条件] limit beginIndex,pageSize;

ex:每页显示3条数据

第一页: SELECT * FROM 表名 LIMIT 0,3 --0,1,2

第二页: SELECT * FROM 表名 LIMIT 3,3 --3,4,5

第三页: SELECT * FROM 表名 LIMIT 6,3 --6,7,8

第四页: SELECT * FROM 表名 LIMIT 9,3 --9,10,11

......

第七页: SELECT * FROM 表名 LIMIT 18,3 --18,19,20

beginIndex公式:(当前页数-1)*pageSize

聚集函数( 作用于一组数据,并对一组数据返回一个值 )

复制代码
COUNT:统计结果记录数,若统计的是列,列中为Null,那么count将不会计算值
MAX:  统计计算最大值
MIN:  统计计算最小值
SUM:  统计计算求和
AVG:  统计计算平均值

分组函数( 注意:如果要对分组后的数据进行筛选,那么必须使用having关键字,条件写在having后 )

复制代码
select 聚集函数 from 表名 where [条件] group by 列 having 分组后的条件

语句的执行顺序:FROM---> WHERE--->group by---->Having--->SELECT-->ORDER BY


Where和having的区别:

Where: 先过滤已有的数据(数据是已经存在的),在进行分组,在聚集计算

Having:先分组,在对每组进行计算,根据得到结果在过滤(分组把数据算出之后,在过滤)

注意:使用having的时候,它是可以使用别名的

=数据查询-多表=

交叉连接:又名笛卡尔积,使用交叉连接会产生笛卡尔积

假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

复制代码
select *  from 表1,表2

内连接:过滤为空的数据(查询的实际上是两张表数据的交集部分) 目的 ==》解决笛卡尔积现象,正确查询了需要的数据

复制代码
select * from 表1,表2  where 表1.字段=表2.字段;  //隐式内连接,使用where条件消除笛卡尔积
select * from 表1 [inner] join 表2 on 表1.字段=表2.字段;  //显式内连接,如果是多张表,则一直在join..on后依次添加join..on即可,inner关键字可被省略

外连接:左外连接、右外连接、全外连接

左外连接:以左边表为主,返回左边表中所有数据,若右表中无数据,则显示为NULL,请参考实际查询结果来理解

复制代码
select * from 表1 left [outer] join 表2 on 表1.字段=表2.字段;   //表1为左表,表2为右表,outer关键字可被省略

右外连接:以右边表为主,返回右表中所有数据,若左表中无数据,则显示为NULL,结合实际查询结果来理解

复制代码
select * from 表1 right [outer] join 表2 on 表1.字段=表2.字段;  //表1为左表,表2为右表,outer关键字可被省略

全外连接:返回涉及的多表中的所有数据,MYSQL中不支持该查询,仅限了解自连接:单表当作多表查询,直白的讲就是一张表中数据含有多种关系,使用多表查询的语法,来查询一张表,查询过程中一定要使用别名

多用在分类数据、省市县分类数据、权限...

复制代码
select 表1.字段1,表2.字段2 from 表名 as 表1,表名 as 表2 where 表1.字段1=表2.字段2

子查询:将一个查询结果作为另一个查询的对象,直白的讲就是SQL语句嵌套

复制代码
select * from (select * from 表名) as 别名
select * from where 条件->条件中包含查询语句

注意:1.查询结果的虚拟表必须取别名

2.字段与关键字一样,冲突时,需要给字段名加``,(Esc键下面、1的左边)

3.如果给虚拟结果表中的字段取了别名,则对虚拟结果表查询时,应该用 表别名.虚拟表字段别名

=插入数据=

复制代码
insert into 表名(字段1,字段2..) values(值1,值2...);    

注意: 1.如果插入的表中的主键是自增类型的,可以不用插入值

2.如果主键是非自增 ,插入的数据则是填补主键字段值空余的值

3.如果主键设置了自动递增,会从主键字段最大值开始插入数据

其他插入方式:

复制代码
insert into 表名(字段1,字段2) values(值1,值2),(值1,值2);     //插入多条数据【MYSQL】
insert into 表名 values(值1,值2);                    //针对全表所有字段进行插入操作
insert into 表名(字段) select 字段 from 表2;         //查询结果插入
insert into 表名 select 字段 from 表2;               //查询结果,全表插入

=修改数据=

复制代码
update 表 set 字段=值 where 条件;  //带条件修改指定数据,否则修改全表

=删除数据=

复制代码
delete from 表 where 条件;  //删除数据带条件指定数据,否则删除全表数据

=数据备份=

在命令行窗口进行,若操作系统版本高,则使用管理员模式

导出:

复制代码
mysqldump -u账户 -p密码 数据库名称>脚本文件存储地

ex: mysqldump -uroot -proot jdbcdemo> C:/shop_bak.sql

导入:

复制代码
mysql -u账户 -p密码 数据库名称< 脚本文件存储地址

ex: mysql -uroot -proot jdbcdemo< C:/shop_bak.sql

使用可视化导入导出:

Navicat工具的导入和导出/Navicat工具的备份和还原

=数据索引=

索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

什么列适合建索引??

1.表的主键、外键必须有索引;

2.数据量超过30000的表应该有索引;

3.经常与其他表进行连接的表,在连接字段上应该建立索引;

4.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

5.索引应该建在选择性高的字段上;

6.索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

sql语句创建和删除索引:

创建索引:

复制代码
CREATE INDEX 索引名称 ON 表名 (列名)

删除索引:

方式一:

复制代码
DROP INDEX 索引名 ON 表名 

方式二:

复制代码
ALTER TABLE 表名 DROP INDEX 索引名

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以点击链接免费领取~
CSDN大礼包:全套《网络安全入门+进阶学习资源包》

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节 ,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

👉5.黑客必读书单👈

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作 的事情了,而工作绕不开的就是真题和面试题。

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以点击链接免费领取~
CSDN大礼包:全套《网络安全入门+进阶学习资源包》

本文转自 https://blog.csdn.net/qq_38225558/article/details/82776348?ops_request_misc=%257B%2522request%255Fid%2522%253A%25226ba3d039e888b3c4e6d9fce6398d4df9%2522%252C%2522scm%2522%253A%252220140713.130102334...%2522%257D&request_id=6ba3d039e888b3c4e6d9fce6398d4df9&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-82776348-null-null.142v100pc_search_result_base4&utm_term=%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A2%9E%E5%88%A0%E6%94%B9%E6%9F%A5sql%E8%AF%AD%E5%8F%A5&spm=1018.2226.3001.4187,如有侵权,请联系删除。

相关推荐
霸道流氓气质18 分钟前
Harness Engineering 从理论到实战:基于 Spring AI Alibaba 的完整实现指南
数据库·人工智能·spring·harness
linuxoffer21 分钟前
MYSQL回收碎片空间
数据库·mysql
从零开始的代码生活_34 分钟前
Linux epoll 多路转接详解
linux·运维·网络·后端·tcp/ip·计算机网络·php
名字还没想好☜44 分钟前
Go 并发实战:用 channel 实现 worker pool
java·数据库·后端·golang·go
小鹿软件办公1 小时前
通过调整编码参数使用 VLC 媒体播放器无损压缩视频方法
运维·网络·音视频
万亿少女的梦1681 小时前
基于Spring Boot与Vue的繁星技术论坛系统设计与实现
java·spring boot·mysql·vue·系统设计
源图客1 小时前
Claude Code基础使用
服务器·前端·数据库
yqcoder2 小时前
什么是 Math 对象
网络·网络协议·udp
阿里云大数据AI技术10 小时前
Hologres AI Function 文本分类实战:从提示词设计到 KV-Cache 调优,全程 SQL 搞定
人工智能·sql