一:单表查询

CREATE TABLE `Score`(
`s_id` VARCHAR(20),
`c_id` VARCHAR(20),
`s_score` INT(3),
PRIMARY KEY(`s_id`,`c_id`)
); insert into Score values('' , '' , 80);
insert into Score values('' , '' , 90);
insert into Score values('' , '' , 99);
insert into Score values('' , '' , 70);
insert into Score values('' , '' , 60);
insert into Score values('' , '' , 80);
insert into Score values('' , '' , 80);
insert into Score values('' , '' , 80);
insert into Score values('' , '' , 80);
insert into Score values('' , '' , 50);
insert into Score values('' , '' , 30);
insert into Score values('' , '' , 20);
insert into Score values('' , '' , 76);
insert into Score values('' , '' , 87);
insert into Score values('' , '' , 31);
insert into Score values('' , '' , 34);
insert into Score values('' , '' , 89);
insert into Score values('' , '' , 98);

成绩表

CREATE TABLE `Student`(
`s_id` VARCHAR(20),
`s_name` VARCHAR(20) NOT NULL DEFAULT '',
`s_birth` VARCHAR(20) NOT NULL DEFAULT '',
`s_sex` VARCHAR(10) NOT NULL DEFAULT '',
PRIMARY KEY(`s_id`)
); insert into Student values('' , '赵雷' , '1990-01-01' , '男');
insert into Student values('' , '钱电' , '1990-12-21' , '男');
insert into Student values('' , '孙风' , '1990-05-20' , '男');
insert into Student values('' , '李云' , '1990-08-06' , '男');
insert into Student values('' , '周梅' , '1991-12-01' , '女');
insert into Student values('' , '吴兰' , '1992-03-01' , '女');
insert into Student values('' , '郑竹' , '1989-07-01' , '女');
insert into Student values('' , '王菊' , '1990-01-20' , '女');

学生表

1.查询条件

比较

等于
SELECT * FROM score WHERE s_score=80
大于
SELECT * FROM score WHERE s_score>80
小于
SELECT * FROM score WHERE s_score<80
小于等于
SELECT * FROM score WHERE s_score<=80
大于等于
SELECT * FROM score WHERE s_score>=80
不等于
SELECT * FROM score WHERE s_score!=80
不等于
SELECT * FROM score WHERE s_score<>80
不小于
SELECT * FROM score WHERE s_score!<80
不大于
SELECT * FROM score WHERE s_score!>80

范围

在60-80之间的记录
SELECT * FROM score WHERE s_score BETWEEN 60 AND 80
不在60-80之间的记录
SELECT * FROM score WHERE s_score NOT BETWEEN 60 AND 80

in的使用

成绩只要是80的记录
SELECT * FROM score WHERE s_score IN(80)
成绩不是80的其他所有记录
SELECT * FROM score WHERE s_score NOT IN(80)
如果是中文就要用单引号,记得名字要写全不要只写一个云或李
SELECT * FROM student WHERE s_name IN('李云')
姓名不是云的所有记录(因为姓名都是两个字的)
SELECT * FROM student WHERE s_name NOT IN('云')
多组的话可以这样查(成绩是80和60的会被查出来,14表中没有就没有了,sql不会出错的)
SELECT * FROM score WHERE s_score IN(80,60,14)

like的使用

名字中最后一个字是云的记录
SELECT * FROM student WHERE s_name LIKE '%云'
名字中最先一个字是李的记录
SELECT * FROM student WHERE s_name LIKE '李%'
名字中包含一个字是雷的记录
SELECT * FROM student WHERE s_name LIKE '%雷%'
名字中不包含一个字是云的记录
SELECT * FROM student WHERE s_name NOT LIKE '%云%'
名字中类似第二个字是云的且只有两个字的记录
SELECT * FROM student WHERE s_name LIKE '_云'

空值

学生表中名字这个字段是null的记录
SELECT * FROM student WHERE s_name IS NULL
学生表中名字这个字段不是null的记录
SELECT * FROM student WHERE s_name IS NOT NULL

and与or

id大于3且性别是男的
SELECT * FROM student WHERE s_id>3 AND s_sex='男'
要么是id大于3的,要么性别是男,两者符合一个就行,都符合当然也行
SELECT * FROM student WHERE s_id>3 OR s_sex='男'

order by

通常是用做对查询结果按照一个或多个属性进行升序、降序

按照成绩(s_score)升序,成绩相同的按照id(s_id)升序
SELECT * FROM score ORDER BY s_score,s_id ASC 降序是 DESC

distinct   与  group by 两者都有去重的能力

去重后的成绩
SELECT DISTINCT s_score FROM score 分组(分组后是去重的)后的成绩与其对应的id
SELECT s_score,s_id FROM score GROUP BY s_score

结论:distinct只适用于查询不重复记录的条数,例如select coun(distinct s_score) from score  代表不重复的成绩记录有多少条

SELECT DISTINCT s_score,s_id FROM score  这样会变成成绩与id都相同的才会去重
SELECT s_id,DISTINCT s_score FROM score  而这样mysql会报错

只有group by适合查询一整条不重复记录的数据

聚集函数

count  统计条数    select count(*) from score;select count(distinct s_score) from score;   distinct不写的话默认是all

