CRUD:Create(新增数据)、Retrieve(查询数据)、 Update(修改数据)、Delete(删除数据)

一:新增数据(create)
 1.全列增加insert
 into table_name
 values(colum1,colum2,…),
 (colum1,colum2,…);
 eg:
 insert
 into score
 values(1,‘张三’,60,70,80),
 (2,‘李四’,70,80,70);
 备注:如果不指定列名,插入的顺序一定要和创建表的数据顺序保持一致。2.指定列插入
insert
 into table_name(colum1,colum3)
 values(1,3);
 eg:
 insert
 into score(id,name,math,english)
 values(4,‘赵六’,56,89);
 备注:插入值的顺序和指定值得顺序相同。3.特殊插入 insert…select
 eg:将score中学生的姓名插入到score2中
 insert into score2(name)
 select sname from score
 where sname is not null;*注意:insert into插入时,根据列的顺序匹配查询结果,不关注列名。
二:查询数据(Retrieve)1.全列查询
 select*
 from table_name:2.选定列查询
 select 列名,列名
 from table_name;
 eg:
 select name
 from score;3.表达式查询
 select 表达式
 from table_name;eg1:所有同学成绩加10分
 select math+10
 from score;eg2:查询数学成绩的平均成绩
 select avg(math)
 from score;eg3:查询所有学学生的成绩总分
 select name,math+chinese+english
 from score;注意:表达式不会影响表的原始数据。
4.别名查询
 select 列名 as 别名 from table_name;eg1:
 select name as ‘姓名’ from score;eg2:
 select name as’姓名’,(math+chinese+english) as total from score;注意:别名不会对表的原始数据造成影响。
5.去重distinct
 select distinct 列名 from table_name;
 eg:
 select distinct math
 from score;6.排序order by
 升序:asc
 降序:desceg1(单列排序):
 select name,math
 from score
 order by math asc;eg2(多列排序):
 select name,math
 from score
 order by math desc ,english,chinese;
 (适用于两个人具有相同的一门成绩,先根据数学成绩排,再根据英语、语文成绩排。)注意:null为最小。

7.条件查询

mysql查看数据变更 mysql查询并修改数据_mysql


mysql查看数据变更 mysql查询并修改数据_数据_02


注意:

1.条件查询(where)不能使用别名,(order by)可以使用别名,因为别名产生在select阶段,而此时where阶段还未产生别名,而order by阶段已经产生了别名。
 (mysql的执行顺序:
 from-> where->group by-> having->select->order by->limit)
 eg:
 select math as ‘数学’
 from score
 where math=80
 order by math asc;
2.and的优先级高于or,如果需要先执行or,就给or增加括号
3.limit表示限制查询某分页的部门信息,限制查询最多300行,少于300 行不会报错
 (1)select* from table_name limit n;(查询某张表的前n行)
 (2)select* from table_name limit 2 offset 2;(offest表示跳过前两条查询后面两条,如果为…s offset n表示跳过n条查询后s条)
 (3)select* from table_name limit s,n;(‘,’ 表示跳过前s条查询后面的n条信息)
…limit s offset n和…limit s,n查询的值相反查询格式:
 select 列名
 from table_name
 where 条件(and\or)条件;eg1:
 select sname,sno
 from score
 where math+chinese+english >300;eg2:
 select sno
 from score
 where math=80 or math=99;eg3:
 select sname
 from score
 where chinese <=> null;eg4:
 select sname
 from score
 where math>chinese;eg5:
 select sname
 from score
 where math between 60 and 90;三:Update(修改数据)
 1.全部数据修改
 (1)单列全部数据修改
 update table_name
 set column=n;
 eg:将全班数学成绩改为80
 update score set math=80;(2)多列全部数据修改
 update table_name
 set column1=n,column2=s;
 eg:
 update score
 set math=90,chinese=100;2.部分数据修改
 (1)单列部分信息修改
 (a)修改一列的前面部分信息
 update table_name set column=n limit s;
 (修改这列的前s行信息)(b)修改指定信息
 update table_name
 set column=n
 where 条件;
 eg:
 update score
 set math=90
 where sno=2002;(2)多列部分信息修改
 (a)修改几列的前面部分信息
 update table_name
 set column1=n,column2=m limit s;
 eg:
 update score
 set math=60,chinese=70 limit 3;
 (b)修改几列的指定信息
 update table_name
 set column1=n,colum2=m
 where 条件语句;
 eg:
 update score
 set math=88,english=99
 where sname like ‘张%’;四:Delete(删除数据)
 1.delete删除(只删除表的信息,表结构存在)
 (1)删除表中的所有信息
 delete from table_name;(2)按条件删除
 delete from table_name
 where 条件语句
 (order by…)
 (limit…)
 eg:(删除全班数学成绩最高的同学信息)
 delete from score
 order by math desc
 limit 1;2.drop删除(删除此表及表的结构,表彻底不存在)
 drop table table_name;
 注意:drop属于数据定义语言,不能使用where条件3.truncate删除(不删除表结构,只删除表中所有信息)
 truncate table_name
 优点:节省磁盘空间,删除速度非常快

*注意:
(1)删除的影响范围:drop(表中所有信息+表结构)>truncate(表中的所有信息)>=delete(表中所有信息/部分信息);

(2)只有delete有where才可以添加查询条件,其他不行;

(3)命令类型:
drop 属于数据定义语言

delete属于数据操作语言(执行原理:数据不是被真正删除,只是给数据加了删除标签,设置set autocommit=0;之后再惊醒删除,还可以通过rollback找回)

truncate属于数据定义语言(执行原理:1.重新创建score表的数据结构,没有信息,将原来的score删除,真正将表中信息删除)

(4)执行效率
drop>truncate>delete(数据越大,执行效率差别越大)*

(5)对于自增值auto_incerment
delete:删除所有数据,自增值不会改变,不会被重置;
truncate:删除所有数据,自增值被重置。