数据库原理-数据单表查询

格式:select [all|distinct] <目标列表达式>,[目标列]...

from <表名或视图名>[,<表名或视图名>|(seslect 语句)[as]<别名>]

[where <条件名>]

[group by<列名1>[having <条件表达式>]]

[order by<列名1>[asc|desc]]

单表查询

选择表中的若干列

1.查询全部列

select * from student

2.查询经过计算的列

select 2012-age from student  // 2012-age不是列名,而是一个表达式,计算学生的出生年份

选择表中的若干元组

1.取消取值重复的行

select distinct sno from sc //去掉表中重复的行必须制定短语distinct,如果没有指定,缺省值为all

2.查询满足条件的元组

    • 比较大小

select sname age from student where age<20

    • 确定范围

查找年龄在20-23岁(包括20和23岁)之间的学生的姓名,系别

select sname,sdept  from student where age between 20 and 23

查找年龄不在20-23岁(包括20和23岁)之间的学生的姓名,系别

select sname,sdept  from student where age not between 20 and 23

    • 确定集合

select sname,sex from student where sdept in(‘is‘,‘math‘)//谓词in 用来查找属性值属于指定集

select sname,sex from student where sdept not in(‘is‘,‘math‘)//谓词in 用来查找属性值属于指定集

    • 字符匹配

格式:like ‘匹配串‘

匹配串既可以是一个完整的字符串,也可以含有通配符%和_

%(百分号)代表任意长度(可以为0)的字符串

_(下横线)代表任意单个字符

查询学号为001的学生的信息

select * from student where sno=‘001‘  //匹配串中不含通配符时,可以用=代替like,用!=或>,<代替not like

查找所有姓刘的学生的信息

select * from student where sname like ‘刘%‘

查询姓张且全名为3个汉字的学生的姓名

select sname from student where sname like ‘张_ _ _ _‘ //一个汉字占两个字符的位置

    • 空值查询

select sno,cno from sc where grade is null  //注意,这里的is不能用等号=代替

    • 多重条件查询

and 和 or可以连结多个查询条件,and的优先级高于or,用户可以用括号改变优先级

查询计算机系年龄在20岁以下的学生的姓名

select sname from student where sdept=‘cs‘ and age<20

order by

select sno,grade from sc where cno=‘3‘ order by grade desc

对于空值,升序排列,含空值的元组将最后显示;降序排列,含空值的元组将最先显示

聚集函数

count distinct/all *       计算元组个数

count distinct/all 列名    统计一列中值的个数

sum   distinct/all 列名    计算一列值的总和,此列必须是数值型

avg   distinct/all 列名    计算一列值的平均值,此列必须是数值型

max   distinct/all 列名    计算一列值的最大值

min   distinct/all 列名    计算一列值的最小值

如果指定distinct,计算时取消重复值,默认为all,表示不取消重复值

查询学生总人数

select count * from student

查询选修了课程的学生人数

select count(distinct sno) from sc

计算1号课程的学生平均成绩

select avg(grade) from sc where cno=‘1‘

查询选修1号课程的学生最高分数

select max(grade) from sc where cno=‘1‘

group by 字句

求各个课程号及相应的选课人数

select cno,count(sno)from sc group by cno

查询选修了3门以上课程的学生学号

select sno from sc group by sno having count(*)>3   //having短语指定选择组的条件,只有满足条件的组才会被选出来

where子句和having短语的区别在于作用对象的不同。where子句作用于基本表或视图,从中选择满足条件的元组。having短语作用于组,从中选择满足条件的组。

 
时间: 2024-10-14 17:56:52

数据库原理-数据单表查询的相关文章

数据库原理-数据多表查询

连接查询 数据库中涉及两个表之间的数据查询通常使用连接的方法实现.连接分为内连接和外连接. 内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件. 外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行.包括左外连接.右外连接和全外连接. 左外连接:左边表数据行全部保留,右边表保留符合连接条件的行 右外连接:右边表数据行全部保留,左边表保留符合连接条件的行 全外连接:左外连接 union 右外连接 内连接,即最常见的等值连接,例: SELECT * FROM

04 数据库入门学习-单表查询、多表查询、子查询

1.复制表 #创建了一张测试表 mysql>create table test (id int primary key auto_increment,name char(10)); #显示原表结构 mysql> desc test; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+---

MySQL数据库篇之单表查询

主要内容: 一.单表查询的语法 二.关键字的执行优先级 三.简单查询 四.where约束 五.分组查询 group by 六.having过滤 七.查询排序 order by 八.限制查询的记录数 limit 九.使用正则表达式查询 1?? 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 2??  关键字的执行优先级 重点中的重点:关键字的执行优先级(从上至

mysql 数据库 IV(单表查询)

1.今日内容 单表查询语法 select distinct 字段1,字段2... from 表名 where 条件 group by 字段 having 筛选 order by 字段 limit 限制条数 关键字执行的优先级 from # 找到表 where # 拿着where指定的约束条件,去文件/表中取出一条条记录 group by # 将取出来的数据进行group by,如果没有group by,则整体做为一组 select distinct #执行select-去重 having #将分

数据库:数据操作-单表查询

一 单表查询的语法 select 字段1,字段2....from 表名 where 条件 group by field having 筛选 order by field limit 限制条数 二 关键字的执行优先级(重点) 关键字的执行优先级 from where group by having select distinct order by limit 1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的一条条记录进行分组group by,如果没有

数据库学习笔记系列(4)——单表查询_1

单表查询就是查询的范围只是一个table,我们对其中的某一个字段,或者多个字段进行查询返回,查询的时候还可以满足一定的条件. 下面我们就按照实际的问题,来学习一下单表查询. 首先,原始的是一个student表,其中有如下几个字段: 学号:snum 姓名:sname 年龄:sage 性别:ssex 院系:department 课程:course 分数:score create table student(snum int(5), sname varchar(10), sage int(5), ss

oracle数据库之单表查询

作为一合格的测试人员对数据库的单表查询.多表查询.分组查询.子查询等等这些基本查询方法还是要会的.不然到企业中,容易被一些人鄙视,或者说如果数据库学不好,表查不明白,那么对自己能力来说也是一种侮辱,因为你可以证明自己,你是可以的,尤其是你在面试的时候面对面试官的给你出的一道sql语句题目,你能马上用你的套路把这道题做出了,那么恭喜你过了第一个小关卡.ok,我们今天学习一下数据库中的第一个查询,也是最简单,容易入门的查看----单表查询. 我们在上一篇中创建了一个classinfo和student

数据库的增删改、单表查询

数据库的增删改 插入数据 INSERT 更新数据 UPDATE 删除数据 DELETE 插入数据 INSERT 1.插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3...字段n)VALUES(值1,值2,值3...值n); 语法二: INSERT INTO 表名 VALUES (值1,值2,值3-值n); 2. 指定字段插入数据 语法: INSERT INTO 表名(字段1,字段2,字段3-) VALUES (值1,值2,值3-); 3. 插入多条记录 语

(七)MySQL数据操作DQL:单表查询

(1)单表查询 1)环境准备 mysql> CREATE TABLE company.employee5( id int primary key AUTO_INCREMENT not null, name varchar(30) not null, sex enum('male','female') default 'male' not null, hire_date date not null, post varchar(50) not null, job_description varcha