MySql查询功能梳理
CREATE DATABASE CristinMysql
Create table employee(
eId int(9) not null auto_increment,
eName varchar(8) charset utf8 not null,
eComeDate date not null,
eGender enum('Male','Female','Uncertaion') default null,
primary key (eId)
) engine = InnoDB auto_increment = 20170001 default charset = utf8mb4;
--auto_increment:主键自动增加编号;
--engine = InnoDB 支持事务查询,engine = ISAM 执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错;
--utf8与utf8mb4的区别:utf8只支持3个字节,utf8mb4可支持4个字节;
insert into employee values(null,'张三','2015-01-01','Male'),(null,'李四','2015-01-01','Male'),(null,'王五','2014-01-01','Male'),(null,'白凤九','2016-01-01','Male'),(null,'白凤八','2017-01-01','Male'),(null,'张三丰','2015-06-01','Male')
--【简单查询】
select * from employee;
--where【精确查询】
select * from employee where eName = '张';
--like % _【模糊查询,%与_区别:%表示模糊位数,_表示第几位模糊】
select * from employee where eName like '张%';
select * from employee where eName like '张_';
--between and < > <>【区间查询,between and 从哪里到哪里;< > 逻辑区间;<>表示不等于】
select * from employee where eComeDate between 20150101 and 20170101;
select * from employee where eComeDate >= 20160101;
--order by limit【排序规则,默认升序排列,limit表示取几个】
select * from employee where eComeDate >= 20150101 order by eComeDate desc limit 3;
-- and or【和与或】
select * from employee where eComeDate >= 20150101 and eName like '白%';
select * from employee where eComeDate <20150101 or eName like '白%';
-- group by regexp【group by分组查询,regexp选择性查询】
select eGender,count(eId) from employee group by eGender;
select * from employee where eName regexp '张|白';
--【查询函数】
select count(eId) from employee;//集合
select avg(eComeDate) from employee;//平均
select max(eComeDate) from employee;//最大
select min(eComeDate) from employee;//最小
--date【日期查询】
select curdate();-- 获取数据库服务器当前时间
select date_sub(curdate(),interval 1 year);-- DATE_SUB() 函数从日期减去指定的时间间隔,curdate() 参数是合法的日期表达式。interval 1 year 参数是您希望添加的时间间隔。
select * from employee where eComeDate < date_sub(curdate(), interval 1 year);
--disint【不同值】
select distinct(eGender) from employee; --返回唯一不同的值
--【连接查询】
create table company(
id int(3) not null auto_increment,
cName varchar(8) charset utf8mb4 not null,
cEId int (9) not null,
primary key(id)
)engine = InnoDB default charset = utf8;
show tables;
insert into company values (null,'张三','20170001'),(null,'梁宽','20150101'),(null,'白凤九','20170004'),(null,'梁窄','201570001');
select * from company;
-- 查询employee 和 company两个表中cEId都有的数据
-- 子查询
select * from company where cEId in (select eId from employee);
-- 连接查询(四种:交叉查询、内查询、左连接、右连接)逻辑:形成一个虚拟表,将多表查询出来之后的连查数据放在里面
-- 交叉查询
select * from company c , employee e where e.eId = c.cEId; -- 隐式的交叉查询,左边表和右边表相同记录的内容,显示出来
select * from company c , employee e where e.eId <> c.cEId; -- 不等于交叉查询,左边表乘以右边表再把相同的记录去掉,然后展示出来
select * from company c cross join employee e where e.eId = c.cEId; -- 隐式的交叉查询,左边表和右边表相同记录的内容,显示出来
-- 【内链接】
select * from company c inner join employee e where e.eId = c.cEId; -- 内链接
select * from company c join employee e where e.eId = c.cEId; -- 默认的内链接
-- 左连接,意义:左表中的数据全部查出来,如果与右表中没有匹配的就用null表示
select * from company c left join employee e on e.eId = c.cEId; -- 写法1
select * from company c left outer join employee e on e.eId = c.cEId; -- 写法2
-- 右连接,意义:右表中的数据全部查出来,如果与左表中没有匹配的就用null表示
select * from company c right join employee e on e.eId = c.cEId;
MySql查询功能梳理的更多相关文章
- 复习MySQL④查询功能、连接方式、联合查询
用select语句查询: select〈目标列组〉 from〈数据源〉 [where〈元组选择条件〉] [group by〈分列组〉[having 〈组选择条件〉]] [order by〈排序列1〉〈 ...
- MySQL 5.5开启慢查询功能
vim /etc/my.cnf [mysqld] slow-query-log = on # 开启慢查询功能 slow_query_log_file = /usr/local/mysql/data/s ...
- Vc数据库编程基础MySql数据库的表查询功能
Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...
- Linux 实例如何开启 MySQL 慢查询功能
运行 MySQL 时,查询速度比较慢的语句对数据库的影响非常大,这些慢语句大多是写的不够合理或者大数据环境下多表并发查询造成的.MySQL 自带慢查询功能,能记录查询时间超过参数 long_query ...
- MySQL 基础知识梳理
MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...
- 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段
创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...
- MySQL查询缓存
MySQL查询缓存 用于保存MySQL查询语句返回的完整结果,被命中时,MySQL会立即返回结果,省去解析.优化和执行等阶段. 如何检查缓存? MySQL保存结果于缓存中: 把SELECT语句本身做h ...
- MySQL查询执行过程
MySQL查询执行路径 1. 客户端发送一条查询给服务器: 2. 服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果.否则进入下一阶段: 3. 服务器端进行SQL解析.预处理,再由优 ...
- MySQL查询语句执行过程及性能优化(JOIN/ORDER BY)-图
http://blog.csdn.net/iefreer/article/details/12622097 MySQL查询语句执行过程及性能优化-查询过程及优化方法(JOIN/ORDER BY) 标签 ...
随机推荐
- WEB前端移动开发初始化
meta篇 1.视窗宽度 <meta name="viewport" content="width=device-width,initial-scale=1.0,m ...
- web前端利用turf.js生成等值线、等值面
样例如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- 前端框架VUE----babel
这个是解析我们es6的代码的,为什么要用它呢,因为对于一些ie浏览器,甚至FF浏览器,低版本的还不能识别我们的es6代码,那么vue里面好多还让我们去写es6的代码,这个时候我们就可以用babel这个 ...
- The Little Prince-11/28
The Little Prince-11/28 Today I find some beautiful words from the book. You know -- one loves the s ...
- MyEclipse如何修改XML文件默认行宽
1.MyEclipse如何修改XML文件默认行宽 Windows--->Preferences--->搜索xml--->XML--->XML Source--->Form ...
- mysql执行计划查看工具explain
在优化sql语句时,我们经常会用到explain语句,这里对explain语句做一个详细的总结说明. The EXPLAIN statement provides information about ...
- asyncio 学习
来自:https://www.syncd.cn/article/asyncio_article_02 一.asyncio之—-入门初探 通过上一篇关于asyncio的整体介绍,看过之后基本对async ...
- Golang并发编程有缓冲通道和无缓冲通道(channel)
无缓冲通道 是指在接收前没有能力保存任何值得通道.这种类型的通道要求发送goroutine和接收goroutine同时准备好,才能完成发送和接收操作.如果两个goroutine没有同时准备好,通道会导 ...
- ssh客户端连接报认证失败
最近有个应用在并发导出的时候,报错了ssh认证失败,原来串行的时候都正常,经查,可能是ssh连接数不够的原因,这个问题刚好之前有个java开发反馈过,linux默认的ssh连接数为10个. 解决如下: ...
- 【题解】Luogu CF915E Physical Education Lessons
原题传送门:CF915E Physical Education Lessons 前置芝士:珂朵莉树 窝博客里对珂朵莉树的介绍 没什么好说的自己看看吧 这道题很简单啊 每个操作就是区间赋值,顺带把总和修 ...