SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx

上传人:b****1 文档编号:4823064 上传时间:2023-05-04 格式:DOCX 页数:30 大小:46.33KB
下载 相关 举报
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第1页
第1页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第2页
第2页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第3页
第3页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第4页
第4页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第5页
第5页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第6页
第6页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第7页
第7页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第8页
第8页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第9页
第9页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第10页
第10页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第11页
第11页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第12页
第12页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第13页
第13页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第14页
第14页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第15页
第15页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第16页
第16页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第17页
第17页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第18页
第18页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第19页
第19页 / 共30页
SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx

《SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx(30页珍藏版)》请在冰点文库上搜索。

SQL常用的增删改查语句视屏笔记精Word格式文档下载.docx

区别char和varchar数据类型:

char数据类型是存放固定长度的字符

Varchar数据类型是存放动态长度的字符

char(14,实际放入到数据库的字符长度为14个字符,如果实际存储的长度小于定义的长度,那么数据库会在次字符串后面加上3个空格

1、insert语句:

insert语句是属于SQL语言中的DML

为表插入数据

你向一个表中插入一条新记录,但有一个字段没有提供数据。

在这种情况下,有下面的四种可能:

1、如果该字段有一个缺省值(默认值),该值会被使用。

2、如果该字段可以接受空值,而且没有缺省值,则会被插入空值。

3、如果该字段不能接受空值,而且没有缺省值,就会出现错误。

你会收到错误信息:

Thecolumnintablemytablemaynotbenull.

4、如果该字段是一个标识字段,那么它会自动产生一个新值。

当你向一个有标识字段的表中插入新记录时,只要忽略该字段,标识字段会给自己赋一个新值。

使用INSERT语句可向文本型字段中插入数据。

但是,如果你需要输入很长的字符串,你应该使用WRITETEXT语句。

语法:

insertinto表名(列名1,列名2,…..values(值1,值2,….

注意:

(列名1,列名2,…..可以不写,这样的话,插入的values(值1,值2,….中的值必须包含表中的所有列,不然会报错。

把INSERT语句与SELECT语句结合起来,可以添加多个记录。

像这样:

代码:

INSERTmytable(first_column,second_column

SELECTanother_first,another_second

FROManothertableWHEREanother_first=’CopyMe!

这个语句从anothertable拷贝记录到mytable.只有表anothertable中字段another_first的值为’CopyMe!

’的记录才被拷贝。

2、update语句它也是属于SQL语句中的DML,可以修改表的数据,使用WHERE子句来选择更新特定的记录。

需要更新很长的字符串,应使用UPDATETEXT语句。

如果你不提供WHERE子句,表中的所有记录都将被更新。

update表名set列名1=值1,列名2=值2,……..[where条件….]

updatestudentsetsage=20wheresno=’s014’----修改一列

updatestudentsetsage=20,setssex=’女’wheresno=’s014’

----修改多列逗号隔开

3、delete语句也是属于SQL语句中的DML

可删除表中的一行或多行,在SQLSELECT语句中可以使用的任何条件都可以在DELECT语句的WHERE子句中使用。

删除应该表中的所有记录,应使用TRUNCATETABLE语句。

deletefrom表名[where条件….]

deletefromstudent----删除表student中所有数据

deletefromstudentwheresno=‘s014’----删除表student中编号是014的一行

deletefromstudentwheresno>

=‘s013’--删除表student中编号大于等于013的行

4、建立索引

CreateINDEXindex_nameONtable_name(column_name

说明:

对某个表格建立索引后,数据库会对相应列进行自然排序,以增加查询时的速度。

4、基本查询技术:

数据库中提供一种可以将表中的数据查询出来的技术,称为select查询

select查询技术的基本语法格式

select[列名1,列名2,…..]|from表名1,表名2

[where条件]

[groupby分组的列名]

[having聚合函数比较操作]

[orderby排序的列名]

(1)查询语句中的“*”号代表将表中的列全部显示出来

select*fromstudent

(2)如果只想在查询中显示某一列用:

selectsnosnamesagefromstudent

“*”和列名只能够二选一,不能够同时出现

(3)在查询的时候可以为表或者列定义别名

A:

为列定义别名

selectsnoas学号,snameas姓名fromstudent

或:

select‘学号’=sno,‘姓名’=snamefromstudent

B:

为表定义别名

selectsnosnamesagessexfromstudenta

好处:

当出现多张表联系起来作查询的时候,如果多张表中含有相同的列名的时候,为表定义别名使得查询比较方便

例如:

想查询课程是由哪些老师就是讲授的。

从课程course表和老师teacher表中查找车tno列相同的数据

selectcname,tname,fromcoursea,teacherb

wherea.tno=b.tno

(4)distinct关键字

此关键字是为了去掉列中重复的值,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。

selectdistinctsnofromsc

(5)orderby排序(默认升序

orderby列名[desc|asc]

desc:

代表降序排列

asc代表升序排列

select*fromstudentorderbysname

如果不写排序关键字,默认的是升序

select*fromstudentorderbysnamedesc

(6)where关键字使用

Where作为查询筛选结果的一个过程(非常重要

where条件1[or|and][条件2]…

条件1可以包括以下内容:

Where列名1列名2|数值

(7topn限制返回的行数

使用TOPn[PERCENT]选项限制返回的数据行数,TOPn说明返回n行,而TOPnPERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。

SELECTTOP2*FROM`testtable`

SELECTTOP20PERCENT*FROM`testtable`

条件表达式分类:

1、比较条件:

(>

:

大于<

小于>

=:

大于等于=<

小于等于<

>

不等于=:

登于)

找学生年龄大于23岁的同学信息

select*fromstudentwheresage>

23

2、逻辑条件

(and:

与运算or:

或运算not:

非)

逻辑操作的用法:

Where条件1条件2

查找课程编号大于’c002’的课程由哪些老师讲授

sSelect*fromteacher,coursewhereteacher.tno=course.tnoando>

‘c002’

查找选修了课程’c002’,或者成绩大于70的学生有哪些

selectsname,sage,cno,scorefromstudenta,scb

wherea.sno=b.snoand(cno=’c002’orscore>

70

not关键字的使用:

select*fromscwherescorenotbetween70and80

3、in关键字

它是要求查询的结果在某几个值里面

select*fromscwherescorenotin(70,90,80

select*fromcoursewherecnoin(‘c001’,’c002’,’c005’

in还可以应用到子查询中

select*fromscwheresno

in(selectsnofromstudentwheresno>

=‘s002’

4、like关键字

like是作为SQL模糊查询比较常用的一个技术,在like关键字使用中提出两个比较特殊的符号

%:

0个或多个任意字符

_:

任意一个字符

a、查找学生表中姓“陈”的同学

select*fromstudentwheresnamelike‘陈%’

b、查询学生表中名字是三个字的学生信息

select*fromstudentwheresnamelike‘___’----‘内三下杠’

思考题:

如果一个列中的内容含有下划线,要去用like来查找含有下划线的信息,该怎么做?

在SQL模糊查询中提供了一个escape(逃离、躲避、转移关键字,它作为转义符使用

select*fromstudentwheresnamelike‘%$_%’escape‘$’

“$”是定义的转移符号,那么在$符号后面的下划线不再是like中的特殊符号,而是一个普通字符

5、all关键字

6、any关键字

7、between…and关键字

5、聚合函数:

只能对表中的数字类型进行计算,其他类型报错

max、min、count、avg、sum

max函数使用:

selectmax(sagefromstudent----求学生表中最大的年龄

min函数使用:

selectmin(sagefromstudent-----求学生表中最小的年龄

count函数使用:

selectcount(*fromstudent

selectcount(snofromstudent

count(*:

可以计算包含null列的记录数

count(列名:

记录总记录数的时候,不去计算null值

avg函数的使用:

selectavg(sagefromstudent-----求学生表中的平均年龄

sum函数的使用:

selectsum(sagefromstudent-----求学生表中的年龄和

6、groupby子句,它是一个分组函数,可以对某一列相同的值进行分组并求出相应的结果。

Select列名1[,列名2….]from表名groupby列名1[,列名2…]

求学生表中男女生的总数

Selectssex,count(ssexfromstudentgroupbyssex

求不同老师总共讲授的课程的总数

A.两张表的查询teacher,course

B.对不同的老师进行一个分组

C.分组后求课程的总数

Selectt.tno,tname,count(cnofromteachert,coursec

wheret.tno=c.tnogroupbyt.tno,tname

groypby执行原理、注意事项:

a.先根据groupby后的列名进行分组

b.然后根据count(列名中的列名进行统计

c.groupby子句经常和聚合函数一起使用

d.在使用groupby的时候,如果查询的列没有包含在聚合函数中,那么该列一定要出现在groupby子句后面

7、having子句使用

having子句的作用非常重要,它是对聚合函数的值可以进行比较的操作。

Having必须放在groupby子句的后面。

查询讲两门课以上的老师信息

Wheret.tno=c.tnogroupbyt.tno,t.namehavingcount(cno>

=2

创建表的语法

creattable表名(

列名_1数据类型约束条件

列名_2数据类型约束条件

……………………

如果定义的表中有多个列,那么需要以英文逗号”,”隔开;

表名和列名不能是SQL语言中的关键字

Numeric(p,n

P代表数字类型的精度,插入数据的的最大长度。

整数位多了会报错

n代表小数点后面的位数。

小数后的位数长度超过n为会四舍五入

creattableA_2(

a_nonumeric(5,2//最大长度为5位,小数点后为两位,

insertintoA_2(a_novalues(789.298//789.30

insertintoA_2(a_novalues(7890.28//报错

插入日期类型

creattableA_3(

a_datedatatime

insertintoA_3values(‘2011-04-02’

查询表:

select*from表名

select*fromA_2

1、SQL链接查询

含义:

复杂的SQL查询是基于多张表以上的查询,就必须考虑多张表的连接查询

是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。

SQL链接查询的分类:

等值链接外连接交叉链接

等值链接:

两个SQL语句:

第一个:

selecttname,cnamefromteachert,coursecwheret.tno=c.tno

第二个:

selecttname,cnamefromteachertinnerjoincoursecont.tno=c.tno

查询学生所选的课程的分数,要求跟上学生的姓名:

selecta.sno,sname,o,cname,scorefromstudenta

scb,coursecwherea.sno=b.snoando=o

第二个SQL语句是SQL92/SQL99的写法,这种写法叫做连接查询中的内连接形式

外连接:

包括:

左外链接、右外连接、完全链接

外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时、右表(右外连接时或两个表(全外连接时中所有符合搜索条件的数据行。

使用外连接需要一些关键字:

leftouterjoinon(左外连接

rightouterjoinon(右外连接

fullouterjoinon(完全连接的写法

例子:

select*from表1leftouterjoin表2on表1.列名=表2.列名

creattableR(

avarchar(5

bvarchar(5

cvarchar(5

creattableS(

dvarchar(5

leftouterjoin的含义:

除了满足查询条件的结果显示出来,还需将leftouterjoin左侧表中没有匹配的数据显示出来

外连接实战应用:

1、查询所有同学的学号、姓名、选课数、总成绩

如果没有选课的学生信息,是否也要打印出来作为统计数据

selecta.sno,sname,count(cno,sum(score

fromstudentaleftouterjoinscc

ona.sno=c.snogroupbya.sno,sname

2、查询不同老师所教不同课程的平均分

selectt.tno,tname,o,avg(scorefromcoursec

leftouterjoinscono=ogroupbyo,t.tno,tname

rightouterjoin的含义:

除了满足查询条件的结果显示出来,还需将rightouterjoin右侧表中没有匹配的数据显示出来

selecta.sno,sname,count(cno,sum(scorefromscc

rightouterjoinstudenta

selectt.tno,tname,o,avg(scorefromsc

rightouterjoincoursecono=o

groupbyo,t.tno,tname

fullouterjoin的含义:

就是左外连接和有外链接结果的和

select*fromRfullouterjoinonSonR.c=S.c

连接操作中的ON(join_condition子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。

无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接连接。

SELECTp1.pub_id,p2.pub_id,p1.pr_info

FROMpub_infoASp1INNERJOINpub_infoASp2

ONDATALENGTH(p1.pr_info=DATALENGTH(p2.pr_info(一内连接

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。

SQL的子查询

1、where子查询

selectcno,scorefromscwherescore>

(selectavg(scorefromsc

where子查询后面的条件允许写select语句,那么这个限制条件(“>

”符号)后的查询称为子查询。

2、from子查询

结构:

select*from表名1,(select*from表名2

查询每个学生的课程、成绩、总平均分

selectcno,score,b.ccfromsc,(selectavg(scoreasccfromscb

wheresc.

虚表命名为b,查询出来的平均分命名为cc

在from关键字后面出现的查询句子,我们可以让他单独的作为一张虚表。

3、in子查询

AB

4、any子查询

any:

大于最小的

=any:

就是关键字in的作用

select*|列名1,列名,列名2.from表名where列名>

any比较条件(子查询

select*|列名1,列名,列名2….from表名where列名

select*|列名1,列名,列名2….from表名where列名=any比较条件(子查询

查询学生成绩大于70,且出去里面最小的学号

selectdistincta.sno,snamefromstudenta,scb

wherea.sno=b.snoandb.sno>

anda.sno>

any(selectsnofromscwherescore>

70

5、all子查询

语法格式:

select*|列名1,列名,列名2….from表名where列名>

all比较条件(子查询

select*|列名1,列名,列名2….from表名where列名=all比较条件(子查询

all:

大于子查询结果中最大的数据

子查询结果中最小的数据

=all:

没有任何数据

Select*fromstudentwheresno>

all(selectsnofromscwherescore>

70

6、嵌套子查询

7、exists子查询

允许查找特定条件的行,exists后面总是跟一个子查询,只要只查询返回了行,exists的值就为true。

例:

查询返回在任何一次考试中分数低于40分得学生studentID和姓名

selectstudentID,namefromstudentswhereexists

(selectstudentIDfromstudentExameWheremark<

40ande.studentID=s.studentID;

这里的基础是一个相关子查询返回分数低于40分得学生的studentID:

selectstudentIDfromstudentExameWheremark<

40

对student表中的每一行只执行一次

ande.studentID=s.studentID

2.5

修改表:

修改表的时候一般有如下操作:

1、修改表中的数据类型

2、为表添加列

3、ABC

4、为表添加约束

5、删除表的约束

第一种:

为表添加列

altertable表名add列

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2