长沙网站优化对策,怎么上传网站图片的链接,番禺网站建设设计,关键词竞价排名为了大家更容易理解我举出的SQL语句#xff0c;本文假定已经建立了一个学生成绩管理数据库#xff0c;全文均以学生成绩的管理为例来描述。 1.在查询结果中显示列名#xff1a; a.用as关键字#xff1a;select name as 姓名 from students order by age b.直接表示#x…为了大家更容易理解我举出的SQL语句本文假定已经建立了一个学生成绩管理数据库全文均以学生成绩的管理为例来描述。 1.在查询结果中显示列名 a.用as关键字select name as 姓名 from students order by age b.直接表示select name 姓名 from students order by age 2.精确查找: a.用in限定范围select * from students where native in (湖南, 四川) b.between...andselect * from students where age between 20 and 30 c.“”select * from students where name 李山 d.like:select * from students where name like 李% (注意查询条件中有“%”则说明是部分匹配而且还有先后信息在里面即查找以“李”开头的匹配项。所以若查询有“李”的所有对象应该命令%李%;若是第二个字为李则应为_李%或_李或_李_。) e.[]匹配检查符select * from courses where cno like [AC]% (表示或的关系与in(...)类似而且[]可以表示范围如select * from courses where cno like [A-C]%) 3.对于时间类型变量的处理 a.smalldatetime直接按照字符串处理的方式进行处理例如select * from students where birth 1980-1-1 and birth 1980-12-31 4.集函数 a.count()求和如select count(*) from students (求学生总人数) b.avg(列)求平均如select avg(mark) from grades where cno’B2’ c.max(列)和min(列)求最大与最小 5.分组group 常用于统计时如分组查总数select gender,count(sno) from studentsgroup by gender(查看男女学生各有多少) 注意从哪种角度分组就从哪列group by 对于多重分组只需将分组规则罗列。比如查询各届各专业的男女同学人数 那么分组规则有届别(grade)、专业(mno)和性别(gender)所以有group by grade, mno, gender select grade, mno, gender, count(*)from studentsgroup by grade, mno, gender 通常group还和having联用比如查询1门课以上不及格的学生则按学号(sno)分类有 select sno,count(*) from grades where mark60group by snohaving count(*)1 6.UNION联合 合并查询结果如 SELECT * FROM studentsWHERE name like ‘张%’UNION [ALL]SELECT * FROM studentsWHERE name like ‘李%’ 7.多表查询 a.内连接 select g.sno,s.name,c.coursename from grades g JOIN students s ON g.snos.snoJOIN courses c ON g.cnoc.cno(注意可以引用别名)b.外连接b1.左连接select courses.cno,max(coursename),count(sno) from courses LEFT JOIN grades ON courses.cnogrades.cno group by courses.cno 左连接特点显示全部左边表中的所有项目即使其中有些项中的数据未填写完全。 左外连接返回那些存在于左表而右表中却没有的行再加上内连接的行。 b2.右连接 与左连接类似 b3.全连接 select sno,name,major from students FULL JOIN majors ON students.mnomajors.mno 两边表中的内容全部显示 c.自身连接 select c1.cno,c1.coursename,c1.pno,c2.coursename from courses c1,courses c2 where c1.pnoc2.cno 采用别名解决问题。 d.交叉连接 select lastnamefirstname from lastname CROSS JOIN firstanme 相当于做笛卡儿积 8.嵌套查询 a.用关键字IN,如查询李山的同乡 select * from studentswhere native in (select native from students where name’ 李山’) b.使用关键字EXIST,比如下面两句是等价的 select * from studentswhere sno in (select sno from grades where cno’B2’) select * from students where exists (select * from grades where grades.snostudents.sno AND cno’B2’) 9.关于排序order a.对于排序order有两种方法asc升序和desc降序 b.对于排序order,可以按照查询条件中的某项排列而且这项可用数字表示如 select sno,count(*) ,avg(mark) from grades group by snohaving avg(mark)85order by 3 10.其他 a.对于有空格的识别名称应该用[]括住。 b.对于某列中没有数据的特定查询可以用null判断如select sno,courseno from grades where mark IS NULL c.注意区分在嵌套查询中使用的any与all的区别any相当于逻辑运算“||”而all则相当于逻辑运算“” d.注意在做否定意义的查询是小心进入陷阱 如没有选修‘B2’课程的学生 select students.*from students, gradeswhere students.snogrades.snoAND grades.cno ’B2’ 上面的查询方式是错误的正确方式见下方 select * from studentswhere not exists (select * from grades where grades.snostudents.sno AND cnoB2) 11.关于有难度多重嵌套查询的解决思想 如选修了全部课程的学生 select *from studentswhere not exists ( select *from courseswhere NOT EXISTS (select *from gradeswhere snostudents.snoAND cnocourses.cno)) 最外一重从学生表中选排除那些有课没选的。用not exist。由于讨论对象是课程所以第二重查询从course表中找排除那些选了课的即可。