【MySQL】数据库针对表的增删查改(CRUD)基础操作

一.新增

insert into 表名 values(值,值……);

(1)指定列插入

意思就是可以指定是只插入id啊还是只插入name啊,又或者是插入id和name其他不插入啊,

指定插入要用()指定要插入的列,其他不插入的列为默认值default

insert into 表名 (指定的列,列和列用逗号分开) values(指定列的值,指定列的值……);

eg:insert into student (name) values ('李四');

(2) 一次性插入多行记录,一个语句完成多行插入

insert into 表名 values(值,值……),(值,值……),(值,值……);

 还可以指定列插入,然后多组插入;


二.查询

SQL中使用select关键字来表示查询~

查询语句是整个SQL中占比最大的,百分之80的工作都在于查询

(1).全列查找,查询出当前表所有的行和所有的列(全列查找是一个危险操作)

select * from 表名;

*号称为  通配符,表示所有的列~~

使用全列查找就能把当前表所有内容都一下子表现出来~~

但为什么说全列查找是一个危险操作呢?

 

客户端和服务器是通过网络来交互的,服务器数据库把数据存在磁盘上,当客户端向服务器发起查询请求,服务器就会处理请求,服务器此时会从磁盘上读取数据,然后再把数据通过网卡写回客户端,就返回了查询结果

那为啥说select * 是危险的呢?在公司中的的数据库里面存储的数据上千万甚至上亿条,如果调用select * ,服务器就会大规模的去读取磁盘,当前的存储的数据量级非常大!!!这就是一个大问题!!!这就会导致读磁盘和写网卡的时间非常的长,甚至把磁盘带宽和网卡带宽吃满!!

严重的话会导致服务器卡死~

所以说全列查询是一个危险操作

(2.)指定列查询 : select 列名 from 表名;

要查询的列名可以写多个,用逗号分开

这个查询只能看见两列,是否就意味着其他的列被删掉了呢?

查询过程中,客户端这里显示的内容只是一个  临时表!! 临时表是根据服务器的数据生成的

所有的查询操作是不会影响磁盘上的数据的

 (3)查询字段为表达式

就是一边查,一边计算,查询的结果为计算后的结果

比如说把所有人的语文成绩都加上10

这里只是影响到临时表的数据展示,不会对服务器的数据有任何影响,不会修改数据

(4)给查询的结果起别名

select 表达式 as 别名 from 表名;

起别名不仅仅是列名能起别名,表名,表达式都能起别名

比如说我要查询所有人的总成绩

 

 可以给总分起个别名total

只需要在要起别名的列后面加上  as 别名   就行了

(5)去重操作 : distinct

 

 distinct关键字,修饰某个列,针对这个列的数据就可以进行去重了!!

会把重复的数据合并成一个

去重操作也可以对多个列进行去重

 

那这里为什么没把math重复的给去掉呢?

如果是多个列去重,则只能是当多个列同时相同的时候,才会视为重复,才进行去重

(6)排序

select 列名 from 表名 order by 列名;

order by 是默认升序排序

比如说我要按照语文成绩升序排序

想降序的话在末尾加上 desc

 

这里的desc和描述表结构的desc不一样,描述表结构的describe,这里的降序是descend

加上desc就是降序,啥也不加就是默认升序,或者写个asc也是升序,但是没必要

还可以指定多个列排序,但是有优先级,哪个越靠前,优先级越高

 

这里表示先看math的大小,如果math相同,再去比较chinese; 

 

!!!!!(7)条件查询

查询的时候指定筛选条件,where子句来表示条件

逻辑运算符

 

1. WHERE条件可以使用表达式,但不能使用别名。

2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分 

注意:

在条件查询的sql中,先执行where,符合条件的记录,再执行select前半部分决定显示哪些列,以及进行啥样的运算

而order by 是在查询结果都知道了之后才进行排序

在SQL中AND优先级比OR更高,当一个条件里同时有AND和OR的时候,先算AND

3.LIKE模糊查询

%代替任意个字符

_ 代替一个任意字符

NULL=NULL 结果还是NULL=》false

 

 where后面的条件fuhe(值为true)才保留记录,否则跳过

 (8)分页查询 limit

select 列名 from 表名 limit N;查询前N条记录

select 列名 from 表名 limit N offset M;从第N条记录开始查询,查询N条记录(M从0开始算)

上述的所有查询操作是可以实现复合查询的,就是合体使用,实现更复杂的查询


三.修改

使用update 来进行修改

upset 表名 set 列名 = 值,列名 = 值…… where 条件;

修改的时候明确针对哪张表的哪些行的哪些列改成哪些值

先from表,然后set什么列值,where改哪里的列值

也可以一条语句改多个列

update 也是一个危险操作,update是会改变真正的数据,也就是会改磁盘上的数据,不再是改临时表了,查询才是临时表,update给你来真的

为啥危险?因为你写update的时候不明确改哪里,不给条件,那么整张表的所有记录都会被修改!!!


四..删除表记录

delete from 表名 where 条件;

通过where条件来控制删除哪条或者哪些记录

同样的,如果不写where条件,就当当于把所有记录全部删除了

delete是删除所有表记录

drop是给你把表都删除了

都是很严重的问题!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值