一:单表查询

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. cookie和session的关联关系

  2. Windows下好用的git客户端--GitExtentions

    用git: https://git-scm.com/downloads GitExtentions: https://sourceforge.net/projects/gitextensions/ B ...

  3. CentOS7版本区别和下载

    CentOS 7提供了三种ISO镜像文件的下载: DVD ISO 标准安装版,一般下载这个就可以了(推荐) Everything ISO 对完整版安装盘的软件进行补充,集成所有软件.(包含centos ...

  4. sas data infile 语句选项

    1)FIRSTOBS=N,从第N行开始读取数据2)OBS=M,到第M行结束数据读取3)MISSOVER:当一行数据读完的时候,不要转到下一行,而是为其余的变量分配缺失值4)TRUNCOVER:变量读取 ...

  5. ARM920T的Cache

    转载自:http://www.eefocus.com/mcu-dsp/242034 ARM920T有16K的数据Cache和16K的指令Cache,这两个Cache是基本相同的,数据Cache多了一些 ...

  6. vuex状态管理-数据改变不刷新

    困惑: 在页面初始化的时候,我提交到vuex状态管理,然后在获取的时候获取不到,我找到了出错的地点,并进行了修改,然后可以获取到状态 但是不知道原因? 定义了如下的state const state ...

  7. Python的set集合

    set集合也用{}表示,set中的元素是不重复的.无序的,且它里面的元素必须是可hash的(int,str,tuple,bool),set是可变的. 1.使用set去重 m = [1, '] s = ...

  8. window.open() 打开的子页面 往主页面传参问题

    <!--主页面的代码--><!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  9. Vim 命令、操作、快捷键

    打开单个文件:vim file 同时打开多个文件:vim file1 file2 file3 ... 在vim窗口中打开一个新文件 :  :open file 在新窗口中打开文件: :split fi ...

  10. Linux Shell 简介

    什么是 Shell Shell 是用户和 Linux 内核之间的接口程序,当从 Shell 或其他程序向 Linux 传递命令时,内核会做出相应的反应: Shell 是一个命令语言解释器,它拥有自己内 ...