一幅画,一次瞬间的回眸,就在那次画展上,那个眼神,温柔的流转,还是那干净的皮鞋,一尘不染,俊朗的眉宇性感的唇,悄悄走近,牵手一段浪漫

MySQL笔记(二)

13、条件查询

1.普通条件查询

语法:SELECT COL_LIST FROM TABLE_NAME

[WHERE CONDITION_EXPRESSION]

示例1:查询QQ号为12301的玩家信息
SELECT*FROM USERS WHERE USER_QQ='12301' 示例2:查询分数大于2500分的数据
SELECT*FROM SCORES WHERE SCORE>2500



2.比较运算符

​ 等于 =

​ 不等于 <>

​ 大于 >

​ 大于等于 >=

​ 小于 <

​ 小于等于 <=

示例:查询游戏编号为1且分数大于4000分的分数信息
SELECT * FROM SCORES
WHERE GNO=1 AND SCORE>4000

3.逻辑运算符

并且 AND

或者 OR

非 NOT

示例:查询游戏编号为1和2的分数信息
SELECT * FROM SCORES WHERE GNO=1 OR GNO=2

4.模糊查询

示例1:查询分数在2500(含)到3000(含)的分数信息
SELECT * FROM SCORES
WHERE SCORE>2500 AND SCORE<=3000

SELECT * FROM SCORES
WHERE SCORE BETWEEN 2500 AND 3000
示例2:查询分数不在2500(含)到3000(含)的分数信息
SELECT * FROM SCORES
WHERE SCORE NOT BETWEEN 2500 AND 3000 示例3:查询1987年1月1日到1992年7月31日出生的玩家
SELECT * FROM USERS
WHERE USER_BIRTHDAY
BETWEEN '1987-01-01' AND '1992-07-31'

5.通配符

'_' 一个字符

% 任意字符

[] 指定范围内

[^] 不在括号中

示例1:查询所有姓孙的玩家信息
SELECT * FROM USERS
WHERE USER_NAME LIKE '孙%' 示例2:查询所有非姓孙的玩家信息
SELECT * FROM USERS
WHERE USER_NAME NOT LIKE '孙%'

6.查询空值的运算符

示例1:查询生日为NULL的玩家信息
SELECT * FROM USERS WHERE USER_BIRTHDAY IS NULL
示例2:查询生日不为NULL的玩家信息
SELECT * FROM USERS WHERE USER_BIRTHDAY IS NOT NULL

14、对查询结果排序

1.对指定列进行排序

单列排序要素:

排序依据

排序方式

ASC表示:升序排序(默认方式)

DESC表示:降序排序

​ 语法:SELECT COL_LIST FROM TABLE_NAME

​ ORDER BY ORDER_BY_LIST[ASC|DESC]

	示例1:查询分数表中编号为1的所有分数信息,并按照分数升序排序
SELECT * FROM SCORES
WHERE GNO=1
ORDER BY SCORE ASC 示例2:查询分数表中编号为1的所有分数信息,并按照分数降序排序
SELECT * FROM SCORES
WHERE GNO=1
ORDER BY SCORE DESC

2.多列排序

多列排序要点:

排序依据

排序方式

优先级

	示例1:查询分数表所有信息,并按照游戏编号的升序和分数的降序进行排序
SELECT * FROM SCORES
ORDER BY GNO ASC,SCORE DESC

15、汇总和分组数据结果

1.聚合函数

聚合函数 支持的数据类型 描述

sum() 数字 对指定列中的所有非空值求总和

avg() 数字 对指定列中的所有非空值求平均值

min() 数字 字符 dateinme 返回指定列中的最小数字,最早的日期或者最小的字符串

max() 数字 字符 dateinme 返回指定列中的最大数字,最近的日期或者最大的字符串

conut() 任意基于行的数据类型 统计结果集合中全部记录行的数量

