MySQL数据库|CRUD

CRUD----增删改查

C---creat,R---retrieve,U---update,D---delete

新增

insert into 表名 [字段1 字段2] value (值,值,值);

单行数据+全列插入

insert into 表名 values(值,值.....);

简写方式,不用在表名后指定列名,在value列表中按表中定义字段的顺序设置相应的值

指定列插入

insert into 表名 (字段一) values (值)

多行插入

insert into 表名 [(指定列)] values (值[,值....])[,(值[,值....])...];

查询

全列查询

select *from 表名;

指定列查询

select 列名[,列名]...from 表名;

查询字段为表达式

10是数值类型,效果是让所有的列中都包含一个表达式中的值,它本身并不在我们的真实的表里

列与列之间也可以参与运算,这个查询的效果就是计算总分,同时,可以通过关键字as来别名

如果别名当中包含空格则必须用单引号引起来

给结果集中的字段起别名语法:select 列名 [as] 别名 [, 列名 [as] 别名]....from

去重

关键字---distinct

语法:select distinct 列名 from 表名

排序

关键字:OEDER BY

排序规则:

1.升序 ASC

2.降序 DESC

语法:select 列名 from 表名 order by 列名 [ASC|DESC]

默认是升序

NULL数据顺序,视为比任何值都小,升序出现在最上面,降序出现最下面

使用表达式及别名排序

mysql中比较·特殊

1.不论和什么值进行运算,返回值都是NULL

2.NULL始终被判定为FALSE

3.NULL的值不是我们以前学习过的其他编程语言中的0,在MYSQL它就是NULL

可以为每个字段指定不同的排序规则

order by 列名[asc|desc] ,列名[asc|desc]....

在数学排序的基础上,对语文成绩进行升序排序;英文成绩是在前两个排序结果的基础上进行升序排序。

条件查询---WHERE

根据指定的一些条件,过滤掉不符合条件的记录

可以通过一些运算符

比较运算符

= 等于,预其它编程语言用==来判断相等不同,在MYSQL中用=号,以后赋值也是用号

<=> 专门针对NULL来判断的,返回值是TURE(1)

navicat 快速执行键 ----crtl+r

BETWEE a0 AND a1 范围匹配,[a0,a1]

IN(option,.....) 如果是option中的任意一个,返回TURE(1),条件中的值在选项列表中存在返回true,否则返回false

LIKE 模糊匹配。%表示任意多个(包括0个)任意字符;_表示任意一个字符,相当于一个占位符

逻辑运算符

AND-------&&

OR--------||

NOT-------!

使用where条件的语法:select * from 表名 where 列名/表达式 运算符 条件

where字句中不能用别名去当做过滤条件,别名可以用在order by

出现这种现象是和MYSQL内部的实现有关,换句话说就是和MYSQL执行SQl语句的顺序有关

1.如果要在数据中查某些数据,首先要确定表,先执行from

2.在查询的过程中要根据指定的查询条件把符合条件的数据过滤出来,这时执行的是where字句

3.执行select后面的指定列,这些列是需要加入到最终的结果集中

4.排序操作,根据order by子句中指定的列名和排序规则进行最后的排序

AND的优先级大于OR

整体的优先级和Java中一样

NOT>AND>OR

当查询多个或者条件时:

1.用IN(集合)

2.用OR把所有的条件关联起来

模糊查询:LIKE

%匹配任意多个(包括0个)字符

_严格匹配一个任意字符

查询过程中,先匹配明确的指定了的字符,再去通配后面的不确定字符

NULL的查询:IS [NOT] NULL

分页查询:LIMIT

通过select * from 表名 ; 的时候,不加限制的查询是不安全的

分页查询在项目中运行时非常多

语法:

---从0开始,筛选n条结果

select 列名 from table_name [where....] [order by] limit n;

limit 关键字,表示限制要查询的条数

n一次要查询出来的记录的条数

---从s开始,筛选n条结果

select 列名 from table_name [where....] [order by] limit s,n

s表示从第几条记录开始,n读取多少条记录

如果s=0,那么就可以缩写成limit n

---从s开始,筛选n条结果,比第二种用法更明确,建议使用

select 列名 from table_name [where....] [order by] limit n offset s;

offset 关键字,表示偏移量,也就是从哪开始的意思

修改

语法:update table_name set column = expr [ , column = expr ...] [where ...] [order by...] [limit....]

update:修改操作的关键字

table_name:表名,表示要修改那张表的数据

set:设置,关键字

, column = expr ...\]:那个列=什么值,可以有多个列,中间以逗号隔开 \[where ...\]:修改条件 \[order by...\]:排序规则 \[limit....\]:修改多少条 ![](https://i-blog.csdnimg.cn/direct/3ef18d8d37b84fc78b1289aa5dd6472c.png) ![](https://i-blog.csdnimg.cn/direct/af71a3bdd542418daed5015700e9b529.png) update操作的时候,如果不加where条件,修改的将是整张表中的所有记录,是非常危险的操作 多条操作可以用逗号隔开来实现多个数据更新 ![](https://i-blog.csdnimg.cn/direct/2ae19be5bfb14cdb8c53c9616d8a7fbc.png) ![](https://i-blog.csdnimg.cn/direct/18f496d6cee046e19bf6004736def39c.png) ### 删除 语法:delete from table_name \[where...\] \[order by...\] \[limit...

delete:删除关键字

from table_name:从哪个表删除数据

where:过滤条件

order by:排序规则

limit:限制条件

在生产环境中一般不去使用delete操作

一般在表中会加deleteState字段,用来表示这条记录是否来删除,0表示正常(没有删除),1表示已删除,用update操作去更新deleteState字段,就可以实现删除功能,这条被删除的数据并没有实质上删除而是始终存在于数据库中

总结:

1.新增 - 插入

insert into 表名

2.查询操作

select 列名 from 表名

3.修改

update 表名

4.删除

delete from 表名

相关推荐
弹简特2 小时前
【JavaEE】MybatisPlus速成
java·数据库·java-ee·mybatis
qq_283720052 小时前
MySQL技巧(八) :死锁解决与实战案例
mysql·索引·锁机制·顺序·死锁
缘来是黎2 小时前
prom QL
mysql
SeanDe2 小时前
Canal 详解 + Canal+Redis 缓存一致性完整方案
数据库·redis·缓存
qq_392807952 小时前
Qt 注册 C++ 给 QML 调用的几种方式
数据库·c++·qt
程序员夏末2 小时前
【MySQL | 第二篇】 MVCC的底层实现(多版本并发控制)
数据库·sql·mysql
庞轩px2 小时前
线程池核心参数与拒绝策略深度解析
java·jvm·数据库
油丶酸萝卜别吃2 小时前
MySQL 事务机制深度解析:从 ACID 到底层实现
数据库·mysql
xcLeigh2 小时前
Oracle 迁移深度复盘:多数据库选型决策全解析
大数据·数据库·sql·oracle·数据迁移·数据管理