一. 数据库查询—查询(SELECT)

单表查询

多表联合查询

二. 查询—单表查询

查询特定字段:

select <字段1,字段2,...> from <表名>;

示例:查询学生表里所有学生的id和名字

select id, name from student;

查询所有字段:

select * from <表名>;

示例:查询学生表的所有学生信息

select * from student;

按条件进行查询:

select ... from <表名> where 表达式A and 表达式B and ...;

示例:查询id为1401001的学生信息

select * from student where id=1401001;

示例:查询学生表里class_id为1401而且sex为女的学生

select * from student where class_id=1401 and sex='女';

对结果集进行排序:

select ... from <表名> where ... order by 字段A asc(desc);

select ... from <表名> where ... order by 字段A asc(desc), 字段B asc(desc);

asc:升序

desc:降序

示例:查询学生表里class_id为1401而sex为女的学生并按学生编号升序(降序)排列

select * from student where class_id=1401 and sex='女' order by id asc;

select * from student where class_id=1401 and sex='女' order by id desc;

课堂练习

1. 查询学生表(student)学生编号id为1403001的学生信息

;

2. 查询分数表(score)的学生编号为(student_id)为1403001的分数成绩

;

三. 查询—多表联合查询

问题一:

对于不同类型的信息该怎么存储呢?是放一个表呢,还是不同类型数据放不同表

放在一个表的缺点:思考(仓库里的货物是杂乱的堆在一起好呢,还是分类存储好一些?哪个更利于我们去找一件货物?)

1. 字段过多不好维护

2. 表数据庞大

3. 数据不好维护

4. 数据冗余,重复数据多

解决方案:

不同类型数据放不同表,学生信息放在student表,成绩放在score表

问题二:

既然不同的数据放在了不同的表,比如:学生的信息以及学生的成绩分别放在了student表和score表,那如果要查询某个学生的信息以及他的成绩,那sql要怎么写?

解决方案:

设计表的时候两个表之间维持一个关联即可

举例说明:

去超市买东西时将东西存在储物柜,离开时,取东西的时候就是拿个票据去找柜子,然后再拿到柜子里的东西,也就是说找柜子拿里面的东西是需要根据一个票据信息的。那既然这样,咱们成绩表如果保存了这样一个票据信息,比如说,保存了学生的id,那这样就建立了一个关联关系。到时候我们要查询一个学生的姓名,性别,以及他的成绩,那我们就可以先根据student表里找到他的姓名和性别,然后再根据这个id去score表找到他的成绩

关联查询的语法:

select t1.字段A, t1.字段B, t2.字段C, t2.字段D, t2.字段E...from <表1名字> t1, <表2名字> t2,...,<表n的名字> tn where 关联条件

示例:查询id为1403001的同学的名字和性别以及她的各科成绩

分析:

1. 涉及表:学生表(student)、成绩表(score)

2. 查询的字段:学生表(name, sex),成绩表(score)

3. 关联关系:student.id = score.student_id

4. 过滤条件:student.id=1403001

select t1.name, t1.sex, t2.score from student t1, score t2 where t1.id=t2.student_id and t1.id=1403001;

;

拓展:

select t1.name, t1.sex, t3.name, t2.score from student t1, score t2, course t3 where t1.id=t2.student_id and t2.course_id=t3.id and t1.id=1403001;

;

我们要进行查询的表之间的关系

1. 学生表(student)跟班级表(class)关联,关联字段(student.class_id=class.id)

2. 班级表(class)跟年级表(grade)关联,关联字段(class.grade_id=grade.id)

3. 学生表(student)跟成绩表(score)关联,关联字段(score.student_id=student.id)

4. 成绩表跟课程表关联,关联字段(score.course_id=course.id)

四. 课堂练习

1. 查询出"高一年级"下面的所有班级的信息;

select t2.* from grade t1, class t2 where t1.id=t2.grade_id and t1.name='高一年级';

2. 查询出"高一年级"下面的所有班级里面的学生信息(学生的姓名,学号,性别,住址);

select t3.name,t3.id,t3.sex,t3.address from grade t1,class t2,student t3 where t1.id=t2.grade_id and t2.id=t3.class_id and t1.name='高一年级';