示例1:查询玩家表中一共有多少名玩家信息
语法1:SELECT COUNT(USER_QQ)FROM USERS
语法2:SELECT COUNT(*)FROM USERS 示例2:查询QQ号是12301的玩家游戏的总分数
语法:SELECT SUM(SCORE) AS '总分数' FROM SCORES WHERE USER_QQ='12301' 示例3:查询QQ号是12301的玩家游戏的平均分数
语法:SELECT AVG(SCORE) AS '平均分数' FROM SCORES WHERE USER_QQ='12302' 示例4:查询游戏编号是1的游戏的最高分数
语法:SELECT MAX(SCORE)AS'最高分数' FROM SCORES WHERE GNO=1 示例5:查询QQ号是12302的玩家的总分,平均分和最高分
语法:SELECT SUM(SCORE)AS'总分' AVG(SCORE)AS'平均分' MAX(SCORE)AS'最高分'
FROM SCORES WHERE USER_QQ='12302'

2.在结果集内分组

使用GROUP BY 分组

示例1:查询每个玩家的总分数,平均分,最高分数
语法:SELECT SUM(SCORE)AS'总分' AVG(SCORE)AS'平均分' MAX(SCORE)AS'最高分'
FROM SCORES GROUP BY user_qq 示例2:查询每个玩家的平均分数,并显示玩家QQ和平均分数
语法:SELECT USER_QQ,AVG(SCORE)AS'平均分'
FROM SCORES GROUP BY user_qq

3.筛选分组结果

示例1:查询平均分数大于4000的玩家QQ号,总分数,平均分数
语法:SELECT USER_QQ,SUM(SCORE)AS'总分数',AVG(SCORE)AS'平均分数'
FROM SCORES GROUP BY USER_QQ HAVING AVG(SCORE)>4000
示例2:查询所有用户的平均分数和总分数,并按平均分倒序排列
语法:SELECT USER_QQ,AVG(SCORE)AS'平均分数',SUM(SCORE)AS'总分数'
FROM SCORES GROUP BY USER_QQ HAVING AVG(SCORE)DESC

SELECT语句的执行顺序

1.from子句指定数据源

2.where子句基于指定的条件对记录进行筛选

3.group by子句将数据划分为多个分组

4.使用聚合函数进行进一步的计算统计

5.使用having子句筛选分组

6.使用order by子句对结果集进行排序

16、连接查询

1.FROM子句进行多表查询

示例:查询分数信息,显示玩家昵称,游戏名称和分数

语法:SELECT USER_NAME AS'昵称',GNAME AS'游戏名称',SCORE AS'分数'
FROM USERS,GAMES,SCORE
WHERE USERS.USER_QQ=SCORES.USER_QQ
AND GAMES.GNO=SCORES.GNO

2.内连接

连接查询分为内连接和外连接两种

内连接特点:

1.相连接的两张表地位平等

2.如果一张表中在另一张表中不存在对应数据,侧不做连接

语法:SELECT USER_NAME ,score
FROM USERS,SCORE
WHERE users.user_qq=scores.user_qq
示例1:查询每个玩家的昵称,总分和平均分
语法:SELECT USER_NAME AS'昵称',SUM(SCORE)AS'总分',AVG(SCORE)AS'平均分'
FROM USERS U INNER JOIN SCORES S ON S.USER_QQ=U.USER_QQ
GROUP BY U.USER_QQ,USERS.USER_NAME 示例2:查询平均分数大于3500的分数信息,显示玩家昵称,总分数,平均分数,并按照平均分数降序排列
语法:SELECT USER_NAME AS'昵称',SUM(SCORE)AS'总分',AVG(SCORE)AS'平均分'
FROM USERS U INNER JOIN SCORES S ON S.USER_QQ=U.USER_QQ
GROUP BY U.USER_QQ,USERS.USER_NAME
HAVING AVG(SCORE)>3500
ORDER BY AVG(SCORE) DESC