sum   计算某一列的总和(必须是数值型)select sum(s_score) from score

avg   计算某一列的平均值(必须是数值型)select avg(s_score) from score

max  求某一列的最大值   select max(s_score) from score

min   求某一列的最小值   select min(s_score) from score

值得一提的是,计算所有老师的平均工资可以这样  select avg(salary) from salary

如果要计算每个院系的老师的平均工资就要分组 select dept_name,avg(salary) from salary group by dept_name

也就是说(假设) ,把100个老师(共五个院系,每个院系20个老师)分为五组,每组20人,对每组的20人计算平均值,以不同院系区分

如果,select dept_name,id,avg(salary) from salary group by dept_name   中间加个id这样是不可以的,因为id没有被分组除非

select dept_name,id,avg(salary) from salary group by dept_name,id      这样才行

另外group by后面可以接having语句,having可以用聚集函数,where不可以

区别在于,having是分组之后才生效的,where是未分组时生效的

sql语句-单表查询的更多相关文章

  1. 数据库——SQL数据单表查询

    数据查询   语句格式 SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表或视图名>[,<表或视图名&g ...

  2. mysql——查询语句——单表查询——(概念)

    一.基本查询语句 select的基本语法格式如下: select 属性列表 from 表名和视图列表 [ where 条件表达式1 ] [ group by 属性名1 [ having 条件表达式2 ...

  3. oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by

    select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...

  4. Mysql 语句单表查询

    一基本查询 -- 创建商品表 CREATE TABLE products( pid INT PRIMARY KEY AUTO_INCREMENT, pname VARCHAR(20), price D ...

  5. Mysql | 总结 | 常用的查询语句(单表查询)

    1. 查询单表全部 select* from 数据表名; 2. 查询单表中一个或者多个字段 select 字段1,字段2 from 数据表名; 3. 查询单表中的指定信息 select* from 数 ...

  6. SQL语句联表查询

    Natural join:字段名和数据类型相同字段进行等值连接: inner join:与join相同,把符合条件的元组选出来,创建视图时用的即是inner join: left join:左表全选出 ...

  7. mysql——查询语句——单表查询——(示例)

    一.基本查询语句 select的基本语法格式如下: select 属性列表 from 表名和视图列表 [ where 条件表达式1 ] [ group by 属性名1 [ having 条件表达式2 ...

  8. 巨蟒python全栈开发django6: FBV&CBV&&单表查询的其他方法

    练习CBV用法 截图中的action="/cbv/",应该是这样 上边红图,说明mysql有问题,需要重启一下 返回,输入的内容 @wrapper==>cbv=wrapper ...

  9. 数据库常用SQL语句(一):常用的数据库、表操作及单表查询语句

    以MySql数据库为例进行说明 1.数据库操作语句 2.表的操作语句 3.表中的字段操作语句 4.MYSQL支持的完整性约束 数据库管理系统提供了一致机制来检查数据库表中的数据是否满足规定的条件,以保 ...

随机推荐

  1. MySQL导出数据字典

    平时用mysql比较多,有时候需要详细的数据库设计表结构和数据字典,但又没有最新的文档,这个时候直接从数据导出是最新最全的.在MySQL数据库中利用information_schema库中的COLUM ...

  2. 使用gitbook plugin

    使用gitbook plugin. { "title": "xx doc", "author": "morya", &q ...

  3. VMware Workstation 11 搭建windows server 2012 之sql server 2012集群常见问题整理

    1.windows server 2012内置支持iSCSI发起程序无需额外安装,iSCSI Software Target 可作为“文件和存储服务”角色下的内置功能使用 2.拷贝虚拟机的文件加入域时 ...

  4. C# WinForm 实现窗体淡入淡出

    有时候我们需要给窗体的打开和关闭添加点动画效果.最近正好有这类需求,于是研究了下窗体的淡入淡出,很简单就实现了,这里发表下成果,以供朋友们使用. 在Windows,有一个API,可以设置窗体的可见度, ...

  5. Android 开发 Handler的基本使用

    转载请注明出处:http://blog.csdn.net/vnanyesheshou/article/details/72677227 深入理解Handler.Looper.Messagequeue ...

  6. rpc调用过程

    在openstack中,各个组件之间的调用遵循RESTful风格,而组件内部各服务之间的相互调用采用rpc远程调用,比如nova-conductor和nova-compute rpc原理: 首先了解什 ...

  7. markdown工具对比: 作业部落 vs Typora

    2者都挺优秀的,但是在具体使用时还是遇到一些问题: 功能 作业部落 Typora 图片调整大小 × √ 在线同步,易于分享 √ × pdf对emoji的支持 × √ pdf的text view: Vi ...

  8. C# 对Excel操作与分析

    今天帮现在饿公司写个工具,要动态读excel上的ip地址与端口号,来更改IE的代理地址,由于好久没写Excel的操作了,只能查阅以前的项目,总结一下: 首先我们要引用我们的com接口的excelMic ...

  9. leetcode39

    public class Solution { List<IList<int>> list = new List<IList<int>>();//全部记 ...

  10. ES6原生Class

    es5 之前定义构造函数的方法 // 先定义一个函数,强行叫它构造函数,大写的P也不是必须的,只是约定俗成 function Point(x, y) { this.x = x; // 构造函数的属性都 ...