表的CRUD

增加(Create)、读取查询(Retrieve)、更新(Update)、删除(Delete)
--------------- 增删查改 --------------
一.增加 insert into
insert into ta_name[不写,默认全部属性] values(数据),...


二.改 update
update 表名 set 要修改的列名=修改后的值,...
	[where 条件]
	[limit]

create table tt20(
	id int comment '学号',
	name varchar(10) not null
);

insert into tt20 values(1,'lisi'),(2,'wang'),(3,'mr.S');

update tt20 set id= 4; #修改一列

update tt20 set id=5 where name = 'lisi';# 修改name为lisi的id=5;

update tt20 set id=4 limit 1;# 只影响一个

三.删除 delete

delete from 表名  
	[where 条件] #不跟where条件 整表删除,一行一行的删

truncate table 表名 一次性删除 #将文件大小设置为0;

四.查询

select *是查询效率最低的。

1.select [distinct(去重)] * | (列名) from 表名;


create table student(
	id int(2) zerofill primary key auto_increment comment '学号不能重复,最多100个学生',
	name varchar(10),
	chinese decimal(4,1) default 0.0 not null,
	english decimal(4,1) default 0.0 not null,
	math decimal(4,1) default 0.0 not null
);

insert into student values
	(1,'lisi',89.0,78.0,90.0),
	(2,'tang',67.0,98.0,56.0),
	(3,'sun',87.0,78.0,77.0)
	;

insert into student(name,chinese,english,math) values
	('lao',88.0,98.0,90.0),
	('hong',82.0,84.0,67.0)
	;

insert into student values
	(6,'ru',55.0,85.0,45.0),
	(7,'菩萨',75.0,65.0,30.0)
	;

select id,name,chinese from student;

select distinct math from student; #去重查询

select chinese+english+math from student;#结果累加

2.as

select chinese+english+math as '总分' from student; #结果查询后 命名该列为as后的别名

3.where 子句 (and 优先级大于or)
将所有姓tang的学生的总成绩增加60% 

select name,(chinese+english+math)*1.6
	from student
	where name like 'tang%';#like 模糊查询
 
查询英语成绩大于90分的同学和他的英语成绩
select name,english from student
	where english > 90;

查询姓li并且数学成绩>85的同学姓名与他的总成绩

select name,(chinese+english+math) from student
	where name like 'li%' and math > 85;

查询总分大于200并且数学成绩小于语文成绩的姓唐的学生

select id,name from student
	where (chinese+math+english)>200 and
	math < chinese and
	name like 'tang';

查询英语分数在84-90的所有学生

select id,name from student
	where engish>=84 and english <=90;

4.between and

select id,name from student 
	where english between 84 and 90;# between..and.. 闭区间

查询总分大于200的学生姓名和他的总成绩

select name,(english+chinese+math) as total from student
	where total >200; #错误 where子句优先执行 故不能使用


5.order by 对结果进行排序 最后执行 放于末尾

select  [distinct(去重)] 列名 ...
	from 表名
	[where 子句]
	order by 列名 asc(默认) | desc;

查询总分大于200的学生姓名和他的总成绩,并且按总成绩升序排序

select name,(english+chinese+math) as total from student
	where (english+chinese+math) >200
	order by total;

6.分页查询
select...
	[where 条件]
	limit 起始位置,记录条数

查询所有学生信息,每页展示3条记录,输出第二页。

select * from student limit 3,3; #展示 4,5,6

7.聚合函数
count(列名|*) 不统计null
sum()
avg()
max()
min()
select count(math) from student; #7
select count(*) from student; #7

alter table student modify math decimal(4,1) default 0.0;

insert into student values(8,'opo',89,99,null);

select count(math) from student; #7
select count(*) from student; #8

8.分组查询 group by
条件过滤 having

select 列名..
	from 表名
	group by 列名

显示每个部门的平均和最高工资
select avg(列名),max(列名)
	from 表名
	group by 列名;

select avg(sal),max(sal),deptno
	from emp
	group by deptno;

显示平均工资的低于2000的部门编号和他的平均工资
select avg(sal) as avg_sal,deptno
	from emp
	group by deptno having avg_sal <2000;

--------------------多表查询----------------

数据来源于多个表的查询语句

查询所有员工姓名,工资和他的部门名称

默认笛卡尔积查询(1,2)(3,4) = [(1,3),(1,4),(2,3),(2,4)]
select ename,sal,dname
	from emp,dept
	where emp.deptno = dept.deptno;#条件


显示部门号为10的部门名称,员工名称和工资

select dname,ename,sal
	from emp,dept
	where emp.deptno = dept.deptno
	and emp.deptno = 10;#公有属性一定要注明是哪个表 不能只写deptno

-------------------子查询---------------
显示和SMITH同一部门的所有员工姓名,员工编号

select ename,empno
	from emp
	where empno=(select deptno
		from emp
		where ename = 'SMITH');#包含了SMITH

select deptno
	from emp
	where ename = 'SMITH';

-------------------索引----------------
原理:二叉树

create index empno_index on emp(empno); #给表emp的empno创建一个叫做empno_index的索引

创建索引的原则:
1.比较频繁作为查询条件的字段应该创建索引
2.唯一性太差的字段不太适合单独作为索引
3.更新非常频繁的字段不适合作为索引
4.不会出现在where子句的字段不适合创建索引

-------------------事务-----------------
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CRUD操作是指对链进行增加、删除、修改和查询的操作。 1. 增加操作:要将一个新节点添加到链中,有两种常见的方法: - 第一种方法是直接将新节点添加到链的尾部。可以通过遍历链找到最后一个节点,然后将其next指针指向新节点。这样就完成了节点的添加。 - 第二种方法是在指定位置插入新节点。需要先找到要插入位置的前一个节点,然后将新节点的next指针指向前一个节点的next节点,再将前一个节点的next指针指向新节点。这样就完成了节点的插入。 2. 删除操作:要删除链中的某个节点,同样有两种常见的方法: - 第一种方法是删除指定位置的节点。需要先找到要删除位置的前一个节点,然后将前一个节点的next指针指向要删除节点的next节点。这样就完成了节点的删除。 - 第二种方法是删除指定值的节点。需要遍历链,找到要删除的节点,然后将前一个节点的next指针指向要删除节点的next节点。这样就完成了节点的删除。 3. 修改操作:要修改链中的某个节点的值,需要找到要修改的节点,然后将其data域修改为新的值即可。 4. 查询操作:要查询链中的某个节点,需要遍历链,逐个比较节点的值,直到找到目标节点或者遍历到链末尾。 综上所述,链CRUD操作包括增加、删除、修改和查询,可以根据具体需求选择适合的方法进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值