【网学网提醒】:网学会员为需要朋友们搜集整理了SQL语法(培训)相关资料,希望对各位网友有所帮助!
数据库T-SQL基础讲解一.
使用SQL插入数据
insert[into]<表名>[列名]values<值列表>表名是必须的,表的列名是可选的,如果省略,将依次插入,当中间有一列是标识列时,可使用此方法createtablestu
(
SNamechar(8)notnull,
SAgeintnotnull,
SAddresschar(20),SExamchar(20)
)
select*fromstu
insertintostu(SName,SAge,SExam)values('里',18,90)2.(1)用select方法插入多行数据注意,要插入数据的这个表必须是一个新表,否则报错:"数据库中已存在名为'表名'象。可用此方法把一个虚拟的表转换成真实表,标识列的数据不允许指定,要重新创建selectstuInfo.stuName,stuInfo.stuAgeintostfromstuInfoselect*fromst2.(2)用union关键字合并数据进行插入union语句用于将两个不同数据或查询结果结合的一个新的结果集Insertstselect'张',19unionselect'晨',20unionselect'李',21unionselect'王',22--查询插入后结果select*fromst二.使用
T-SQL更新数据
update<表名>set<列名=更新值>[where<更新条件>]updatestsetstuAge=40wherestuAge=22select*fromst
的对
三.使用T-SQL删除数据
1.删除表中数据一行数据deletefrom<表名>[where<删除条件>]deletefromstwherestuName='晨'察看结果可知,delete删除的是整行数据,不只是其中的一列,所以在delete后不能出现字段名若deletestuAgefromst,则'对象名'stuAge'无效。'select*fromst2.(1)用delete删除表中所有数据deletest2.(2)用TRUNCATETABLE删除数据truncatetablesttruncatetable比delete执行速度快,而且使用系统资源和事务日志资源更少四.查询1.简单查询语句select<列名>from<表名>[where<查询条件表达式>][orderby<排序的列名>][asc或desc]1.(1)查询所有数据行和列select*fromstuInfo1.(2)简单条件查询
selectstuNamefrom
stuInfowherestuseat=3
1.(3)在查询中使用列名selectstuNameas学员,stuNoas学员编号fromstuInfowherestuAddressLike'河南洛阳'1.(4)查询空行在SQL中用'isnull'or'isnotnull'来判断是否为空行selectstuNamefromstuInfowherestuAddressisnull1.(5)在查询中使用常量列select=stuName,=stuNo,'ACCP4.0'as课程名称fromstuInfo1.(6)查询返回限制的行数
查前两行
<1>前几位
selectTop2=stuName,年龄=stuAgefromstuInfo
2.查询排序使用ORDERBY子句,(ASC)升序,(DESC)降序,如不指定,ASC升序排列select*fromstuMarks查询及格学员编号及成绩,按降序排列selectstuNoas'及格学员编号',writtenExamas'笔试成绩'fromstuMarkswhere(writtenExam>=60)orderbywrittenExamdesc查询机试前三名的学员编号及成绩,按降序排列
selecttop3stuNoas'及格学员编号',LabExamas'机试成绩'fromstuMarks
orderbyLabExamdesc
3.数据查询(2)
3.1使用like关键字模糊查询
select*fromstuInfowherestuNamelike'李%'
3.2使用between在某个范围内进行查询
select*fromstuInfowherestuAgebetween20and30
3.3使用in在列举值内进行查询
selectstuNameas学员fromstuInfowherestuAge
in('18','22','24')
3.4使用GROUPBY进行分组查询insertintostuMarksvalues('S25305','s25305',50,70)select*fromstuMarkselectstuNo,avg(writtenExam)as笔试平均分,avg(LabExam)as机试平均粉fromstuMarkgroupbystuNo先按writtenExam排,当有相同成绩时,按labExam排4.多表连接查询4.1内连接(1)在where子句中指定连接条件selectstuInfo.stuNameas学员,stuMarks.ExamNoas考号,stuMarks.writtenExamas笔试成绩,stuMarks.LabExamas机试成绩fromstuInfo,stuMarkswherestuInfo.stuNo=stuMarks.stuNo(2)在FROM子句中使用JOIN...ONselectstuInfo.stuNameas学员,stuMarks.ExamNoas考号,stuMarks.writtenExamas笔试成绩,stuMarks.LabExamas机试成绩fromstuInfoinnerjoinstuMarkson(stuInfo.stuNO=stuMarks.stuNo)4.2外连接查询
参与内连接中的表的地位是平等的,在外连接中表有主从之分
deletestuMarkswherestuNo='s25305'
(1)左外连接
selectstuInfo.stuNameasSNAME,stuMarks.writtenExam,stuMarks.LabExam
fromstuInfoLeftouterjoinstuMarkson(stuInfo.stuNO=stuMarks.stuNo)
(2)右外连接
selectstuInfo.stuNameasSNAME,stuMarks.writtenExam,stuMarks.LabExam
fromstuInforightouterjoinstuMarkson(stuInfo.stuNO=stuMarks.stuNo)
练习题
假如现在有两个表,一个班级主表Class,一个学生明细表Student,如下:
1.2.3.4.利用Insert向明细表Student插入一条班级为二(1)班的资料
利用Update将二(1)班的王五修改为麻六
利用Select查询出一(1)班的年龄大于18岁的学生,且按年龄排序
利用Delete删除二(1)班的所有主从资料