MySQL 快速上手

文章目录

  • 1.认识 SQL
  • 2.认识 MySQL
  • 3.认识 mysql 命令
  • 4.连接 MySQL
  • 5.DCL 数据控制
  • 6.DDL 数据定义
  • 7.DQL 数据查询
  • 8.DML 数据操作
  • 9.TCL 事务控制
  • 10.索引
  • 11.约束
  • 12.存储过程
  • 13.存储函数
  • 14.触发器
  • 15.游标
  • 16.视图
  • 17.特殊字符
  • 15.字符集与字符序
  • 13.常用函数
    • 日期和时间函数
    • 字符串函数
      • SUBSTR()
      • SUBSTRING_INDEX()
      • CONCAT()
      • CONCAT_WS()
      • GROUP_CONCAT()
    • 数学函数
      • CONV()
    • 聚合函数
      • COUNT()
    • 其它函数
      • INET_ATON() 与 INET_NTOA()
      • ISNULL()
  • 13.常用功能
  • 19.小结
  • 参考文献

1.认识 SQL

认识 SQL

2.认识 MySQL

认识 MySQL

3.认识 mysql 命令

认识 mysql 命令

4.连接 MySQL

连接 MySQL

5.DCL 数据控制

MySQL DCL 数据控制

6.DDL 数据定义

MySQL DDL 数据定义

7.DQL 数据查询

MySQL DQL 数据查询
MySQL 子查询
MySQL 连接查询

8.DML 数据操作

MySQL DML 数据操作

9.TCL 事务控制

一文读懂什么是数据库事务
MySQL TCL 事务控制

10.索引

MySQL 索引

11.约束

MySQL 约束

12.存储过程

MySQL 存储过程

13.存储函数

MySQL 存储函数

14.触发器

MySQL 触发器

15.游标

MySQL 游标

16.视图

MySQL 视图

17.特殊字符

MySQL 特殊字符

15.字符集与字符序

(1)查看系统支持的字符集。

MySQL服务器支持多种字符集,包括多个 Unicode 字符集。显示可用的字符集可查看表 INFORMATION_SCHEMA.CHARACTER_SETSSHOW CHARACTER SET 语句。

SHOW CHARACTER SET# 或
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS

(2)查看系统支持的字符集排序规则。

给定的字符集总是至少有一个排序规则,大多数字符集有几个。若要列出字符集的排序规则,请使用INFORMATION_SCHEMA.COLLATIONS 表或 SHOW COLLATION 语句。

SHOW COLLATION# 或
SELECT * FROM INFORMATION_SCHEMA.COLLATIONS

(3)查看当前数据库的字符集。

SHOW VARIABLES LIKE '%character%';
# 或
SHOW VARIABLES LIKE 'character_set_database';

(4)查看当前数据库的字符序。

SHOW VARIABLES LIKE '%collation%';
# 或
SHOW VARIABLES LIKE 'collation_database';

(5)查看数据表的字符集。

SHOW CREATE TABLE tbl_name

(6)查看数据表的字符序。

SHOW TABLE STATUS LIKE 'tbl_name';

(7)修改数据库的字符集与字符序。

ALTER DATABASE db_name[[DEFAULT] CHARACTER SET charset_name][[DEFAULT] COLLATE collation_name]

(8)修改数据表的字符集与字符序。

ALTER TABLE tbl_name[[DEFAULT] CHARACTER SET charset_name][COLLATE collation_name]

注意,MySQL 没有那么智能,修改数据表字符集时,并不会自动将表中历史数据转换为新的字符集编码。如果表中有历史数据,那么需要做一次转换,如转换为 utf8mb4。

ALTER TABLE tbl_nameCONVERT TO CHARACTER SET utf8mb4COLLATE utf8mb4_general_ci;

13.常用函数

日期和时间函数

(1)now() 返回当前日期时间。

select now();
+---------------------+
| now()               |
+---------------------+
| 2019-04-16 15:05:12 |
+---------------------+

