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 表名