选择数据库基本命令
1.选择数据库
USE *db_name*;
2.显示所有可用数据库
SHOW DATABASES;
3.获取一个数据库中的所有表
SHOW TABLES;
4.用show语句显示某表的列属性
(1)SHOW COLUMNS FROM *table_name*;
(2)DESCRIBE table_name;
5.显示创建特定数据库或表的mysql语句
SHOW CREATE DATABASE *db_name*;
SHOW CREATE TABLE *table_name*;
6.显示服务器错误或警告
SHOW ERRORS;
SHOW WARNINGS;
7.执行命令 HELP SHOW; 显示所有允许的SHOW语句
检索数据
1.从表中检索某个列
SELECT *col_name* FROM *table_name*;
返回的语句没有特定顺序
2.同时检索多个列,一定要在列名之间加上逗号
SELECT *col_name1*, *col_name2*, *col_name3*
FROM *table_name*;
3.检索所有列,列的顺序一般为定义时的顺序
SELECT * FROM *table_name*;
4.检索式排除重复值,DISTINCT必须放在列名前面
SELECT DISTINCT *col_name* FROM *table_name*;
5.(1)使用LIMIT子句返回特定的行数,如10,避免输出所有行
SELECT *col_name* FROM *table_name* LIMIT 10;
5.(2)返回从第6行开始的5行
SELECT *col_name* FROM *table_name* LIMIT 6,5;
排序检索
1.对检索结果以列的顺序排序
SELECT *col_name* FROM *table_name*
ORDER BY *col_name*;
2.对检索结果以多个列顺序排序
SELECT *col_name1*, *col_name2*, * col_name3*
FORM *table_name*
ORDER BY *col_name1*, *col_name3*;
3.指定升序或降序
SELECT *col_name1*, *col_name2*, * col_name3*
FORM *table_name*
ORDER BY *col_name1* DESC;(降序)
4.分别对多个列排序(对列1降序,对列2升序)
SELECT *col_name1*, *col_name2*, *col_name3*
FORM *table_name*
ORDER BY *col_name1* DESC, *col_name2*;
ESC关键字只应用于直接位于其前面的列名,如果想对多个列进行降序排序,必须对每个列指定DESC关键字
5.使用ORDER BY 与LIMIT的组合
SELECT *col_name* FROM *table_name*
ORDER BY *col_name*
LIMIT 10;
过滤数据
1.搜索条件
SELECT *col_name1*, *col_name2*
FROM *table_name*
WHERE *conditions*
ORDER BY关键字位于WHERE之后
WHERE操作符:
(1)<> or != 不等于
(2)<,>,=,<=,>= 你懂的
(3)BETWEEN a AND b 在指定两个值a和b之间
2.空值检查
SELECT *col_name1*
FROM *table_name*
WHERE *col_name2* IS NULL;
3.组合条件
SELECT *col_name1*, *col_name2*
FROM *table_name*
WHERE (condition1 or condition2) AND condition3;
4.IN操作符
SELECT *col_name*
FROM *table_name*
WHERE *col_name* IN (1001,1002)
5.NOT操作符
SELECT *col_name*
FROM *table_name*
WHERE *col_name* NOT IN (1001,1002);
6.通配符 %表示任何字符出现任意次数(包括0)
SELECT *col_name*
FROM *table_name*
WHERE *col_name* LIKE 'jet%';
可以匹配jet后接任意字符
%可以在搜索模式的任意位置使用,并可以使用多个通配符:
‘%anvil%’ , ‘s%e’
7.通配符_匹配单个字符
‘anvil’ , ‘s_e’
通配符的使用会延长搜索时间,不要过度使用
MYSQL正则表达式
1.基本字符匹配
SELECT *col_name*
FROM *table_name*
WHERE *col_name* REGEXP '1000'
ORDER BY *col_name*;
EGEXP关键字后面接正则表达式
正则表达式中用 . 匹配任意一个字符
'.000’可以匹配 1000 或 2000
用BINARY关键字区分大小写
WHERE col_name REGEXP BINARY ‘jet.’
2.进行or匹配,使用 | 搜索两个串之一
SELECT *col_name*
FROM *table_name*
WHERE *col_name* REGEXP '1000|2000|3000';
使用 [123] 定义一组字符,即匹配1或2或3
[^123]匹配除字符1,2,3之外的任意东西
[0-9] 匹配0-9之间的数字
3.特殊字符
为了匹配特殊字符,需要用\\为前导
\-表示查找-
\.表示查找 .
4.正则表达式重复元字符
元字符 | 说明 |
---|---|
* | 0个或多个匹配 |
+ | 1个或多个匹配 |
? | 0个或1个匹配 |
{n} | 指定数目的匹配 |
{n,} | 不少于指定数目的匹配 |
{n,m} | 匹配数目的范围 (m不超过255) |
[[0-9]]{4}匹配连续的4位数字
创建字段
1.拼接字段,将两个列合并为一个字段
SELECT Concat(*col_name1*, '(', *col_name2*, ')')
FROM *table_name*
ORDER BY *col_name1*;
Concat()拼接串,多个串之间用逗号分隔
用Mysql的RTrim()函数去掉值右边所有的空格
LTrim()函数去掉串左边的空格
Concat(RTrim(*col_name1*), '(', RTrim(*col_name2*), ')')
2.使用别名
SELECT *col_name1* AS *another_name*
数据处理函数
1.文本处理函数
Upper()函数将文本转换为大写
Lower()函数将文本转换为小写
Left()函数返回串左边的字符
Right()函数返回串右边的字符
Length()函数返回串的长度
Locate()函数找出串的一个字串
SubString()返回字串的字符
2.日期处理函数
实例:
SELECT *col_name1*, *col_name2*
FROM *table_name*
WHERE *table_name1* = '2006-09-12'
匹配范围内日期
SELECT *col_name1*, *col_name2*
FROM *table_name*
WHERE Date(*col_name1*) BETWEEN '2020-04-01' AND '2020-04-30';
或者
SELECT *col_name1*, *col_name2*
FROM *table_name*
WHERE Year(*col_name1*) = 2020 AND Month(*col_name1*) = 4;
3.数值处理函数