当前位置: 首页 > news >正文

【MySQL】MySQL表的增删改查(初阶)

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

 表内容操作

插入内容

按顺序插入

指定某些列插入

一次插入多行记录

插入时间

查询表内容

全列查询

指定列查询

 指定表达式查询 

用as取别名

​编辑

去重查询

排序查询order by

条件查询 (关键)

比较运算符

逻辑运算符

练习

基本查询

and和or

 范围查询

like 模糊匹配

分页查询

修改表内容

删除表内容


 表内容操作

插入内容

按顺序插入

insert into 表名 values(值,值,值.....);    新增(这里列的个数 和 类型 要和表结构 匹配)

SQL中表示字符串可以使用 " 或 '

SQL中类型会尝试自动强转

指定某些列插入

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

一次插入多行记录

insert into  表名 values(值,值....),(值,值....),(值,值....).....;  每个括号代表一行

插入时间

可以插入当前系统时间,使用库函数 now()  -->获取当前时刻

查询表内容

全列查询

select  * from 表名;  全列查询(查询出这个表的所有行和列) , * 是通配符,可以指代所有的列.

注意: select * 是一个很危险的操作,因为如果表非常大(千万/亿级别的数据量),进行select * 会产生大量的硬盘IO 和网络 IO,很可能会把你的硬盘 /网卡 带宽给吃满. 若是在公司的生产环境下进行 select * ,很可能会使其他用户访问数据库的时候 出现访问失败的情况

指定列查询

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

为了方便举例,下面创建一个成绩表

下图指定 name和math列输出

 指定表达式查询 

select 表达式 from 表名;  输出的结果是"零时表",数据库本体(数据库服务器硬盘上的数据)没有任何改变

下图查询的是 语文成绩+10 的结果.

用as取别名

select 表达式 as 别名 from 表名;   这里的as可以省略(但是不建议,因为as省略后,别名就非常容易当成表达式的一部分)

下图输出总成绩 以total 命名

去重查询

select distinct 列名 from 表名;  查询的结果里必须是全部一样才能去重

排序查询order by

select 列名 from 表名 order by 列名;    针对查询结果进行排序,指定按照某个列进行排序,可以指定升序(asc  默认是 升序,可以省略)和 降序(desc)  ,select 语句对排序没有任何影响, 在排序之前,顺序是不可预期的

 

 order by可以指定多个列查询,先按照第一个列查询,这列相同的部分 会按照第二列排序.....

条件查询 (关键)

select 列名 from 表名 where 条件;   查询过程中,指定筛选条件,满足条件的就保留,不满足条件的就跳过

比较运算符

逻辑运算符

注意:

  • WHERE条件可以使用表达式,但不能使用别名。
  • AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
练习
基本查询

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

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

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

 使用别名时注意:  条件不能用别名,会报错

and和or

查询语文成绩大于80分,且英语成绩大于80分的同学 

查询语文成绩大于80分,或英语成绩大于80分的同学 

 范围查询

where 列名 between ...and ;

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

用and实现同样的效果 

where 列名 in(要查询的值,多个值用 , 隔开);   针对离散的数据

查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

like 模糊匹配

like要搭配通配符一起使用

where 列名 like 通配符;

  • % :匹配 0 个或 任意 个的任意字符
  • _  : 匹配 1 个特定的字符

like 是一个比较低效的操作,数据库本来就慢,所以开发时使用like 要节制~

通过下列例子理解like 的用法

不要拿= 和null比较,要用<=>或 is null 判断

分页查询

select 列名 from 表名 limit N;    N代表限制 n 条记录

limit可以搭配offset使用

select 列名 from 表名 limit N offset M;   表示从下标为M开始记录(从0开始计算) N 条

上面代码可以简写为 select * from exam_result limit 4 , 3 ;

修改表内容

update 表名 set 列名 = 值 , 列名 = 值.....   后面可以加上条件 where /order by/ limit ,如果没有指定任何条件 ,修改的就是所有行. update 同样也是危险操作(真正改的是硬盘上的数据,"持久有效"),

匹配的结果 >= 实际修改的结果

删除表内容

delete from 表名 where 条件 / order by / limit;  将筛选出的行删除,  这也是 危险操作!!!

若没有指定条件,删除的就是这个表的数据,但是这个表还在(空表)


http://www.mrgr.cn/news/9715.html

相关文章:

  • Error connecting to node kafka9092 (id 1001 rack null)
  • react面试题七
  • 这个深度清理工具 真正做到释放电脑垃圾 秒删90%的C盘垃圾
  • ZooKeeper--基于Kubernetes部署ZooKeeper
  • 吴恩达机器学习课后作业-03多分类、神经网络前向传播
  • 一文了解内网穿透以及内网穿透工具 Sunny-Ngrok 的使用指南
  • Git 十大提示和技巧
  • 谷粒商城实战笔记-243-商城业务-购物车-RedirectAttribute-解决重复提交
  • 来自Meta的Transfusion:自回归与扩散的“融合”
  • Centos7整合fail2ban配置ssh和pgsql以及vault
  • 批量整理文件夹的得力助手:让杂乱无章变得井井有条
  • MFC工控项目实例之七点击下拉菜单弹出对话框
  • PHP多商户跨店统一消费券系统程序源码
  • 【图论】Tarjan算法(强连通分量)
  • 文件包含漏洞案例
  • 【C++】01背包问题暴力,记忆,动态规划解法
  • 分布式锁 redis与zookeeper
  • 幂等性简介
  • 基于x86 平台移植ffmpeg3.4.5及ffmpeg验证
  • 汽车租赁|基于SprinBoot+vue的汽车租赁系统(源码+数据库+文档)