1、USE 数据库A; 选择打开数据库A
2、SHOW BATABASES; 显示所有数据库
3、SHOW TABLES; 显示数据库内所有的数据表
4、SHOW COLUMNS FROM 数据表a;
或:DESCRIBE 数据表a; 显示数据表a的表列等信息
5、SHOW CREATE DATABASE; 显示创建数据库的MySQL语言
6、SHOW CREATE TABLE; 显示创建数据表的MySQL语言
7、SELECT b, c, d FROM 数据表a; 显示数据表a的b、c、d列
8、SELECT * FROM 数据表a; 显示数据表a的所有列
9、SELECT DISTINCT d FROM 数据表a; 去重,显示数据表a的d列所有不同值
?10、SELECT DISTINCT c, d FROM 数据表a; 去重,显示数据表a的c,d列组合的所有不同值?
11、SELECT d FROM 数据表a LIMIT 10; 显示数据表a的d列前10行数据
12、SELECT d FROM 数据表a LIMIT 10,10; 显示数据表a的d列10-20行数据
13、SELECT a.d FROM 数据表a; 使用完全限定表名显示数据表a的d列
14、SELECT a.d FROM 数据表A.a; 使用完全限定表名显示数据库A中数据表a的d列
15、SELECT b, c, d FROM 数据表a ORDER BY b, c; 显示数据表a的b、c、d列按照b列、c列(b列相同时)默认(升序)排序
16、SELECT b, c, d FROM 数据表a ORDER BY b DESC, c DESC; 显示数据表a的b、c、d列按照b列降序、c列(b列相同时)降序排序
17、16、SELECT b, c, d FROM 数据表a ORDER BY b DESC, c LIMIT 5; 显示数据表a的b、c、d列按照b列降序、c列(b列相同时)升序排序,显示前5条,LIMIT在ORDER BY之后
18、SELECT b, c, d FROM 数据表a WHERE b = 2 ORDER BY c; 显示数据表a当满足b=2时的b,c,d列,并按照c排序
19、WHERE子句操作符
操作符 | 说明 |
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
BETWEEN | 在指定两个值之间 |
如果将值与字符串对比,则字符串需添加单引号,如果时数值比较则不需要加单引号
20、SELECT b, c, d FROM 数据表a WHERE b BETWEEN 2 AND 5 ORDER BY c; 显示数据表a当满足b大于等于2,小于等于5时的b,c,d列,并按照c默认(升序)排序
21、SELECT b, c, d FROM 数据表a WHERE b IS NULL ORDER BY c; 显示数据表a当满足b为NULL时的b,c,d列,并按照c默认(升序)排序
22、SELECT b, c, d FROM 数据表a WHERE b =5 AND c <=10; 显示数据表a当满足b等于5且c小于等于10时的b,c,d列
23、SELECT b, c, d FROM 数据表a WHERE b =5 OR c =10; 显示数据表a当满足b等于5或者c等于10时的b,c,d列
24、SELECT b, c, d FROM 数据表a WHERE (b =5 OR c =10) AND d<20; 显示数据表a当满足b=5或c=10且c小于20时的b,c,d列,(要加括号,因为AND运算优先级高于OR,不加括号易出错)
25、SELECT b, c, d FROM 数据表a WHERE b IN (50,100) ORDER BY c; 显示数据表a当满足b为50或100时的b,c,d列,并按照c排列,IN和OR具有相同的功能,IN最大的优点是可以包含其他SELECT语句
26、SELECT b, c, d FROM 数据表a WHERE b NOT IN (50,100) ORDER BY c; 显示数据表a当满足b不是50或100时的b,c,d列,并按照c排列
27、通配符:用来匹配值的一部分的特殊字符
28、%通配符,表示任何字符出现任意次数
29、SELECT name, c, d FROM 数据表a WHERE name LIKE 'zh%'; 显示检索任意以zh开头的词,不管它有多少个字符,包括0个
30、SELECT name, c, d FROM 数据表a WHERE name LIKE '%ang%'; 显示检索任意位置包含ang的词,不管它之前或之后有多少个字符
31、SELECT name, c, d FROM 数据表a WHERE name LIKE '_hang'; 显示只检索以‘hang’结尾的共有5个子符的词,_通配符只匹配单个字符
32、SELECT name, c, d FROM 数据表a WHERE name REGEXP 'hang'; 使用正则表达式匹配匹配name中包含hang的数据
33、SELECT name, c, d FROM 数据表a WHERE c REGEXP '10|20'; 使用正则表达式匹配c中包含10或20的数据
34、SELECT name, c, d FROM 数据表a WHERE c REGEXP '[123]0'; 使用正则表达式匹配c中包含10或20或30的数据
35、SELECT name, c, d FROM 数据表a WHERE c REGEXP '[^123]0'; 使用正则表达式匹配c中不包含10或20或30的数据
36、SELECT name, c, d FROM 数据表a WHERE c REGEXP '[1-3]0'; 使用正则表达式匹配c中包含10或20或30的数据
37、SELECT name, c, d FROM 数据表a WHERE c REGEXP '\\.'; 用\\为前导匹配c中包含特殊字符(.)的数据
38、SELECT name, c, d FROM 数据表a WHERE c REGEXP '\\-'; 用\\为前导匹配c中包含特殊字符(-)的数据
39、\\用来引用元字符
元字符 | 说明 |
\\f | 换页 |
\\n | 换行 |
\\r | 回车 |
\\t | 指表 |
\\v | 纵向制表 |
40、匹配字符类
类 | 说明 |
[:alnum:] | 任意字母和数字(同[a-zA-Z0-9) |
[:alpha:] | 任意字符(同[a-zA-Z]) |
[:blank:] | 空格和指表(同[\\t]) |
[:cntrl:] | ASCII控制字符(ASCII 0到31和127) |
[:digit:] | 任意数字(同[0-9]) |
[:graph:] | 与[:print:]相同,但不包括空格 |
[:lower:] | 任意小写字母(同[a-z]) |
[:print:] | 任意可打印字符 |
[:punct:] | 既不在[:alnum:]又不在[:cntrl:]中的任意字符 |
[:space:] | 包括空格在内的任意空白字符(同[\\t\\n\\r\\f\\v]) |
[:upper:] | 任意大写字母(t同[A-Z]) |
[:xdigit:] | 任意十六进制数字(同[a-fA-F0-9]) |
41、重复元字符
元字符 | 说明 |
* | 0个或多个匹配 |
+ | 1个或个匹配(等于{1,}) |
? | 0个或1个匹配(等于{0,1}) |
{n} | 指定数目匹配 |
{n,} | 不少于指定数目的匹配 |
{n,m} | 匹配数目的范围(m不超过255) |
42、SELECT name, c, d FROM 数据表a WHERE name REGEXP '\\([0-9] sticks?\\)'; \\(匹配'(',[0-9]任意数字,sticks?匹配stick和sticks,因为?表示匹配0次或1次它前面的任何字符,\\)匹配')' 的数据
43、SELECT name, c, d FROM 数据表a WHERE c REGEXP '[[:digit:]]{11}'; 使用正则表达式匹配任意11位数字
44、定位元字符
元字符 | 说明 |
^ | 文本的开始 |
$ | 文本的结尾 |
[[:<:]] | 词的开始 |
[[:>:]] | 词的结尾 |
45、SELECT name, c, d FROM 数据表a WHERE c REGEXP '^[0-9\\.]'; 使用正则表达式匹配数字或.开头的数据
46、SELECT Concat(name, '(', c,')') FROM 数据表a ORDER BY name; 使用Concat拼接字符串输出'name(c)'组合的一列
47、SELECT Concat(LTrim(name), '(', RTrim(c),')') FROM 数据表a ORDER BY name; 使用Concat拼接字符串输出'name(c)'组合的一列,并去掉name左侧空白和c右侧空白,(Trim()删除两侧空白)
48、SELECT Concat(name, '(', c,')') AS
49、SELECT name, c*d AS c_d FROM 数据表a WHERE name=1005 ; 查询1005的数据,并输出name为1005的c列和d列相乘结果并命名为c_d
50、MySQL算术操作符
操作符 | 说明 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
51、SELECT name, Upper(name) AS BIG FROM 数据表a ORDER BY name ; 使用Upper函数将字符串字母转换为大写
52、常用文本处理函数
函数 | 说明 |
Left()/Right() | 返回串左边/右边的字符 |
Length() | 返回串的长度 |
Locate() | 找出串的一个子串 |
Lower()/Upper() | 将串转换为小写/大写 |
LTrim()/RTrim()/Trim() | 去掉串左/右/两边的空格 |
Soundex() | 返回串的SOUNDEX值 |
SubString() | 返回字串的字符 |
53、日期和时间处理函数
函数 | 说明 |
AddDate() | 增加一个日期(天、周等) |
AddTime() | 增加一个时间(时、分等) |
CurDate() | 返回当前日期 |
CurTime() | 返回当前时间 |
Date() | 返回日期时间的日期部分 |
DateDiff() | 计算两个日期之差 |
Date_Add() | 高度灵活的日期运算函数 |
Date_Format() | 返回一个格式化的日期或时间串 |
Day() | 返回一个日期的天数部分 |
Day0fweek() | 对于一个日期,返回对应的星期几 |
Hour() | 返回一个时间的小时部分 |
Minute() | 返回一个时间的分钟部分 |
Month() | 返回一个时间的月份部分 |
Now() | 返回当前日期和时间 |
Second() | 返回一个时间的秒部分 |
Time() | 返回一个日期时间的时间部分 |
Year() | 返回一个日期的年份部分 |
54、SELECT name, time FROM 数据表a WHERE Date(time)='2020-08-02; 查询时间为2020年8月2日的数据
*55、 SELECT name, time FROM 数据表a WHERE Year(time)=2020 AND Month(time)=8; 查询时间为2020年8月份的数据
56、常用的数值处理函数
函数 | 说明 |
Abs() | 返回一个数的绝对值 |
Cos() | 返回一个角度的余弦 |
Exp() | 返回一个数的指数值 |
Mod() | 返回除操作的余数 |
Pi() | 返回圆周率 |
Rand() | 返回一个随机数 |
Sin() | 返回一个角度的正切 |
Sqrt() | 返回一个数的平方根 |
Tan() | 返回一个角度的正切 |
57、聚集函数
函数 | 说明 |
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
58、SELECT AVG(age) AS avg_age FROM 数据表a; 查询数据表a的平均年龄
60、SELECT COUNT(*) AS count FROM 数据表a WHERE age=18; 查询数据表年龄为18的数量
61、SELECT SUM(salary) AS count_salary FROM 数据表a; 查询数据表a薪水的总和
62、SELECT AVG(DISTINCT prod_price) AS avg_price FROM 数据表a WHERE name=1003; 查询数据表a1003的不同产品的平均价格
63、SELECT name, COUNT(*) AS num_prods FROM 数据表a GROUP BY name; 查询不同名字的产品数量(GROUP BY 子句必须出现在WHERE子句之后,ORDER BY子句之前。除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出。若分组列中含有NULL值,则NULL作为一个分组返回,如果列中有多行NULL值,它们将分为一组。)
64、SELECT name, COUNT(*) AS num_prods FROM 数据表a GROUP BY name HAVING COUNT(*)>=2; 查询不同名字产品数量大于等于2的名字(WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤
65、SELECT子句顺序
子句 | 说明 | 是否必须使用 |
SELECT | 要返回的列或表达式 | 是 |
FROM | 从中检索数据的表 | 仅在从表选择数据时使用 |
WHERE | 行级过滤 | 否 |
GROUP BY | 分组说明 | 仅在按组计算聚集时使用 |
HAVING | 组级过滤 | 否 |
ORDER BY | 输出排序顺序 | 否 |
LIMIT | 要检索的行数 | 否 |