3.外连接

外连接分为左连接和右外连接

外连接的特点:

1.做连接的两个表地位不平等,其中有一张是基础表

2.基础表中的每条数据必须出现,即使另一张表没有数据与之匹配,也要用NULL补齐

3.左外连接时左表是基础表,右外连接时右表是基础表

外连接语法:SELECT COL_LIST
FROM TABLE1 LEFT|RIGHT[OUTER]JOIN TABLE2 ON TABLE1.COL=TABLE2.COL 示例:查询所有玩家关于5号游戏的分数信息
语法:SELECT USER_NAME AS'昵称'
GNO AS '游戏编号',SCORE AS'分数'
FROM USERS U LEFT JOIN SCORES S ON U.USER_QQ=S.USER_QQ
AND S.GNO=5

17、子查询

1.使用IN关键字的子查询

示例:查询游戏类型是‘棋牌类’的游戏的分数信息

1.游戏分数表中并包含游戏类型信息

2.采用连接查询

3.分两步进行,首先找到所有“棋牌类”游戏的编号,再以这一组编号为查询依据完成查询

语法:SELECT * FROM SCORES  WHERE GNO IN
(SELECT gno from games WHERE gtype='棋牌')

注意:子查询一般不写成SELECT*FROM

示例:查询没有参与5号游戏的玩家QQ

语法:SELECT USER_QQ FROM USERS
WHERE USER_QQ NOT IN
(SELECT USER_QQ FROM SCORES WHERE GNO=5)

2.使用EXISTS关键字的子查询

示例;如果存在昵称为“孙悟空”侧查询分数表中数据

SELECT * FROM SCORES

WHERE EXISTS

(SELECT*FROM USERS WHERE USER_NAME='孙悟空')

18、联合查询

联合查询语法格式

	SELECT_STATEMENT
UNION[ALL]SELECT_STATEMENT
[UNION[ALL]SELECT_STATEMENT]
[...n]

作用与特点:

1.可以把多条查询语句所产生的结果集纵向连接为一体

语句:SELECT user_name from users

UNION

SELECT gname from gemes

2.有ALL关键字可以显示全部数据(重复的也显示出来)

3.列的数量与类型都要兼容

 示例1:查询玩家表中所有女性玩家和生日为空的玩家
语法:SELECT *FROM USERS WHERE USER_SEX='女'
UNION
SELECT * FORM USERS WHERE USER_BIRTHDAY IS NULL 示例2:查询QQ是"12301"的玩家所有分数并计算出总分数和平均分数,并显示到同一结果集中
语法:SELECT USER_QQ,GNO,SCORE FROM SCORES WHERE USER_QQ='12301'
UNION ALL
SELECT '总分', ' ',SUM(SCORE)FROM SCORES
WHERE USER_QQ='12301'
UNION ALL
SELECT '平均分', ' ',AVG(SCORE)FROM SCORES
WHERE USER_QQ='12301'

19、日期和时间函数

函数的概念:按指定格式输入参数,返回正确结果的运算单元

返回当前日期:

1.CURDATE()

2.CURRENT_DATE()

3.CURDATE()+0可以将当前日期值转换为数值型

语法:SELECT CURDATE()

返回当前时间:
1.CURTIME()
2.CURRENT_TIME()
3.CURTIME()+0可以将当前时间值转换为数值型 语法:SELECT CURTIME() 返回当前日期和时间:
1.CURRENT_TIMESTAMP()
2.LOCALTIME()
3.NOW()
4.SYSDATE() 语法:SELECT NOW() 获取月份:
1.MONTH(DATE)
2.MONTHNAME(DATE) 语法:SELECT MONTH("2015-09-22") 获取星期:
1.DAYNAME(DATE)
2.DAYOFWEEK(DATE)
3.WEEKDAY(DATE)
4.WEEK(DATE)
5.WEEKOFYEAR(DATE) 语法:SELECT DAYNAME(2017-04-05) 获取天数:
1.DAYOFYEAR(DATE)
2.DAYOFMONTH(DATE) 语法:SELECT 1.DAYOFYEAR(2017-04-05) 获取年份,季度,小时,分钟,秒钟
1.YEAR(DATE)
2.QUARTER(DATE)
3.HOUR(TIME)
4.MINUTE(TIME)
5.SECOND(TIME)