mysql数据库(二):查询(SELECT)的更多相关文章

  1. Mysql数据库使用量查询及授权

    Mysql数据库使用量查询及授权 使用量查询 查看实例下每个库的大小 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2 ...

  2. MySQL数据库的查询缓冲机制

    MySQL数据库的查询缓冲机制 2011-08-10 11:07 佚名 火魔网 字号:T | T 使用查询缓冲机制,可以极大地提高MySQL数据库查询的效率,节省查询所用的时间.那么查询缓冲机制是怎样 ...

  3. MySql数据库慢查询

    一.什么是数据库慢查询? 数据库慢查询,就是查询时间超过了我们设定的时间的语句. 可以查看设定的时间: 默认的设定时间是10秒.也可以自己根据实际项目设定. set long_query_time=0 ...

  4. MySQL 数据库登录查询

    1. 进入到bin目录:   键入cd..,一直到出现C:\ 为止   然后cd bin所在路径:   如: C:\cd C:\Program Files\MySQL\MySQL Server 5.7 ...

  5. MYSQL 数据库高频查询语句整理

    一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...

  6. 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)

    一.初识MySQL数据库 ###<1>数据库概述     1. 数据库         长期存储在计算机内的,由组织的可共享的数据集合         存储数据的仓库         文件 ...

  7. MySQL 数据库 分页查询

    在使用MySQL 进行数据库分页查询的时候最主要是使用LIMIT子句进行查询: 首先来看一下LIMIT: LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两 ...

  8. MYSQL数据库学习----查询

    查询语句是MYSQL数据库中用到的最多的语句. 查询语句分为几种 单表查询 集合函数查询 连接查询 子查询 合并查询 正则表达式查询 一:单表查询 SELECT 属性 FROM 表名 [WHERE 查 ...

  9. mysql 数据库 添加查询 修改 删除

    cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)   一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql  或者通过一键集成工具 打开mysql命令行   ...

随机推荐

  1. iOS核心动画详解(CABasicAnimation)

    前言 上一篇已经介绍了核心动画在UI渲染中的位置和基本概念,但是没有具体介绍CAAnimation子类的用法,本文将介绍CABasicAnimation及其子类CASpringAnimation的用法 ...

  2. Spring 的IOC容器之XML方式

    1. Spring 入门 1.1 概述 Spring 是一个分层的 JavaEE 轻量级开源框架; Spring 的核心是控制反转(IOC)和面向切面(AOP); 1.2 特点 方便解耦,简化开发; ...

  3. 贪玩ML系列之CIFAR-10调参

    调参方法:网格调参 tf.layers.conv2d()中的padding参数 取值“same”,表示当filter移出边界时,给空位补0继续计算.该方法能够更多的保留图像边缘信息.当图片较小(如CI ...

  4. 我的Android进阶之旅------>Android自定义View实现带数字的进度条(NumberProgressBar)

    今天在Github上面看到一个来自于 daimajia所写的关于Android自定义View实现带数字的进度条(NumberProgressBar)的精彩案例,在这里分享给大家一起来学习学习!同时感谢 ...

  5. 同一TextView上内容的不同显示(最新)-SpannableString

    上次发了一篇同一TextView内容的不同显示这篇文章. 有关颜色的不同显示,我使用了最简单可是也最复杂的方法.忘记使用SpannableString,现又一次发一下,大家參考下. TextView组 ...

  6. mysql 内置功能 函数 date_format函数

    创建数据库db12 create database db12 charset=utf8; use db12; 准备表和记录 CREATE TABLE blog ( id INT PRIMARY KEY ...

  7. pc端用微信扫一扫实现微信第三方登陆

    官方文档链接 第一步:获取AppID  AppSecret (微信开发平台申请PC端微信登陆)   第二步:生成扫描二维码,获取code https://open.weixin.qq.com/conn ...

  8. oradebug工具使用(转载)

    在之前的HangAnalyze 中有使用oradebug命令,在这篇文章里,我们主要是重点看一下这个oradebug命令: Oracle HANGANALYZE 功能诊断 DB hanging htt ...

  9. Sqrt(x)

    这题没多大技巧性,只是牛顿迭代法多用于数值计算,这里出现有些意外.维基上有方法说明:http://zh.wikipedia.org/wiki/牛顿法 int sqrt(int x) { if (x = ...

  10. go——流程控制

    Go在流程控制方面的特点如下: 没有do和while循环,只有一个更广义的for语句. switch语句灵活多变,还可以用于类型判断. if语句和switch语句都可以包含一条初始化子语句. brea ...