(2)curdate() 返回当前日期。

select curdate();
+------------+
| curdate()  |
+------------+
| 2019-04-16 |
+------------+

(3)curtime() 返回当前时间。

select curtime();
+-----------+
| curtime() |
+-----------+
| 15:10:36  |
+-----------+

(4)时间选取函数。

set @dt = '2019-04-16 15:05:12.123456';date(@dt):返回日期,示例结果2019-04-16
time(@dt):返回时间,示例结果15:05:12.123456
year(@dt):返回年 ,示例结果2019
month(@dt):返回月,示例结果4
day(@dt):返回日,示例结果16
hour(@dt):返回时,示例结果15
minute(@dt):返回分,示例结果05
second(@dt):返回秒,示例结果12
microsecond(@dt):返回微秒,示例结果123456
quarter(@dt):返回季度,范围14。示例结果2
week(@dt):返回周,范围052。示例结果15
dayofyear(@dt) :返回@dt在一年中的日数,范围在1366。示例结果106
dayofmonth(@dt) :返回@dt的月份中日期,在131范围内。示例结果16
monthname(@dt) :返回@dt的月份名字。示例结果April
dayname(@dt) :返回@dt的星期名字。示例结果Tuesday

(5)Unix 时间戳与日期之间的转换。

Unix 时间戳转换为日期用函数: FROM_UNIXTIME()。

select FROM_UNIXTIME(1156219870);

日期转换为 Unix 时间戳用函数: UNIX_TIMESTAMP()。

Select UNIX_TIMESTAMP(2006-11-04 12:23:00);

字符串函数

SUBSTR()

主要用法有:

SUBSTR(str,pos)
SUBSTR(str FROM pos)
SUBSTR(str,pos,len)
SUBSTR(str FROM pos FOR len)

SUBSTR 是 SUBSTRING 的别称。参数 str 为原字符串;pos为下标,从1 开始,如果为负数表示从后往前;len 表示截取的字符数。

SELECT SUBSTRING('Quadratically',5);
-> 'ratically'SELECT SUBSTRING('foobarbar' FROM 4);
-> 'barbar'SELECT SUBSTRING('Quadratically',5,6);
-> 'ratica'SELECT SUBSTRING('Sakila', -3);
-> 'ila'SELECT SUBSTRING('Sakila', -5, 3);
-> 'aki'SELECT SUBSTRING('Sakila' FROM -4 FOR 2);
-> 'ki'

SUBSTRING_INDEX()

按分隔符截取字符串前 N 个或者后 N 个子串。函数原型如下:

SUBSTRING_INDEX(str,delim,count)

SUBSTRING_INDEX() 返回字符串按分隔符 delim 分隔的 count 个子串,对分隔符区分大小写。如果计数 count 为正,则返回从左到右 count 个子串。如果计数为负数,则返回从右边到左 count 个子串。

用法示例:

SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);-> 'mysql.com'

CONCAT()

CONCAT() 用于连接字符串或表字段。

(1)连接字符串。

注意:concat 函数的任意参数为 NULL,则返回结果为 NULL。

select concat('My', 'S', 'QL');
-> 'MySQL'select concat('My', NULL, 'QL');
-> NULLselect concat(14.3);
-> '14.3'

(2)连接数据表字段。

select concat(f_name, " ", l_name) as Name from employee where level>3 limit 1;

结果:

+---------------+ 
| Name          | 
+---------------+ 
| Monica Sehgal |

注意:这里用到 concat(…) 函数,用来把字符串串接起来。另外,我们还用到以前学到的 as 给结果列concat(f_name, " ", l_name)起了个别名。

CONCAT_WS()

CONCAT() 函数无法为连接结果指定分隔符号,可以使用 CONCAT_WS() 函数指定分隔符,WS 是 With Separator 的简写。

CONCAT_WS(separator,str1,str2,...)

用法示例:

