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....:修改多少条

update操作的时候,如果不加where条件,修改的将是整张表中的所有记录,是非常危险的操作

多条操作可以用逗号隔开来实现多个数据更新

删除

语法: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 小时前
87_Python Django模型与数据库
数据库·python·django
—Miss. Z—3 小时前
计算机二级MySQL选择题考点Ⅱ
数据库·mysql·oracle
敖行客 Allthinker3 小时前
IM 融合专题:后端架构师的核心修炼
java·开发语言·数据库
翔云1234563 小时前
MySQL 中 CURRENT_TIMESTAMP 到底取的是 INSERT 时间,还是 COMMIT 时间?
数据库·mysql
矜持的左手3 小时前
硬件故障后数据文件大小不对故障处理—Oracle碎片扫描恢复
数据库·oracle
欢呼的太阳11 小时前
数据库设计Step by Step (10)——范式化
服务器·数据库·oracle
喜欢的名字被抢了12 小时前
MySQL基础入门:从零理解数据库与SQL
数据库·mysql·教程
Elastic 中国社区官方博客13 小时前
如何比较两个 Elasticsearch 索引并找出缺失的文档
大数据·运维·数据库·elasticsearch·搜索引擎
DLYSB_13 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
儒雅的大叔14 小时前
MySQL数据库InnoDB数据恢复工具使用总结
数据库·mysql·adb