MySQL数据库操作基础(增删查改)

数据库操作基础(增删查改)

1.插入

1.1往数据表中插入一条数据

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

此处列出的这些值的数目和类型 要和表的相对应

1.2指定列插入

insert into 表名(列名) values (值);

1.3一次插入多个记录

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

一次插入多行记录效率 往往高于 一次插入一条记录,分多次插入

2.查询

2.1 全列查询

select * from 表名;

这个操作,就是查询出当前数据库中所有的行和列

*****能够代表所有的列

2.2 指定列查询

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

手动指定要查询的某一列或某几列~~ 服务器返回的结果,就只包含想要的数据~~

2.3 查询字段为表达式

查询的同时,可以进行计算

eg:

2.4 查询的时候给列/表达式 指定别名 as

select 列名 as 别名 from 表名;

as 关键字,可以省略,但是不建议 ,写上 as 会更容易看,别名会最终显示在查询结果的临时表中.

2.5查询时去重 distinct

select distinct 列名 from 表名;

查询的时候,把重复的行,去掉,只保留一份~~

2.6排序查询 order by ----- asc/desc

针对查询到的结果进行排序,

mysql 是一个客服端-服务器结构的程序~~,因此这里的排序,也是针对临时表进行的,对于数据库服务器上的原始数据没有任何顺序上的影响

select 列名 from 表名 order by 列名 asc/desc;

asc 是升序,不写也是默认升序

desc 降序

如果SQL中没有指定 order by,则我们不能确定他是有顺序的,虽然有时候我们看着是有顺序的,但是我们不能依赖这个顺序,因为mysql没有说他是有序的


order by 还能指定多个列排序~~(order by 后面可以写多个列~)

2.7条件查询: where

2.7.1 运算符

指定一个筛选条件,把符合条件的结果保留下来,不符合的就剔除掉~~

关系运算符

逻辑运算符

注:

  1. where 条件可以使用表达式,但不能使用别名。
  2. 多个条件时,使用 () 来确保正确的顺序

2.7.2 基本查询

eg:

-- 查询英语不及格的同学及英语成绩 ( < 60 )

-- 查询语文成绩好于英语成绩的同学

注: 条件比较的时候,并不只是使用列名和常量比较(math>60),也可以使用列名和其他列名比较~~

--查询总分在 200 分以下的同学

注: 条件查询,也可以结合一些更复杂的表达式

mysql 的 where 条件中,无法使用 的别名

and 与 or

2.7.3 范围查询

between and ---查询这个区间

eg: 查询语文成绩在 [80,90] 分的同学及语文成绩

注: 可以看出也能用 and 来实现,但是 between and 更方便

in 查询符合要求的

2.7.4** 模糊查询 like**

mysql 进行 like 模糊查询,低效,实际开发,慎重使用

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

_ 匹配严格的一个任意字符

2.7.5 null 查询 -- > is[not]null
null 与其他运算的结果还是 null,即最后结果相当于 false

<=> 可以理解为 equals ,比较 两个值是否相同


2.8分页查询 limit , offset 偏移量

LIMIT出现在查询语句的最后,可以使用一个参数或两个参数 来限制取出的数据。其中第一个参数代表偏移量:offset(可选参数),第二个参数代表取出的数据条数:rows。

  • 单参数用法

当指定一个参数时,默认省略了偏移量,即偏移量为0,从第一行数据开始取,一共取rows条。

mysql 复制代码
/* 查询前5条数据 */
SELECT * FROM Student LIMIT 5;
  • 双参数用法

当指定两个参数时,需要注意偏移量的取值是从0开始的,此时可以有两种写法:

mysql 复制代码
/* 查询第1-10条数据 */
SELECT * FROM Student LIMIT 0,10;
/* 查询第11-20条数据 */
SELECT * FROM Student LIMIT 10 OFFSET 10;// 

针对查询出来的结果,进行 截取 ,取出其中的一个部分~~

就像是四个一页
offset 就是相当于 从哪一个开始算

上述八种查询的写法比较基础,也是经常用到的,熟练掌握即可,多写,多练


3.修改 update

update 表名 set 列名 = 值 where 条件...;

进行修好,要明确一些信息

  1. 改哪个表
  2. 改这个表里的哪个列/哪些列,改成什么
  3. 改这个表的哪些行

将孙悟空同学的数学成绩变为 80 分

将曹孟德同学的数学成绩变更为 60 分, 语文成绩变更为 70 分;

update 表名 set chinese = 70, math = 60 where name = '曹孟德';

修改操作,也可以搭配 order by 这样的排序操作

eg : 将总成绩倒数前三的 3 位同学的数学成绩加上 10 分

update 表名 set math = math + 10 order by chinese + math + english limit 3;

注意: 修改时也要结合一下数据范围,不要超出,不然会报错

例如加上 30 分会超过范围

​ 由此,可以知道, update可以理解成,先查询,再修改,即先查询一下看修改后的是否符合条件,然后在进行修改


如果update 后面没有指定任何条件,则会把所有的行都进行修改

update 表名 set math = 0;

由此可见, update 也是一个很危险的操作,更改甚至比误删的后果还要大,也要谨慎使用.

4.删除 delete

delete from 表名 where 条件;

直接删除 符合条件 的行~~

eg: 删除 孙悟空 的成绩

delete from 表名 where name = '孙悟空';

如果在 delete 的时候,没有指定条件,就会把整个表的所有数据都删掉!!

delete from 删除之后,表还在,表里的数据,没了~~

drop table 删除之后,表和表里的数据都没了~~

相关推荐
风_流沙2 分钟前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
亽仒凣凣10 分钟前
Windows安装Redis图文教程
数据库·windows·redis
亦世凡华、18 分钟前
MySQL--》如何在MySQL中打造高效优化索引
数据库·经验分享·mysql·索引·性能分析
YashanDB21 分钟前
【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页
数据库·yashandb·崖山数据库
ProtonBase32 分钟前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
云和数据.ChenGuang6 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys6 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi6 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据7 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi8 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql