sql语句学习

针对一个表练习

1.建表

create table student(name Char(20),curriculum Char(20),score Char(20));

插入数据:

 INSERT INTO student (name,curriculum,score) VALUES('王五','数学','100');

mysql> select * from student;

+--------+------------+-------+

| name   | curriculum | score |

+--------+------------+-------+

| 张三   | 语文       | 81    |

| 张三   | 数学       | 75    |

| 李四   | 语文       | 76    |

| 李四   | 数学       | 90    |

| 王五   | 语文       | 81    |

| 王五   | 数学       | 100   |

+--------+------------+-------+

2.题目开始喽

(1)用一条SQL语句 查询出每门课都大于80分的学生姓名 ,注意理解group by

答案:


select distinct name from student where name not in (select distinct name from student where score<80);

+--------+

| name   |

+--------+

| 王五   |

+--------+

select distinct * from student where name not in (select distinct name from student where score<80);

+--------+------------+-------+

| name   | curriculum | score |

+--------+------------+-------+

| 王五   | 语文       | 81    |

| 王五   | 数学       | 100   |

+--------+------------+-------+

select distinct * from student where name not in (select distinct name from student where score<80) group by name;

+--------+------------+-------+

| name   | curriculum | score |

+--------+------------+-------+

| 王五   | 语文       | 81    |

+--------+------------+-------+

(2)形成如下表格

+--------+--------+--------+

| name   | 语文   | 数学   |

+--------+--------+--------+

| 张三   | 81     | 75     |

| 李四   | 76     | 90     |

| 王五   | 81     | 100    |

+--------+--------+--------+

答案:

select name,(select score from student s where curriculum='语文' and s.name=student.name) as 语文,
(select score from student s where curriculum='数学' and s.name=student.name) as 数学 from student group by name; 

(3)显示每一科是否及格,利用case when

+--------+------------+-------+-----------+

| name   | curriculum | score | pass      |

+--------+------------+-------+-----------+

| 张三   | 语文       | 81    | 及格      |

| 张三   | 数学       | 75    | 不及格    |

| 李四   | 语文       | 76    | 不及格    |

| 李四   | 数学       | 90    | 及格      |

| 王五   | 语文       | 81    | 及格      |

| 王五   | 数学       | 100   | 及格      |

+--------+------------+-------+-----------+

答案:

select name, curriculum,score,(CASE WHEN student.score>=80 THEN '及格' ELSE '不及格' END) as pass  from student ;

(4)按分数排序order by

+--------+------------+-------+

| name   | curriculum | score |

+--------+------------+-------+

| 王五   | 数学       | 100   |

| 李四   | 数学       | 90    |

| 张三   | 语文       | 81    |

| 王五   | 语文       | 81    |

| 李四   | 语文       | 76    |

| 张三   | 数学       | 75    |

+--------+------------+-------+

答案:(+0因为是char转int)

select * from student order by score+0 desc ;

/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/

时间: 2024-10-25 19:52:11

sql语句学习的相关文章

SQL语句学习_数据库其它

(高手就不要笑话了^_^). 好了,其他的不说现在就开始: select 子句主要决定了从表中取出的列名,列数以及列的显示顺序等信息,"*"表示查询所有的列,有关select的用法应该结合其它子句的用法. 1.from 子句: ①from子句用于指定被查询的表,试图或快照. ②如果指定多个实体,用逗号讲它们分割.为了查询方便,特别是进行自连接查询时,可以给表起别名.(这里我要说很多刚开始使用sql的朋友开始的时候总觉得这个很简单,没有什么可学的,可是到后来在做一些复杂的sql的时候总是

常用SQL语句学习解释

(1) 数据定义语言(DDL)数据定义语言用来定义数据库的各级模式.常用关键字有:Create(建立数据表).Alter(更改数据表).Drop(删除数据表).建立数据表CREATE TABLE table_name( column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY],column2 DATATYPE [NOT NULL],...)说明:上面的DATATYPE 指的是字段的类型,NUT NULL 指是否为空,PRIMARY KEY 指本表的主键

SQL语句学习总结

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.归并重复项 原始mytable:  +------+-------+| user | brand |+------+-------+| aa   | 9     || aa   | 9     || bb   | 4     || bb   | 3     || cc   | 9     |+------+-------+ 输出重复的次数: select user,brand, count(*) from

Sql 语句学习指南第1/2页_MsSql

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...and:select * from students where age between 20

非常不错的SQL语句学习手册实例版第1/3页

表操作  例 1  对于表的教学管理数据库中的表 STUDENTS ,可以定义如下:    复制代码 代码如下:   Create  TABLE  STUDENTS (SNO  NUMERIC (6, 0) NOT NULL                                                    SNAME   CHAR (8) NOT NULL                                                    AGE   NUM

SQL语句集锦

--语 句                                功 能--数据操作SELECT      --从数据库表中检索数据行和列INSERT      --向数据库表添加新数据行DELETE      --从数据库表中删除数据行UPDATE      --更新数据库表中的数据--数据定义CREATE TABLE    --创建一个数据库表DROP TABLE     --从数据库中删除表ALTER TABLE     --修改数据库表结构CREATE VIEW     --创建

一些工作和学习中经常用到的SQL语句

一些常用的SQL语句: 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY KEY , [字段1] nVarChar(50) default '默认值' null , [字段2] ntext null , [字段3] datetime, [字段4] money null , [字段5] int default 0, [字段6] Decimal (12,4) default 0, [字段7] image null , ) 新建表

学习asp.net之SQL语句查询效率和安全性

看一看这段代码,让我们来看看主要存在的问题 以下为引用的内容: //设置SQL语句 insertstr="insert into userinfo(name,password,email,phone,mobile,post,address) VALUES(``"; insertstr += this._name.Trim() ;+ "``,``"; insertstr += this._password.Trim() +"``,``"; inse

学习ASP之SQL语句查询效率和安全性

sql|安全|安全性|语句 看一看这段代码,让我们来看看主要存在的问题 //设置SQL语句 insertstr="insert into userinfo(name,password,email,phone,mobile,post,address) VALUES(``"; insertstr += this._name.Trim() ;+ "``,``"; insertstr += this._password.Trim() +"``,``";