mysql数据库(二):查询(SELECT)
一. 数据库查询—查询(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)的更多相关文章
- Mysql数据库使用量查询及授权
Mysql数据库使用量查询及授权 使用量查询 查看实例下每个库的大小 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2 ...
- MySQL数据库的查询缓冲机制
MySQL数据库的查询缓冲机制 2011-08-10 11:07 佚名 火魔网 字号:T | T 使用查询缓冲机制,可以极大地提高MySQL数据库查询的效率,节省查询所用的时间.那么查询缓冲机制是怎样 ...
- MySql数据库慢查询
一.什么是数据库慢查询? 数据库慢查询,就是查询时间超过了我们设定的时间的语句. 可以查看设定的时间: 默认的设定时间是10秒.也可以自己根据实际项目设定. set long_query_time=0 ...
- MySQL 数据库登录查询
1. 进入到bin目录: 键入cd..,一直到出现C:\ 为止 然后cd bin所在路径: 如: C:\cd C:\Program Files\MySQL\MySQL Server 5.7 ...
- MYSQL 数据库高频查询语句整理
一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...
- 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)
一.初识MySQL数据库 ###<1>数据库概述 1. 数据库 长期存储在计算机内的,由组织的可共享的数据集合 存储数据的仓库 文件 ...
- MySQL 数据库 分页查询
在使用MySQL 进行数据库分页查询的时候最主要是使用LIMIT子句进行查询: 首先来看一下LIMIT: LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两 ...
- MYSQL数据库学习----查询
查询语句是MYSQL数据库中用到的最多的语句. 查询语句分为几种 单表查询 集合函数查询 连接查询 子查询 合并查询 正则表达式查询 一:单表查询 SELECT 属性 FROM 表名 [WHERE 查 ...
- mysql 数据库 添加查询 修改 删除
cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据) 一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql 或者通过一键集成工具 打开mysql命令行 ...
随机推荐
- responsive and functional programming RxJava
RxJava由于使用了多个回调,一开始理解起来可能有点难度,其实多看几遍也就明白了,它的招式套路都是一样的: 首先就是创建Observable,创建Observable有很多种方式,这里使用了Obse ...
- java 链表常见题目
如何判断单链表是否存在环 方法一.穷举遍历方法一:首先从头节点开始,依次遍历单链表的每一个节点.每遍历到一个新节点,就从头节点重新遍历新节点之前的所有节点,用新节点ID和此节点之前所有节点ID依次作比 ...
- 转!!mysql 查询条件不区分大小写问题
做用户登录模块时,输入用户名(大/小写)和密码 ,mysql都能查出来.-- mysql查询不区分大小写. 转自 http://blog.csdn.net/qishuo_java/article/de ...
- tpot蜜罐平台搭建
iso安装:https://github.com/dtag-dev-sec/tpotce autoinstaller安装:https://github.com/dtag-dev-sec/tpotce ...
- C++ 常见字符处理 收录
1.string字符串删除 字符串中 指定字符 std::string& HTTPRequestHandlerImpl::replace_all_distinct(std::string&am ...
- 思考在伟大的互联网世界中,我是谁?——By Me in 2016
互联网伟大在哪里? 互联网的发明是不是伟大的,这个问题就如同这个世界上许许多多的问题一样,很大程度上取决于人们不同的经历.不同的见识,乃至不同的信念.不同的人生态度. 摘录网上的一段表述:“互联网(产 ...
- smarty内置函数
1.{append} 追加 2.{assign} 赋值 3.{block} 块 4.{call} 调用 5.{capture}捕获 6.{config_load}用来从配置文件中加载config变 ...
- GIT学习笔记(3):分支管理
GIT学习笔记(3):分支管理 何谓分支 GIT是如何存储数据的 GIT不是存储文件差异或者变化量,而是一系列文件的快照.在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容 ...
- python3 requests模块
一.Requests用法: 1.发送请求: 1).请求类型:req_obj = requests.get("https://www.baidu.com")requests支持多种请 ...
- OpenOCD SWD调试stm32f0
参考:http://www.stmcu.org.cn/module/forum/thread-610998-1-2.html