以下内容为个人的学习笔记整理,如有错误,请指出,谢谢~
一、数据更新
1、添加数据(insert):
①添加一行新记录:insert into 表名 (列名1,列名2,列名3....) values(值1,值2,值3....)
如果值是字符串要用""/'',并且列名和值要一一对应。
②添加多行记录:
2、修改数据(update):
①修改一行:update 表名 set 列名1=表达式1,列名2=表达式2.... where 条件
②修改多行:update S set age=age+2
3、删除数据(delete):
①一行一行删除:delete from 表名 where 条件
②清空表,保留表的结构并且不能撤销还原:truncate table 表名
二、表的查询
1、单表查询:
①查询全部:select * from 表名
②查询部分:select 列名1,列名2... from 表名 where 条件
③分组+排序查询(group by 列名+order by 列名 asc升序/desc降序):
例子:查询学生表(s)中学生的年龄以及各年龄人数,并且按照年龄的降序排序:
select count(*) from s group by age order by age desc;
④分页技术:limit后面接整数
select * from s limit 5;只出现前五条数据
select * from s limit 1,5;检测1-5的数据(从0开始是第一条)
2、常用的比较运算符
还可以:not between 10 and 100、not in、is not null
3、常用库函数以及统计汇总查询
①求学号为S1的学生的总分和平均分:
select sum(score) as sumscore,avg(score) as avgscore from sc where son="S1";
②求选修课C1课程最高分和最低分以及之间相差的分数:
select max(score) as maxscore,min(scoce) as minscoce,max(score)-min(scoce) as diff from sc where sno="C1";
③求学校中共有多少个系:
select count(distinct dept) as deptnum from s;
distinct是去除重复行
④统计有成绩同学的人数:
select count(scoce) from sc where scoce is not null;
select count(scoce) from sc;
4、连接查询:
①表之间满足一定条件的行进行连接时,from子句表明进行连接的表名,where子句表名连接的列名及其连接条件。
②利用关键字join进行连接,当join关键字放在from子句中应有关键字on与之对应,表明连接条件。
③inner join:显示复合条件的记录,此为默认值。
④left join:左(外)连接,用于显示符合条件的数据以及左边不符合的数据行,此时右边的数据行会null来显示。
⑤right join:右(内)连接,用于显示符合条件的数据以及右边不符合的数据行,此时左边的数据行会null来显示。
5、子查询:WHERE子句中包含一个形如SELECT-FROM-WHERE的查询块,此查询块称为子查询或嵌套查询。
例:查询与“刘伟”老师职称相同的教师号、姓名:
select sno name from t where prof=(select prof from t where name="刘伟");
①返回一个值的用=
②返回一组的话用:=any(子查询)、>any子查询......in(子查询)
三、视图的创建和使用
1、视图是虚表,其数据不进行存储,其记录来自于基本表,只在数据库中存储其定义。
对视图的操作会影响到原表数据!!
2、视图创建:
例:创建一学生情况视图S_SC_C(包括学号、姓名、课程名及成绩)
create view s_sc_c(sno,sn,cn,scoce) as select s.sno,sn,cn,scoce from s,c,sc where s.sno=sc.sno and sc.cno=c.cno;
3、视图的修改:
alter view 视图名(视图列表) as 子查询
4、删除视图:删除视图,不会删除数据,但是删除视图的数据,会删除掉原表的数据。
drop view 视图名
5、视图的查询、更新跟基本表的操作是一样的,视图的建立简化了查询的操作。
四、索引
1、索引的作用:加快查询速度,保证行的惟一性。
2、索引的分类:
①普通索引:create index ind_name on customer(cname)
②唯一索引(unique):create unique index o_index1 on oders(cid,gid)
③复合索引
④主键
⑤全文索引
⑥空间索引
注意:改变表的数据时候,索引将自动更新;索引建立之后,在查询使用该列时,系统自动使用索引进行查询;索引的数目无限,但索引越多,更新数据的速度越慢。数据库引擎优化顾问检查指定查询的处理方式。
3、创建索引的指导原则:
①索引主要是用于提高查询效率,如果查询操作比较少,而数据更新操作比较多,应该较少创建索引。
②对数据量少的表,无须创建索引。
③数据量更大的表,并且经常使用某个字段作为查询的条件,或者经常用该字段进行排序,则可以通过创建索引提高查询速度。
④若字段中包含几个不同的值,大部分为重复值,则不需要创建索引。
4、删除索引:
drop index 索引名 on 数据表名