20、数字函数

绝对值函数:

ABS(X)

语法:SELECT ABS(7)

符号函数:

SIGN(X)

语法:SELECT SIGN(-1)

获取随机数函数

1.RAND()

2.RAND(X)

语法:SELECT RAND()

获取整数的函数

1.CEIL(X)/CEILING(X)

2.FLOOR(X)

四舍五入函数

1.ROUND(X)

2.ROUND(X.Y)

3.TRUNCATE(X,Y)

求余数函数

MOD(X,Y)

域运算函数(平方根)

1.pow(x,y)或Power(x,y)

2.EXP(X)

3.SQRT(X)

角度弧度互换函数

1.RADIANS(X)

2.DEGREES(X)

圆周率函数

PI()

三角函数

1.SIN(X)

2.ASIN(X)

3.COS(X)

4.ACOS(X)

5.TAN(X)

6.ATAN(X)

7.COT(X)

21、字符串函数

1.计算字符数和字符串长度的函数

1.CHAR_LENGTH(S)

2.LENGTH(S)

语法:SELECT LENGTH('s')

2.合并字符串函数

1.CONCAT()

语法:SELECT CONCAT('HH','逗逼')

3.替换字符串函数

1.INSERT(S1,X,LEN,S2)

2.REPLACE(S,S1,S2)

语法:SELECT INSERT('ADCDE',2,3,'##')

4.截取字符串的函数

1.LEFT(S,N)

2.RIGHT(S,N)

语法:SELECT LEFT()

5.重复生成字符串函数

REPEAT(S,N)

语法:SELECT REPEAT('ABC',3)

6.大小写转换函数

1.LOWER(X)/LCASE(X)

2.UPPER(X)/UCASE(X)

语法:SELECT LCASE('ABCD')

7.填充字符串函数

1.LPAD(S1,LEN,S2)

2.RPAD(S1,LEN,S2)

语法:SELECT LPAD('abcd',10,'#')

8.删除空格函数

1.LTRIM(S)/RTRIM(S)

2.TRIM(S)

语法:SELECT RTRIM(' ABCD ')

9.删除指定字符串

TRIM(S1 FROM S)

语法:SELECT TRIM('A' FROM 'ABCADE')

10.获取子字符串

SUBSTRING(S,N,LEN)

MID(S,N,LEN)

语法:SELECT SUBSTRING('abcade',3,2)

11.返回指定位置字符串函数

ELT(N,S1,S2)

语法:SELECT ELT(2,'ABC','DEF','MYSQL')

12.返回指定字符串位置

FIELD(S,S1,S2)

语法:SELECT FIELD('ABC','ABC','DEF','MYSQL')

22、系统函数

1.获取MySQL版本号的函数

VERSION()

2.查看当前用户的连接数

CONNECTION_ID()

3.查看当前所用数据库函数

1.DATABASE()

2.SCHEMA()

4.获取用户名的函数

1.USER()

2.CURRENT_USER()

3.SYSTEM_USER()

4.SESSION_USER()

