SQL数据库的T |
您所在的位置:网站首页 › sql查询所有学生的选课信息 › SQL数据库的T |
T-SQL 查询语句
一、简单查询 1、列出全部学生的信息。 SELECT * FROM 学生表 2、列出软件测试专业全部学生的学号及姓名。 SELECT 学号,姓名 FROM 学生表 WHERE 专业=‘软件测试’ 3、列出所有必修课的课号。 方法一:SELECT 课号 FROM 课程表 where 类型='必修课' 方法二:SELECT DISTINCT 课号 FROM 选课表 where 类型='必修课' 4、求1号课成绩大于80分的学生的学号及成绩,并按成绩由高到低列出。 SELECT 学号,成绩 FROM 选课表 WHERE 课号='1' AND 成绩>80 ORDER BY 成绩 DESC 5、列出非软件测试专业学生的名单。 方法一:SELECT 姓名 FROM 学生表 WHERE 专业'软测试件' 方法二:SELECT 姓名 FROM 学生表 WHERE NOT 专业='软件测试' 方法三:SELECT 姓名 FROM 学生表 WHERE 专业!='软件测试' 6、查询成绩在70~80分之间的学生选课得分情况 方法一:SELECT * FROM 选课表 WHERE 成绩>=70 AND 成绩150 (二)自连接查询 1、列出那些专业相同的学生相应的姓名及专业信息。 SELECT a.姓名,b.姓名,专业 FROM 学生表 a,学生表 b WHERE a.学号b.学号 AND a.专业=b.专业 2、求至少选修1号课和2号课的学生的学号。 SELECT X.学号 FROM 选课 X,选课 Y WHERE X.学号=Y.学号 AND X.课号='1'AND Y.课号='2' (三)超连接 1、列出选修1号课的学生姓名及成绩。 方法一:(使用简单连接查询格式) SELECT 姓名,成绩 FROM 学生表,选课表 WHERE 学生表.学号=选课表.学号 AND 课号='1' 方法二:(使用内部连接格式) SELECT 姓名,成绩 FROM 学生表 INNER JOIN 选课表 ON 学生表.学号=选课表.学号 WHERE 课号='1' 方法三:内部连接的INNER短语可以省略。(与方法二等价) SELECT 姓名,成绩 FROM 学生表 JOIN 选课表 ON 学生表.学号=选课表.学号 WHERE 课号='1' 2、查询没有选修任何课程的学生姓名。 方法一:使用嵌套查询 SELECT 姓名 FROM 学生表 WHERE 学号 NOT IN (SELECT 学号 FROM 选课表) 方法二:使用超连接的右连接。 SELECT 姓名 FROM 选课表 RIGHT JOIN 学生表 ON 选课表.学号=学生表.学号 WHERE 选课表.学号学生表.学号 方法三:使用超连接的左连接。(注意表名顺序和方法二的不同) SELECT 姓名 FROM 学生表 LEFT JOIN 选课表 ON 选课表.学号=学生表.学号 WHERE 选课表.学号学生表.学号 三、嵌套查询 (一)普通嵌套与谓词EXISTS 1、列出选修c语言课的学生的学号。 方法一: SELECT 学号 FROM 选课表 WHERE 课号=(SELECT 课号 FROM 课程表 WHERE 课名='c语言') 方法二:使用谓词EXISTS。注意和方法一格式上的不同。 SELECT 学号 FROM 选课表 WHERE EXISTS (SELECT * FROM 课程表 WHERE 课名='c语言' AND 选课表.课号=课程表.课号) 方法三: SELECT 学号 FROM 选课表 WHERE 课号 IN (SELECT 课号 FROM 课程表 WHERE 课名='c语言') (二)量词ANY、SOME、ALL 1、求选修2号课的学生中,成绩比选修1号课的最低成绩要高的学生的学号和成绩。 方法一: SELECT 学号,成绩 FROM 选课表 WHERE 课号='2' AND 成绩> (SELECT MIN(成绩) FROM 选课表 WHERE 课号='1') 方法二:ANY等价于SOME,所以可将ANY换成SOME。 SELECT 学号,成绩 FROM 选课表 WHERE 课号='2' AND 成绩>ANY (SELECT 成绩 FROM 选课表 WHERE 课号='1') 2、求选修2号课的学生中,成绩比选修1号课的任何学生的成绩都要高的那些学生的学号和成绩。 方法一: SELECT 学号,成绩 FROM 选课表 WHERE 课号='2' AND 成绩> (SELECT MAX(成绩) FROM 选课表 WHERE 课号='1') 方法二: SELECT 学号,成绩 FROM 选课表 WHERE 课号='2' AND 成绩>ALL (SELECT 成绩 FROM 选课表 WHERE 课号='1') (三)内外层互相关嵌套(外层依赖于内层的查询结果,内层依赖于外层来进一步查询) 1、列出每门课程中成绩最高的选课信息。 SELECT * FROM 选课表 A WHERE 成绩=(SELECT MAX(成绩) FROM 选课表 B WHERE A.课号=B.课号) 2、列出每个学生中成绩低于本人平均成绩的选课信息。 SELECT * FROM 选课表 A WHERE 成绩2014-04 and 种类='水果'
在products表中总成本 select sum (成本) 总成本 from products
在products表中查询所有水果的信息,并按照成本从高到低的顺序显示结果 select * from products where 种类='水果' order by 成本 desc
在products表中查询成本在1—5元之间的蔬菜信息
select * from products where 成本 between 1 and 5 and 种类='蔬菜'
将products表中所有水果的名称、种类和出厂日期信息插入到新表products_new中 . select 名称,种类,出厂日期 into new01 from products where 种类='水果' 查询成本低于10元的水果信息
select * from products where 成本95
王明转学,把王明删掉? Delete from student where 姓名=‘王明’
来了一位新同学,名字叫于美丽? Insert into student values(20,’于美丽’,’110110110’,3,100,’勤奋好学’) 查询成绩大于95分,并且班级是2班的都有谁? Select * from student where 成绩>95 and 所在班级=2
查询成绩大于95分,并且班级是1、2班的都有谁? Select * from student where 成绩>95 and 所在班级 between 1 and 2
查询平均成绩? Select avg(成绩) as 平均成绩 from student
使用truncate删除所有的数据 Truncate table student 案例三: 1、向employee表中插入一行数据,要求姓名:张三,身份证号:777666555444333222 职务:运维工程师, 出生日期:2000/10/1, 基本工资:9000 insert into employee (姓名,身份证号,职务,出生日期,基本工资) values ('张三','777666555444333222','运维工程师','2000/10/1',9000)
2、更改employee表中黄蓉的基本工资为11000 update employee set 基本工资='11000' where 姓名='黄蓉'
3、查询employee 表中的所有员工信息 select * from employee
4、查询employee表中姓名、职务、基本工资列的内容 select 姓名,职务,基本工资 from employee
5、查询所有运维工程师的姓名 select 姓名 from employee where 职务='运维工程师' 6、查询基本工资为8000~10000的员工所有信息 select * from employee where 基本工资 between 8000 and 10000
7、查询基本工资20000的员工所有信息 select * from employee where 基本工资20000
8、查询基本工资为8000、9000和1000的员工所有信息 select * from employee where 基本工资 in (8000,9000,10000) 查询身份证号以66开头的员工所有信息 select * from employee where 身份证号 like '66%' 查询姓杨的运维工程师的信息
select * from employee where 姓名 like '杨%' and 职务='运维工程师' 查询备注不为空的员工所有信息 select * from employee where 备注 is not null 查询employee表中前5行的数据
select top 5 * from employee 查询employee表中“姓名”和“身份证号”两列数据,查询结果“姓名”列名称显示为“name”,“身份证号”列名称显示为“idcard” select 姓名 as name , 身份证号 as idcard from employee 查询employee表中所有员工信息,按照基本工资从高到低显示查询结果 select * from employee order by 基本工资 desc 查询employee表中有哪些职务(去除重复的职务) select distinct 职务 from employee 在employee表中列出满足身份证号的左起第三位是0、除CTO以外的,所有员工的姓名、身份证号、职务和基本工资,其中姓名字段显示为name,查询结果按照基本工资的由高到低排列。 select 姓名 as name,身份证号,职务,基本工资 from employee where 身份证号 like '_0%' and 职务!='cto' order by 基本工资 desc 将employee表中所有员工的姓名、身份证号和职务生成一个新表new01 select 姓名,身份证号,职务 into new01 from employee 将employee表中所有基本工资大于等于15000的员工的姓名、职务和出生日期保存到新表new02。(提前先创建表new02)insert into new02(姓名,职务,出生日期)select 姓名,职务,出生日期 from employeewhere 基本工资>=15000
19、将employee表中所有员工的姓名、职务和出生日期,以及新输入2名员工相关信息,一起保存到新表new03。(提前先创建表new03),新输入的2名员工信息如下: '欧阳锋','人事经理','1988-08-08' , '一灯','财务经理','1977-07-07' insert into new01(姓名,职务,出生日期) select '欧阳锋','人事经理','1988-08-08' union select '一灯','财务经理','1977-07-07' union select 姓名,职务,出生日期 from employee 删除employee表中杨过的记录(使用delete语句) delete from employee where 姓名='杨过' 删除employee表中所有记录(使用delete语句) delete from employee
22、删除new01表中所有记录(使用truncate语句) truncate table new01
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |