MYSQL表的增删改查

首先我们要明确一下我们操作的是那部分数据

电脑上有一个数据库服务器---》管理着很多个数据库(数据的集)---》很多张数据表(保存着真实的数据)---》很多数据行(记录)---》很多列(字段)

新增(CREATE)

语法:insert into 表名[字段1,字段2] values (值,值);

单行数据+全列插入 insert into 表名 values(值,值...);(简写方式,不写类名,在values列表中按照表中字段顺序设置对应的值)

指定列插入+多行数据

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

一条insert语句在values部分可以跟很多个values组,每一组表示要插入的一个数据行

一次插入一条数据和一次插入多条数据哪个效率高?

1.执行所有SQL时都有网络开销(这是个不可控因素)

2.写入数据时还有磁盘IO开销

3.每执行一条SQL语句都会开启一个事务,事务的开启和关闭都会消耗系统资源

综合来看(在可控范围内)一次提交多条比一次提交一条效率高

查询(RETRIEVE)

1.全列查询

语法 select*from 表名;(*表中所有的列,这在生产环境中是十分危险的操作,因为在生产环境中,一个表中的数据量会有很多)

2.指定列查询

语法 select 列名[列名...]from 表名;

3.查询结果是一个表达式

效果就是让所有的列中都包含一个表达式的值,他本身不在我们的表中,他在临时表中(列与列也可以进行计算)

4.别名 列名+列名+列名[as]别名(别名中如果包含空格,必须用单引号引起来)

5.去重查询

关键字DISTINCT

语法:select distinct 列名 from 表名(注意:在查询结果中,每一列都相同MYSQL才认为是重复数据)

(因为id不同,所以第一个查询结果不变)

6.排序

order by(用这个子句会在查询结果中根据指定规则排序)

排序规则:1.升序 ASC 2.降序desc

语法:select 列名 from 表名 order by 列名[ASC/DESC](默认升序)

MYSQL中NULL比较特殊

1.无论和什么值运算,结果均为null;

2.NULL始终被判定为false

3.不是0

注意SQL中可以对多个字段进行排序,排序优先级与书写顺序有关(可以为不同字段设置不同的排序规则)

7.条件查询

关键词 where

根据指定的一些条件,过滤掉不符合条件的记录,把符合条件的记录返回给用户

运算符:

1.比较运算符

> >= < <= 和JAVA中用法一样

= 等于 NULL=NULL,结果为NULL !=,<>不等于

<=>等于NULL安全专门针对NULL NULL<=>NULL 结果为1

between a0 and a1 [a0,a1] 区间查询(闭区间)

in (option,..) 列表或者集合,如果是option中任意一个返回true

IS NULL /IS NOT NULL 判断是否为null

Like 模糊匹配 %表示任意多个字符 _表示一个字符(孙% 孙是第一个,后面可以有无数个,有几个_就要有多少个字符)

2.逻辑运算符

AND 类似JAVA中的&&

OR 类似JAVA中的||

NOT 类似JAVA中的!

优先级 NOT>AND>OR

建议通过小括号来指定优先级

语法 :select 列名 from表名 where 列名/表达式(必须完整)运算符 条件;

where子句中不能用别名这与MYSQL执行SQL语句的顺序有关:1.确定表 2.符号条件 3.执行select后面的指定列 4.排序

8.分页查询

关键词:LIMIT

不加限制记录条数的查询是不安全的

语法:

select 列名 from 表名 [where..][order by..] limit n offset s;(查询n条,从s开始)

修改(UPDATE)

语法:

update 表名 set column=expr[,column=expr...][where..][order by..][limit ];

只要找到符合条件的数据行就会一次性符合条件的数据行全部修改了(如果不加条件的修改表中的记录,这是非常危险的操作)

删除(DELETE)

语法:

DELETE FROM 表名[where..][order by..][limit..];

在生产过程中一般不使用DELETE操作,一般会在表中加入一个DELETEBASE字段,用来表示字段是否删除,用update更新就可以实现删除功能,实质上并未删除

相关推荐
脑花儿1 小时前
ABAP SMW0下载Excel模板并填充&&剪切板方式粘贴
java·前端·数据库
SELSL1 小时前
SQLite3的API调用实战例子
linux·数据库·c++·sqlite3·sqlite实战
洲覆1 小时前
Redis 核心数据类型:从命令、结构到实战应用
服务器·数据库·redis·缓存
傻啦嘿哟1 小时前
Python SQLite模块:轻量级数据库的实战指南
数据库·python·sqlite
维尔切2 小时前
HAProxy 负载均衡器
linux·运维·数据库·负载均衡
什么半岛铁盒2 小时前
C++项目:仿muduo库高并发服务器-------Channel模块实现
linux·服务器·数据库·c++·mysql·ubuntu
倔强的石头_2 小时前
【金仓数据库产品体验官】Windows 安装 KingbaseES V9R1C10 与 Oracle 兼容特性实战
数据库
望获linux2 小时前
【Linux基础知识系列:第一百四十篇】理解SELinux与系统安全
linux·运维·服务器·数据库·chrome·macos
卷Java3 小时前
CSS模板语法修复总结
java·前端·css·数据库·微信小程序·uni-app·springboot
豆豆豆大王3 小时前
头歌Kingbase ES内连接、外连接查询
大数据·数据库·elasticsearch