mysql基础知识(2)
十 一、计算字段
计算字段通常需要使用 AS 来取别名,否则输出的时候字段名为计算表达式
select col1*col2 as col12 from mytable
concat() 用于连接两个字段,同时利用 trim() 可以去除首位空格
select concat ( trim(col1) , ' (' , trim(col2) , ')' )
十二、函数
各个DBMS的函数都是不相同的,因此不可移植。
文本处理:
left() right() 左边或者右边的字符
lower() upper() 装换为小写或者大写字符
ltrim() rtrim() 去除左边或者右边的空格
length() 长度
soundex() 转换为语音值 将一个字符串转换为描述其语音表示的字母数字模式
select * from mytable where soundex(col1)=soundex('apple')
日期和时间处理:
日期格式:YYYY-MM-DD
时间格式:HH:MM:SS
adddate() 增加一个时间(天、周)
addtime() 增加一个时间(时、分)
curdate() 返回当前日期
curtime() 返回当前时间
data() 返回日期时间的日期之差
datediff() 计算两个日期之差
data_add() 高度灵活的日期运算函数
date_format() 返回一个格式化的日期或时间串
day() 返回一个日期的天数部分
dayofweek() |对于一个日期,返回对应的星期几
hour() 返回一个时间的小时部分
minute() 返回一个时间的分钟部分
month() 返回一个日期的月份部分
now() 返回当前日期和时间
second() 返回一个时间的秒部分
time() 返回一个日期时间的时间部分
year() 返回一个日期的年份部分
select now();
数值处理:
sin() 正弦
cos() 余弦
tan() 正切
abs() 绝对值
sqrt() 平方根
mod() 余数
exp() 指数
pi() π
rand() 随机数
汇总函数:
avg() 返回某列平均数
count() 返回某列的行数
max() 返回某列的最大值
min() 返回某列的最小值
sum() 返回某列列值之和
注意:avg()会忽略Null行,使用distinct可以让汇总函数值汇总不同的值。
select avg(distinct col1) as avg_col1 from mytable;
十三、分组
分组就是把具有相同的数据值的行放在同一组中
group by 按分组字段进行排序
select col,count(*) as num from mytable group by col;
order by 可以以汇总字段来进行排序
select col,count(*) as num from mytable group by col order by num;
where 过滤行,having过滤分组,行过滤应当先于分组过滤
select col,count(*) as num from mytable where col>2 group by col having num>=2;
注意:
1、group by 子句出现在where 子句之后,order by子句之前
2、除了汇总字段外,select语句中的每一字段都必须在group by 子句中给出
3、null 的行会被单独分组
4、大多数 sql 实现不支持 group by 列具有可变长度的数据类型
十四、子查询
子查询中只能返回一个字段的数据。
可以将子查询的结果作为 where 语句的过滤条件
select * from mytable1 where col1 in ( select col2 from mytable2 )
下面的语句可以检索出客户的订单数量,子查询语句会对第一个查询检索出的每个客户执行一次
select * cust_name,
( select count(*) from Orders where Orderes.coust_id=Customers.cust_id ) as orders_num
from Customers
order by cust_name;
十五、连接
连接用于连接多个表,使用 join 关键字,并且条件语句使用 on 而不是 where,连接可以替换子查询,并且比子查询的效率一般会更快。可以用 as 给列名、计算字段和表名取别名,给表名取别名是为了简化 sql 语句以及连接相同表。
内连接:
内连接又称等值连接,使用 inner join 关键字。
select a,b,c
from A inner join B
on A.key=B,key
可以不明确使用 inner join ,而使用普通查询并在 where 中将两个表中要连接的列用等值方法连接起来。
select a,b,c
from A,B
where A.key=B.key
在没有条件语句的情况下返回笛卡尔积
自连接:
自连接可以看成内连接的一种,只是连接的表是自身而已。
例如:一张员工表,包含员工姓名和员工所属部门,要找出与 Jim 处在同一部门的所有员工姓名。
子查询表:
select name from employee
where department=(select department from employee where name ="Jim");
自连接版本
select e1.name
from employee as e1,employee as e2
where e1.department=e2.department
and e2.name="Jim";
连接一般比子查询的效率高。
自然连接:
自然连接是把同名列通过等值测试连接起来的,同名列可以有多个。
select * from employee natural join department;
内连接和自然连接的区别:内连接提供连接的列,而自然连接自动连接所有同名列。
外连接:
外连接保留了没有关联的那些行。分为左外连接,右外连接以及全外连接,左外连接就是保留左表没有关联的行。
例如:检索所有顾客的订单信息,包括还没有订单信息的顾客。
select Customers.cust_id , Orders.order_num
from Customers left outer join Orders
on Customers.cust_id =Orders.cust_id;
例如:如果需要统计顾客的订单数,使用聚集函数。
select Customers.cust_id,
count(Orders.order_num) as num_ord
from Customers left outer join Orders
on Customers.cust_id=Orders.cust_id
group by Customers.cust_id;
mysql基础知识(2)的更多相关文章
- mysql基础知识大全
前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里作简单概括性的介绍,具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续会慢慢补充完善. 数据库和数据库软件 数据库是 ...
- mysql基础知识语法汇总整理(二)
mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...
- mysql基础知识语法汇总整理(一)
mysql基础知识语法汇总整理(二) 连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...
- MySQL 基础知识梳理
MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...
- MySQL基础知识:启动管理和账号管理
整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. ...
- MySQL基础知识:创建MySQL数据库和表
虚构一个微型在线书店的数据库和数据,作为后续MySQL脚本的执行源,方便后续MySQL和SQL的练习. 在虚构这个库的过程中,主要涉及的是如何使用命令行管理 MySQL数据库对象:数据库.表.索引.外 ...
- MySQL基础知识:Character Set和Collation
A character set is a set of symbols and encodings. A collation is a set of rules for comparing chara ...
- mysql基础知识详解
分享一些mysql数据库的基础知识. 1.每个客户端连接都会从服务器进程中分到一个属于它的线程.而该连接的相应查询都都会通过该线程处理.2.服务器会缓存线程.因此并不会为每个新连接创建或者销毁线程.3 ...
- Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
1.基础知识 1.1.数据库概述 简单地说:数据库(Database或DB)是存储.管理数据的容器: 严格地说:数据库是"按照某种数据结构对数据进行组织.存储和管理的容器". 总结 ...
- 一、MySQL基础知识
一.背景介绍 我们每天都在访问各种网站.APP,如微信.QQ.抖音,今日头条等,这些东西上面都存在大量的信息,这些信息都需要有地方存储,存储在哪里呢?数据库. 所有我们需要开发一个网站.APP,数据库 ...
随机推荐
- vue中的前置守卫
前置守卫是为了验证用户信息真实性,一些内容只能在用户登陆以后才能进行查看,例如个人中心,我的购物车,等个人页面,非隐私页面 用router.beforeEach进行验证,这个方法必须写在router实 ...
- UVaLive 4628 Jack's socks (贪心)
题意:给定一个无向图,让你把所有点的和它的任意一个相邻点匹配起来,问你是方案是不是唯一,如果是,则输出方案. 析:贪心,很容易知道,如果一个点的度数是 1,那么它只有一个相邻点,这样的话,我们就可以把 ...
- UVa 11722 Joining with Friend (几何概率 + 分类讨论)
题意:某两个人 A,B 要在一个地点见面,然后 A 到地点的时间区间是 [t1, t2],B 到地点的时间区间是 [s1, s2],他们出现的在这两个区间的每个时刻概率是相同的,并且他们约定一个到了地 ...
- 分布式的CAP理论
CAP是强一致性.可用性(实时可用).分区容忍性: Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性) 一般来说 P 是前提. ...
- java web 大文件下载
泽优大文件下载产品测试 泽优大文件下载控件down2,基于php开发环境测试. 开发环境:HBuilder 服务器:wamp64 数据库:mysql 可视化数据库编辑工具:Navicat Premiu ...
- 20145232 韩文浩 《Java程序设计》第3周学习总结
教材学习内容总结 在第三章中,知道了Java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型.在这一周主要学习了类类型. 对象(Object):存在的具体实体,具有明确的状态和行为 类( ...
- 【20171101】the first day in a new company
英文差的要命还飙英文,擦嘞!!! 就是想记录下 点滴 如下配图: | | | V 手动配图这是图!!!
- web-day3
第3章WEB03- JS篇 今日任务 使用JS完成图片轮播效果 使用JS完成页面定时弹出广告 使用JS完成表单的校验 使用JS完成表格的隔行换色 使用JS完成复选框的全选效果 使用JS完成省市联动效果 ...
- C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte
using System.IO; /// <summary> /// WebApi返回图片 /// </summary> public HttpResponseMessage ...
- PAT甲级 1127. ZigZagging on a Tree (30)
1127. ZigZagging on a Tree (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...