柚子酱的Mysql学习笔记(一)

选择数据库基本命令

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.日期处理函数
柚子酱的Mysql学习笔记(一)
实例:

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.数值处理函数
柚子酱的Mysql学习笔记(一)

上一篇:json过滤,改变数组格式


下一篇:Java学习笔记-语法篇[==与equals的区别]