select CONCAT_WS(',','First name','Second name','Last Name');
-> 'First name,Second name,Last Name'select CONCAT_WS(',',f_name,l_name) AS Name from employee where level>3;
-> 'Monica,Sehgal'

GROUP_CONCAT()

使用 GROUP BY 子句时,可使用 GROUP_CONCAT() 聚集函数将分组中的某个字段进行拼接。如果没有非空值,则返回 NULL。

完整的语法如下所示:

GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val])

用法示例:

SELECT student_name, GROUP_CONCAT(test_score)FROM studentGROUP BY student_name;# 或者
SELECT student_name, GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')FROM studentGROUP BY student_name;

数学函数

CONV()

CONV() 函数用于数值进制间的转化,如二进制与十进制之间的转换,十进制与十六进制转换等等。函数原型如下:

conv(N,from_base,to_base)

from_base 表示初始的进制, to_base 表示转化后的进制,进制必须处于 [2, 32] 之间,不然返回 NULL。

使用示例如下:

SELECT CONV('a',16,2); -> '1010'
SELECT CONV('6E',18,8); -> '172'
SELECT CONV(-17,10,-18); -> '-H'

注意:非数字的数值,比如十六进制的0xff,传入 conv(…) 函数时,以字符串的形传入:‘ff’。

聚合函数

COUNT()

COUNT() 函数用于统计指定条件的行数。主要有如下几种用法:

# 返回表的总记录数
count(*)# 返回指定列的值的数目(NULL 不计入)
count(<column>)# 返回指定列的不同值的数目
count(distinct <column>)# 返回符合指定条件的记录数
count(if(<condition>,true,null))# 返回符合指定条件的记录数
count(if(<condition>,true,null))# 返回符合指定条件的记录中某列不同值的数目
count(distinct <column>,if(<condition>,true,null))
# 或
count(distinct case where <condition> then <column> end)

尖括号中的内容表示实际使用时需要被替换为实际的值。

其它函数

INET_ATON() 与 INET_NTOA()

INET_ATON() 与 INET_NTOA() 函数用于点分十进制 IP 地址与无符号整型的互相转换。

函数原型:

# 将ip地址转换成数字
INET_ATON(ip)# 将数字转换成 IP 地址
INET_NTOA(num)

用法示例:

select INET_ATON(3232236292);select INET_NTOA('192.168.3.4');

ISNULL()

测试参数是否为 NULL。

13.常用功能

(1)显示当前年月日。

select current_date;
+--------------+
| current_date |
+--------------+
| 2019-04-16   |
+--------------+

(2)当计算器使用

select ((4*4)/2)+25; 

19.小结

因工作用到 MySQL,作为一个 MySQL 初学者,在短短的几个月中接触了一下,记录了一下工作中用到的 SQL 语句以及未来可能会用到的 MySQL 知识点,作为日后的参考手册。

因内容繁杂,参考资料质量参差,个人水平优先,错误在所难免,也请大家勿吝惜批评指正。

本文持续更新中…


参考文献

MySQL官网
结构化查询语言.百度百科
Mysql命令行添加用户
MySQL的权限有哪些
MYSQL——为现有字段添加自增属性
mysql设置自动增加字段的初始值
MySQL命令大全
MySQL中的存储引擎讲解
mysql的内存表和临时表
维基百科.数据库事务
mysql事务处理用法与实例详解
百度百科.事务隔离级别
MySQL数据库事务隔离级别介绍(Transaction Isolation Level)
王小东.高性能MySQL[M].北京:电子工业出版社,2010
CSDN.数据库事务和隔离级别的理解
mysql游标示例mysql游标简易教程
Mysql 高级特性:游标与流程控制
百度百科.游标
W3School.SQL where
mysql conv函数语法
mysql 中 union 的用法
limit子句语法格式
MySQL中show语法
MySQL MERGE存储引擎 简介及用法
Mysql中replace into用法详细说明


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部