1. 使用MYSQL
1.1 连接数据库
mysql -u用户名 -p密码
1.2 选择数据库
use 数据库名称;
1.3 了解数据库和表
show databases; – 查看所有数据库
show tables; – 查看所有表
show columns from 表名; – 查看表的列信息
show status; – 查看服务器状态信息
show create database 数据库名称; – 查看创建数据库语句
show create table 表名称; – 查看创建表语句
show grants; – 用来显示授予用户的安全权限
2. 检索数据
select 要查看的列名 from 表名称; – 从表中检索要查看的数据
多个列用逗号隔开即可,如果要查看所有列,用*表示
2.1 检索后,查看指定数据
select DISTINCT 要查看的列名 from 表名称; – 检索出不同的行
distinct关键句作用在所有行,而不只是前置它的行
select 要查看的列名 from 表名称 limit m; – 仅查看小于等于行数的数据
select 要查看的列名 from 表名称 limit m,n; – 仅查看要求行数,从m行开始,共n行数据,注意,mysql行数从0开始
2.2 检索后,排序数据
select 要查看的列名 from 表名称 order by 列名;
注意:如果是按多个列排序,首先按第一列排序,当该列的两行内容相同时,再按第二列进行排序,以此类推
select 要查看的列名 from 表名称 order by 列名 DESC; – 降序,默认是升序
3. 过滤数据
通过where子句携带过滤条件,过滤select出的数据
3.1 WHERE子句操作符
操作符 | 说明 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
<= | 小于等于 |
< | 小于 |
>= | 大于等于 |
> | 大于 |
between | 在指定的两个值之间 (包括开始和结束值) |
is NULL | 空值检测 |
3.2 组合WHERE子句
AND 操作符 OR 操作符 的计算次序:
优先处理AND操作符
IN操作符:枚举值
NOT操作符:可以搭配其他操作符使用,如NOT IN()
3.3 通配符进行过滤
通过LIKE关键字进行模糊查找
% 适配任何字符出现任意次数,但%不可以匹配NULL
_ 只能匹配一个任意字符
3.4 用正则表达式过滤
正则表达式用于匹配文本
where 列名 REGEXP ‘要匹配的字符串’ – 包含字符串的所有行
where 列名 REGEXP ‘字符串1|字符串2’ – 匹配其中任意一个字符串即可
其他规则:
匹配几个字符之一:[字符1字符2字符3],字符之间是或的关系
不匹配其中任意字符:[^字符1字符2字符3]
匹配范围中的字符之一:[1-5] [a-z]
匹配任意字符:. ,如果想匹配本身,前面加\
匹配多个实例:
\* -- 0或者多个匹配
+ -- 1或者多个匹配
? -- 0或者1个匹配
{n} -- 指定数目的匹配
{n,} -- 不少于指定数据的匹配
{n,m} -- 匹配数据的范围,m不超过255
定位符:
^ -- 文本的开始
$ -- 文本的结尾
[[:<:]] -- 词的开始
[[:>:]] -- 次的结尾
3.5 字段处理
- 字段的拼接
concat (字段与字符串之间用逗号隔开)
eg> select concat(v,’(’,m,’)’) from table where w = ‘1002’;
可以给拼接后的字段起一个别名:
eg> select concat(v,’(’,m,’)’) as alts from table where w = ‘1002’;
- 字段的计算
select a * b as c from table;
4. 数据处理函数
4.1 文本处理函数
函数 | 说明 | 函数 | 说明 |
---|---|---|---|
Left() | 返回串左边的字符 | Right() | 返回串右边的字符 |
Length() | 返回串的长度 | Locate() | 找出串的一个子串 |
Lower() | 将串转为小写 | Upper() | 将串转为大写 |
LTrim() | 去掉串左边的空格 | RTrim() | 去掉串右边的空格 |
Soundex() | 返回串的Soundex值 | SubString() | 返回子串的字符 |
4.2 日期和时间处理函数
函数 | 说明 | 函数 | 说明 |
---|---|---|---|
AddDate() | 增加一个日期 | AddTime() | 增加一个时间 |
CurDate() | 返回当前日期 | CurTime() | 返回当前时间 |
Date() | 返回当前日期和时间 | DateDiff() | 计算两个时间之差 |
Date_Add() | 高度灵活的日期运算函数 | Date_Format() | 返回一个格式化的日期或时间串 |
Day() | 返回日期的天数部分 | DateOfWeek() | 返回日期对应的星期几 |
Hour() | 返回一个日期的小时部分 | Minute() | 返回一个日期的分钟部分 |
Month() | 返回一个日期的月份部分 | Now() | 返回当前日期和时间 |
Second() | 返回一个时间的秒部分 | Time() | 返回一个日期的时间部分 |
Year() | 返回一个日期的年份部分 |
eg> select a from t where Date(d) = ‘2015-09-11’;
eg> select a from t where Year(d) = 2005 AND Month(d) = 9;
获取2005年9月1日到9月30日的数据
4.3 数值处理函数
Abs() -- 返回一个数的绝对值
Cos() -- 返回cos值
Sin() -- 返回sin值
Exp() -- 返回指数值
Mod() -- 返回除操作的余数
Pi() -- 返回圆周率
Rand() -- 返回一个随机数
Sqrt() -- 返回一个数的平方根
Tan() -- 返回一个数的正切值
5. 汇总数据
聚合函数:运行在行组上,计算和返回单个值的函数
AVG() -- 返回某列的平均值
只用于单个列,忽略值为NULL的行
COUNT() -- 返回某列的行数
count(*) 计算所有行数,算NULL行
count(列名) 计算指定列的行数,不算NULL行
MAX() -- 返回某列的最大值
MIN() -- 返回某列的最小值
SUM() -- 返回某列值之和
6. 分组数据
GROUP BY 创建分组:
1. 可以包含任意数目的列,使得能对分组进行嵌套
2. group by中每个列必须是检索列或者是有效的表达式(聚集函数除外),如果是表达式,要跟select中的表达式相同,不能使用别名
3. 如果分组中有NULL值,则NULL将作为一个分组返回
6.1 过滤分组
where过滤的是行,having过滤的是分组;having支持所有where操作符。
6.2 select子句顺序
select -> from -> where -> group by -> having -> order by -> limit
7. 联结表
多个表之间的关系