sql语言
库表的增删改查常用语及语法
(1)数据记录筛选:
sql="select*from数据表where字段名=字段值orderby字段名[desc]"
sql="select*from数据表where字段名like'%字段值%'orderby字段名[desc]"
sql="selecttop10*from数据表where字段名orderby字段名[desc]"
sql="select*from数据表where字段名in('值1','值2','值3')"
sql="select*from数据表where字段名between值1and值2"
(2)更新数据记录:
sql="update数据表set字段名=字段值where条件表达式"
sql="update数据表set字段1=值1,字段2=值2……字段n=值nwhere条件表达式"
(3)删除数据记录:
sql="deletefrom数据表where条件表达式"
sql="deletefrom数据表"(将数据表所有记录删除)
(4)添加数据记录:
sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)"
sql="insertinto目标数据表select*from源数据表"(把源数据表的记录添加到目标数据表)
(5)数据记录统计函数:
AVG(字段名)得出一个表格栏平均值
COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名)取得一个表格栏最大的值
MIN(字段名)取得一个表格栏最小的值
SUM(字段名)把数据栏的值相加
引用以上函数的方法:
sql="selectsum(字段名)as别名from数据表where条件表达式"
setrs=conn.excute(sql)
用rs("别名")获取统的计值,其它函数运用同上。
(6)数据表的建立和删除:
CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)
例:CREATETABLEtab01(namevarchar(50),datetimedefaultnow())
DROPTABLE数据表名称(永久性删除一个数据表)
4.记录集对象的方法:
rs.movenext将记录指针从当前的位置向下移一行
rs.moveprevious将记录指针从当前的位置向上移一行
rs.movefirst将记录指针移到数据表第一行
rs.movelast将记录指针移到数据表最后一行
rs.absoluteposition=N将记录指针移到数据表第N行
rs.absolutepage=N将记录指针移到第N页的第一行
rs.pagesize=N设置每页为N条记录
rs.pagecount根据pagesize的设置返回总页数
rs.recordcount返回记录总数
rs.bof返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete删除当前记录,但记录指针不会向下移动
rs.addnew添加记录到数据表末端
rs.update更新数据表记录
一查询语句
-1查询所有记录从student
Select*fromstudent
-2.查询部s_no,s_name段从student中。
selects_name,s_nofromstudent
-3查询并采用别名选择s_name,=(),s_no()从student
select=s_no,=s_namefromstudent
或者selects_noas,s_nameasfromstudent
-4查询年龄在23岁以上的所有学生的和年龄并按照年龄倒排序selects_name,s_agefrom
studentwheres_age>23orderbys_agedesc
-5查询姓张的所有学生
select*fromstudentwheres_namelike'张%'
-6查询所有年龄在23-25之间,并且是男学生,还要姓张,只返回前一条记录,并按照年龄和
所在系倒排序。
selecttop1*fromstudentwheres_namelike'%张%'ands_sex='男'ands_agebetween23
and25orderbys_agedesc,s_deptasc
-7查询既不是交通工程系,也不是土木的学生的和年龄及所在系。
selects_name,s_age,s_deptfromstudentwheres_deptnotin('交通工程系','土木')
-8查询所有学生中不姓张的学生
select*fromstudentwheres_namenotlike'张%'
-9从学生表中查询的最后一位不在6-9范围内的学生情况
select*fromstudentwheresubstring(s_no,8,1)notlike'[6-9]'
-10查询成绩表中成绩是空的学生的情况
select*fromscwherec_grade=null
-11查询学生总人数
selectcount(*)as总人数fromstudent
-12查询选修了课程的学生人数
selectcount(*)as总人数fromsc
-13计算所有男生的成绩之和
selectsum(c_grade)fromscsc,studentwheres_sex='男'andstudent.s_no=sc.s_no
-14查询课程号为c002的学生平均成绩
selectavg(c_grade)fromscwherec_no='c002'
-15查询选修了课程的学生
selectcount(distincts_no)fromsc
-16查询选修了r001课程的学生最高分和最低分。
selectmax(c_grade),min(c_grade)fromscwherec_no='r001'
-17统计每门课程的选课人数,并列出课程号和人数
selectc_no,count(*)fromscgroupbyc_no
-18查询每名学生的选课门数和平均成绩
selects_no,count(*),avg(c_grade)fromscgroupbys_no
-19查询修了3门以上课程的学生
selects_no,count(*)fromscgroupbys_nohavingcount(*)>=3
-20查询修课门数大于等于3的学生平均成绩和选课门数
selects_no,avg(c_grade),count(*)fromscgroupbys_nohavingcount(*)>=3
-21查询每个学生的修课情况
select*fromstudent,scwherestudent.s_no=sc.s_no(两个表中的字段均列出)
-22查询计算机学生的修课情,要求列出学生的名字、所修课程号和成绩
selects_name,c_no,c_gradefromstudenta,scbwheres_dept='计算机'anda.s_no=b.s_no
-23查询选修了大学语文课程的学生修课成绩,要求列出学生的名字,所修的课程名和成绩
elects_name,c_name,c_gradefromstudenta,scb,coursecwherec_name='大学语文'and
a.s_no=b.s_noandb.c_no=c.c_no
-24将学生的,修课的课程名和成绩存放在永久表s_c_g中
selecta.s_name,c.c_name,b.c_gradeintos_c_gfromstudenta,scb,coursec
-25查询修了roo1课程的切成绩成绩高于此课程的平均成绩的学生的和成绩
selects_no,c_gradefromscwherec_no='r001'andc_grade>(selectavg(c_grade)fromscwhere
c_no='r001')
-26查询与李四在同一个系学习的学生
selects_namefromstudentwheres_dept=(selects_deptfromstudentwheres_name='李四')and
s_name<>'李四'
-27查询全体学生的和出生年份
selects_name,nf=datepart(yyyy,getdate())-s_agefromstudent
二更新语句
-1将新生记录(20010694、陈东、男、交通工程系、22岁)插入到表student中
insertintostudent(s_no,s_name,s_sex,s_dept,s_age)values('20010694','陈东','男','交通工程系','22')
-2在sc表中插入一条新记录,成绩暂缺
insertintosc(s_no,c_no,c_grade)values('20010694','j002',null)
-3将所有学生功的年龄加一
updatestudentsets_age=s_age+1
-4删除所有学生的选课记录
deletefromsc
-5删除所有成绩不几个学生的成绩记录
Deletefromscwherec_grade<60
-6删除计算机不几个学生的修课记录
deletefromscwherec_grade<60ands_noin(selects_nofromstudentwheres_dept='计算机')