MySql笔记(二)的更多相关文章

  1. Mysql 笔记二

    Mysql 笔记二 Mysql 笔记二 Table of Contents 1. 前言 2. Master Thread 工作方式 2.1. 主循环(loop) 2.2. 后台循(backgroup ...

  2. MySql笔记二:命令简介

    从笔记二开始讲解一些简单的命令,这些我在SQL Server里面都讲过了,什么主键,约束啥的数据库这些都是相通的,所以MySql这里,不讲,粗略过一遍. 使用命令框登录MySql mysql -u r ...

  3. MySQL笔记二

    Ø function 函数 函数的作用比较大,一般多用在select查询语句和where条件语句之后.按照函数返回的结果, 可以分为:多行函数和单行函数:所谓的单行函数就是将每条数据进行独立的计算,然 ...

  4. MySQL--高性能MySQL笔记二

    人们通常使用varchar(15):来存储IP地址,然而它们其实是32位无符号整数,不是字符串,所以应该使用无符号整数存储IP地址,MySQL 提供 INET_ATON() 和 INET_NTOA() ...

  5. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  6. MySQL笔记汇总

    [目录] MySQL笔记汇总 一.mysql简介 数据简介 结构化查询语言 二.mysql命令行操作 三.数据库(表)更改 表相关 字段相关 索引相关 表引擎操作 四.数据库类型 数字型 字符串型 日 ...

  7. Django学习笔记二

    Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...

  8. python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法

    python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...

  9. JDBC学习笔记二

    JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...

随机推荐

  1. P1084 骑士的工作

    题目描述 你作为一个村的村长,保卫村庄是理所当然的了.今天,村庄里来了一只恶龙,他有n个头,恶龙到处杀人放火.你着急了.不过天无绝人之路,现在来了一个骑士团.里面有m位成员,每个人都可以砍掉一个大小不 ...

  2. spring security (BCryptPasswordEncoder)加密及判断密码是否相同

    通过BCryptPasswordEncoder的加密的相同字符串的结果是不同的,如果需要判断是否是原来的密码,需要用它自带的方法. 加密: BCryptPasswordEncoder encode = ...

  3. linux flags 参数

    记住 kmalloc 原型是: #include <linux/slab.h> void *kmalloc(size_t size, int flags); 给 kmalloc 的第一个参 ...

  4. 小程序 scroll-view 左右横向滑动没有效果(无法滑动)问题

    scroll-view 中的需要滑动的元素不可以用 float 浮动:

  5. 第三阶段:3.Web端产品设计:3.产品设计的层次

    一般淘宝购物的五个流程:浏览对应表现层,搜索对应框架层,产品页面对应架构层,确认对应范围层,付款对应战略层. 从具象到抽象.但是我们做产品都是从抽象到具象,而用户使用产品是从具象到抽象. 各个层次之间 ...

  6. 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(二)

    开心一刻 一头母牛在吃草,突然一头公牛从远处狂奔而来说:“快跑啊!!楼主来了!” 母牛说:“楼主来了关我屁事啊?” 公牛急忙说:“楼主吹牛逼呀!” 母牛大惊,拔腿就跑,边跑边问:“你是公牛你怕什么啊? ...

  7. java中把某个字符串中的单引号替换成双引号

    String regexp = "\'";String str = "'good'";System.out.println("替换前:" + ...

  8. TCP/IP IGMP:Internet组管理协议

    1.概述 IGMP协议,让一个物理网络上的所有系统知道主机所在的多播组,ICMP作为IP层的一部分,通过IP数据报进行传输,有固定的报文长度.通过IP首部协议字段值为2指明 类型为1说明是多播路由器发 ...

  9. 初识python——知其名而去其意

    ---背景 b2b,房地产,人工智能是今年最火的词汇,那么配套的软件技术究竟是怎样的呢,通过百度,园子里的信息分析,自我感觉需要用python来进行数据采集. ---环境 在百度,qq群的大神指导下, ...

  10. 洛谷P5664 Emiya 家今天的饭 题解 动态规划

    首先来看一道题题: 安娜写宋词 题目背景 洛谷P5664 Emiya 家今天的饭[民间数据] 的简化版本. 题目描述 安娜准备去参加宋词大赛,她一共掌握 \(n\) 个 词牌名 ,并且她的宋词总共有 ...