导图社区 MySQL思维导图
主要涉及mysql的各种操作,创建数据库,数据表,和各种查询语句等等。一张图带你完全了解相关内容,通过思维导图帮你提高效率,赶紧来试一试吧~欢迎大家观看( ̄O ̄)ノ
编辑于2024-07-24 22:30:05计算机网络也称计算机通信网,是指将分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。主要涉及计算机网络的基础知识,比如:定义、功能、拓扑结构、分类、发展新技术等等。考研党也欢迎参考!
主要涉及mysql的各种操作,创建数据库,数据表,和各种查询语句等等。一张图带你完全了解相关内容,通过思维导图帮你提高效率,赶紧来试一试吧~欢迎大家观看( ̄O ̄)ノ
主要包括电感式传感器,分为变磁阻式传感器、差动变压器式传感器、电涡流式电感传感器。围绕其基本原理、类型、优缺点及应用展开。
社区模板帮助中心,点此进入>>
计算机网络也称计算机通信网,是指将分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。主要涉及计算机网络的基础知识,比如:定义、功能、拓扑结构、分类、发展新技术等等。考研党也欢迎参考!
主要涉及mysql的各种操作,创建数据库,数据表,和各种查询语句等等。一张图带你完全了解相关内容,通过思维导图帮你提高效率,赶紧来试一试吧~欢迎大家观看( ̄O ̄)ノ
主要包括电感式传感器,分为变磁阻式传感器、差动变压器式传感器、电涡流式电感传感器。围绕其基本原理、类型、优缺点及应用展开。
MySQL
第2章 MYSQL的安装与配置
登录mysql
mysql -h localhost -u root -p
启动mysql
net start mysql
停止mysql
net stop mysql
退出mysql
exit。quit。\q。
第3章 数据库基本操作
查看当前系统存在的数据库
SHOW DATABASES;
创建数据库CREATE
CREATE DATABASE database_name;
一般由字母和下划线组成,不允许有空格
不允许是mysql关键字
长度最好不超过128位
不能与其他数据库同名
选择数据库
USE database_name;
删除数据库DROP DATABASE
DROP DATABASE database_name;
第4章 存储引擎、数据类型和字符集
存储引擎
查看存储引擎
SHOW ENGINES \G
\G将查询结果按列显示
查看默认存储引擎
SHOW VARIABLES LIKE 'default_storage_engine';
修改存储引擎
ALTER TABLE table_name ENGINE=e_name;
字符集
查看mysql中所有可用字符集
SHOW CHARACTER SET;
查看字符集所对应的排序规则
SHOW COLLATION LIKE '字符集名称%';
查看当前服务器使用的字符集
SHOW VARIABLES LIKE 'character_set_server';
在创建数据库时选择字符集DEFAULT CHARSET
CREATE DATABASE database_name DEFAULT CHARSET set_name;
修改数据库的字符集ALTER
ALTER DATABASE database_name DEFAULT CHARSET utf8;
第5章 数据表基本操作
创建数据表CREATE
CREATE TABLE table_name( col_name1 data_type [Constraints], col_name2 data_type [Constraints], …… col_namen data_type [Constraints] )[ENGINE=引擎名];
数据表命名原则
长度最好不超过30个字符
多个单词之间使用下划线“_”分隔,不允许有空格
不允许为mysql关键字
不允许与同一数据库中的其他数据表同名
设置约束条件
主键约束PRIMARY KEY
定义字段时设置主键约束
col_name data_type PRIMARY KEY
定义所有字段后设置主键约束
PRIMARY KEY(col_name)
自增约束AUTO_INCREMENT
col_name data_type AUTO_INCREMENT
一张表中只能设置一个字段为自增约束,并且该字段必须为主键
默认的初始值为1,每增加一条记录,字段值自动加1
字段类型必须为整数类型
非空约束NOT NULL
col_name data_type NOT NULL
唯一性约束UNIQUE
定义字段时设置唯一性约束
col_name data_type UNIQUE
定义所有字段后设置唯一性约束
UNIQUE KEY(col_name)
无符号约束UNSIGNED
col_name data_type UNSIGNED
默认约束DEFAULT
col_name data_type DAFAULT value
外键约束FOREIGN KEY
CONSTRAINT key_name外键名 FOREIGN KEY(child_col_name从表中需要设置外键约束的字段名) REFERENCES parent_table_name主表名(parent_col_name主表中主键的字段名)
主表和从表必须使用InnoDB存储引擎
设置外键约束的字段和关联的主键必须具有相同的数据类型。整数类型的大小和符号必须相同;字符串类型的长度可以不同,但对于非二进制字符串,字符集和排序规则必须相同。
关闭外键约束
SET FOREIGN_KEY_CHECKS=0;
打开外键约束SET FOREIGN_KEY_CHECKS=1;
查看表结构DESCRIBE
DESC table_name;
查看建表语句
SHOW CREATE TABLE table_name \G
修改表
修改表名RENAME
ALTER TABLE old_table_name RENAME new_table_name;
修改字段数据类型MODIFY
ALTER TABLE table_name MODIFY col_name new_data_type;
修改字段名CHANGE
ALTER TABLE table_name CHANGE old_col_name new_col_name data_type;
添加字段ADD
在表的最后一列添加字段
ALTER TABLE table_name ADD col_name data_type;
在表的第一列添加字段
ALTER TABLE table_name ADD col_name data_type FIRST;
在表的指定列之后添加字段
ALTER TABLE table_name ADD col_name1 data_type AFTER col_name2;
删除字段DROP
ALTER TABLE table_name DROP col_name;
修改字段顺序 MODIFY
ALTER TABLE table_name MODIFY col_name data_type FIRST|AFTER col_name2;
删除表
删除没有被关联的表DROP
DROP TABLE [IF EXISTS] table_name1,table_name2,......,table_namen;
如果删除的数据表不存在,系统会提示错误信息并中断执行
加上“IF EXISTS” 参数后,系统会在执行删除命令之前判断表是否存在,如果不存在,命令仍可以顺利执行,但系统会提示警告。
删除被其他表关联的主表
先删除外键
ALTER TABLE table_name DROP FOREIGN KEY key_name;
key_name外键名
再删除表
DROP TABLE table_name;
第6章 数据的插入、修改和删除操作
插入数据INSERT
向表中所有字段插入数据
指定字段及其值
INSERT INTO table_name(col_name1,col_name2,……col_namen) VALUES(value1,value2,……valuen);
不指定字段只列出字段值
INSERT INTO table_name VALUES(value1,value2,……valuen);
向表中指定字段插入数据
INSERT INTO table_name(col_name1,col_name2……,col_namen) VALUES(value1,value2,……,valuen);
同时插入多条数据
INSERT INTO table_name(col_name1,col_name2,……col_namen) VALUES(value1,value2,……valuen), …… (value1,value2,……,valuen);
将其他表中的数据插入到表中
INSERT INTO table_name1(table_name1_col_list) SELECT table_name2_col_list FROM table_name2;
修改数据UPDATE
修改所有数据
UPDATE table_name SET col_name1=value1,col_name2=value2……,col_namen=valuen;
修改指定数据
UPDATE table_name SET col_name1=value1,col_name2=value2……,col_namen=valuen WHERE condition;
删除数据DELETE
删除所有数据
DELETE FROM table_name;
删除指定数据
DELETE FROM table_name WHERE condition;
第7章 单表数据记录查询
基本查询语句SELECT
SELECT {*|<字段列表>} [FROM<表1>,<表2>……] [WHERE <表达式> [GROUP BY <group by definition>] [HAVING <expression> [{<operator><expression>}……]] [ORDER BY <order by definition>] [LIMIT [<offset>,]<row count>] ];
查询所有字段
SELECT {*|col_list} FROM table_name;
查询指定字段
SELECT col_name1[,col_name2,……col_namen] FROM table_name;
查询指定记录
SELECT {*|col_list} FROM table_name WHERE condition;
=
相等
<
小于
>
大于
<>(!=)
不相等
<=
小于或者等于
>=
大于或者等于
多条件查询
使用AND关键字查询
&&
使用OR关键字查询
||
使用IN关键字查询
SELECT {*|col_list} FROM table_name WHERE col_name IN (value1,value2,……valuen);
要查询的有多个记录
NOT IN
查询字段值不在指定集合中的记录
查询空值IS NULL
SELECT {*|col_list} FROM table_name WHERE col_name IS NULL;
IS NOT NULL
查询字段值不为NULL的记录
查询结果不重复DISTINCT
SELECT DISTINCT col_list FROM table_name;
范围查询BETWEEN AND
SELECT {*|col_list} FROM table_name WHERE col_namea BETWEEN value1 AND value2;
包括开始值和结束值
NOT BETWEEN AND
不包括开始值和结束值
字符匹配查询LIKE
SELECT {*|col_list} FROM table_name WHERE col_namea LIKE valueb;
通配符“%”
%糖
以糖结尾
%游%
包含游
休%服
以休开头,以服结尾
通配符“_”
可以出现在匹配字符的任意位置,但一个“_”只能匹配一个字符
排序查询ORDER BY
SELECT {*|col_list} FROM table_name ORDER BY col_namea [ASC|DESC];
ASC升序 默认为升序
DESC降序
限制查询结果的数量LIMIT
SELECT {*|col_list} FROM table_name LIMIT [offset_start,] row_count;
offset_start
起始位置,指定从哪一行开始,不指定默认0,从表的第一行记录开始查询
row_count
查询出来的记录条数
SELECT * FROM goods LIMIT 2,3;
查询goods表中从第三天记录开始,总条数为3的记录
使用聚合函数查询
SELECT function(*|col_num) FROM table_name WHERE CONDITION
统计数据记录条数COUNT()
COUNT(*)
计算表中总的记录数,不管表字段中是否包含NULL值
COUNT(col_name)
计算表中指定字段的记录数,忽略NULL值
求总和SUM()
SUM(col_name)
忽略NULL值
求指定列的平均值AVG()
AVG(col_name)
忽略NULL值
最大值MAX()和最小值MIN()
MAX(col_name)
忽略NULL值
MIN(col_name)
忽略NULL值
分组查询GROUP BY
SELECT {*|col_list} aggregate_func FROM table_name GROUP BY col_namea [HAVING condition];
简单分组查询 GROUP BY 和 聚合函数COUNT()
查询每组的数量
使用HAVING过滤分组后数据 GROUP BY 和 HAVING
指定显示记录所需满足的条件,只有满足条件的分组才会被显示
使用多个字段进行分组GROUP BY
aggregate_func
聚合函数
col_namea
按照字段col_namea对数据进行分组
第8章 多表数据记录查询
连接查询
内连接查询INNER JOIN
普通内连接查询
SELECT {*|col_list} FROM table_name1 INNER JOIN table_name2 ON condition;
自连接查询
SELECT table_alias1.*,table_alias2.* FROM table_name AS table_alias1 INNER JOIN table_name AS table_alias2 ON condition;
外链接查询OUTER JOIN
SELECT {*|col_list} FROM table_name1 {LEFT|RIGHT} [OUTER] JOIN table_name2 ON condition;
左连接查询LEFT JOIN
右连接查询RIGHT JOIN
复合条件连接查询
在连接查询中添加过滤条件
子查询
FROM子句中的子查询
SELECT {*|col_list} FROM (SELECT * FROM table_name) AS table_alias [WHERE condition];
WHERE子句中的子查询
使用IN关键字的子查询
SELECT {*|col_list} FROM table_name1 WHERE col_name1 IN (SELECT col_name2 FROM table_name2 [WHERE condition]);
使用ANY、SOME关键字的子查询
SELECT {*|col_list} FROM table_name1 WHERE col_name1 <ANY (SELECT col_name2 FROM table_name2 [WHERE condition]);
创建一个表达式对子查询的返回值列表进行比较,只要满足子查询中的任一个比较条件,就返回一个结果。
使用ALL关键字的子查询
SELECT {*|col_list} FROM table_name1 WHERE col_name1 >ALL (SELECT col_name2 FROM table_name2 [WHERE condition]);
当一条记录符合子查询结果中所有的条件时,才会返回该记录。
使用EXISTS关键字的子查询
SELECT {*|col_list} FROM table_name1 WHERE EXISTS (SELECT * FROM table_name2 );
使用EXISTS关键字,系统会对子查询的返回结果进行判断, 如果子查询至少返回一行记录,EXISTS的结果为TRUE,主查询语句将会执行; 如果子查询没有返回任何记录,EXISTS的结果为FALSE,主查询语句将不会执行
NOT EXISTS
使用条件判断符的子查询
SELECT {*|col_list} FROM table_name1 WHERE col_name1 operators (SELECT col_name2 FROM table_name2 );
合并查询结果UNION
使用UNION 关键字的合并操作(删除重复记录)
SELECT {*|col_list} FROM table_name1 UNION SELECT {*|col_list} FROM table_name2;
使用UNION ALL 关键字的合并操作
SELECT {*|col_list} FROM table_name1 UNION ALL SELECT {*|col_list} FROM table_name2;
第9章 运算符
!
-(负号),~位取反
1取反为0,0取反为1
^ 位异或
不同为1,相同为0
*
/(DIV)
%(MOD)
求余
除数为0,返回NULL
除数为0,返回NULL
-(减法运算),+
<<位左移,>>位右移
左移右边补0,右移左边补0,移出的位被抛弃
& 位与
将操作数转换为二进制数后进行按位与运算
全1为1,其他为0
| 位或
有1为1,其他为0
<,>,<=,>=,
=,<=>等于运算符
<>,!= 不等于运算符
REGEXP
IN
IS NULL
LIKE
为真返回1
为假返回0
不确定返回NULL
^
匹配字符串的开始部分
^b 匹配以字母b开始的字符串
$
匹配字符串的结束部分
st$ 匹配以st结束的字符串
.
匹配除换行符'\n'之外的任何单个字符
b.t 匹配bit,bat,but等
[…]
匹配方括号中(字符集合)所包含的任意一个字符
[a-z ] 匹配字母表26个字母中的任意一个字母
[^…]
匹配字符集合未包含的任意一个字符
[^a]匹配除a之外的任意一个字符
*
匹配符号*前面的零个或多个字符
ao* 能匹配a以及aoo, [0-9]*匹配任意数量的数字
+
匹配符号+前面的字符一次或多次
ao+ 能匹配ao以及aoo
{n}
匹配符号前面的字符至少n次
o{2}能匹配food,但不能匹配dog
{n,m}
匹配符号前面的字符至少n次,至多m次
b{2,4} 匹配包含至少2个,至多4个b的字符串
两个操作数中有一个或两个值为NULL,结果为NULL
两个操作数分别为字符串和数值,系统会首先将字符串转换成数值,然后再进行比较
BETWEEN AND,CASE,WHEN,THEN,ELSE
NOT 逻辑非
操作数为0返回1,为非零返回0,为NULL返回NULL
&&(AND) 逻辑与
有0返回0,没0有NULL返回NULL,非0返回1
XOR 逻辑异或
相同为0,不同为1,有NULL返回NULL
||(OR) 逻辑或
有1返回1,没1有NULL返回NULL,否则返回0
:=(赋值运算)
第10章 MYSQL常用函数
数值函数
求绝对值函数
ABS(x)
求余函数
MOD(x,y)
数值x除以数值y后的余数
除数和被除数任何一个为NULL,返回值为NULL
除数为0返回NULL
用于获取整数的函数
CEIL(x)
返回值是大于数值x的最小整数值
FLOOR(x)
返回值是小于数值x的最大整数值
获取随机数的函数
RAND()
返回值是0~1内的小数,并且每次运行结果都不同
四舍五入函数
ROUND(x)
对数值执行四舍五入操作,返回值为整数
ROUND(x,y)
对数值x进行四舍五入并保留小数点后y位
截取小数函数
TRUNCATE(x,y)
对数值x进行截取,保留小数点后y位(直接截取,不进行四舍五入)
字符串函数
返回字符串长度和字符串中字符个数的函数
LENGTH(str)
返回字符串长度
一个汉字占用2个字节
一个英文字符和数字占用1个字节
CHAR_LENGTH(str)
返回字符串中的字符个数
合并字符串的函数
CONCAT(str1,str2,…strn)
将多个字符串拼接成为一个字符串,但如果参数中有一个为NULL值,返回结果为NULL
CONCAT_WS(x,str1,str2…strn)
以第一个参数为分隔符,连接后面的多个字符串,会忽略分隔符后的NULL值,但如果分隔符为NULL,返回结果为NULL
替换字符串的函数
INSERT(str,x,y,instr)
将字符串str从第x位置开始,y个字符长的子串替换为字符串instr
REPLACE(str,a,b)
使用字符串b替换字符串str中的子串a
字母大小写转换函数
LOWER(str)
将字符串str中的字母全部转换为小写字母
UPPER(str)
将字符串str中的字母全部转换为大写字母
获取指定长度字符串的函数
LEFT(str,x)
获取字符串str中最左边的x个字符
RIGTH(str,x)
获取字符串str中最右边的x个字符
SUBSTRING(str,x,y)
获取字符串str中从x位置开始,后面y个字符长度的子串
填充字符串的函数
LPAD(str1,n,str2)
使用字符串str2对字符串str1最左边进行填充,直到字符串str1总长度达到n个字符长度。如果str1的字符长度大于或等于n,则不填充。
RPAD(str1,n,str2)
使用字符串str2对字符串str1最右边进行填充,直到字符串str1总长度达到n个字符长度。如果str1的字符长度大于或等于n,则不填充。
删除字符串中空格的函数
LTRIM(str)
删除字符串左侧的空格字符
RTRIM(str)
删除字符串右侧的空格字符
TRIM(str)
删除字符串开头和结尾的空格, 删除字符串两侧的指定字符
重复生成字符串的函数
REPEAT(str,n)
返回字符串str重复n次的结果
获取字符串中子串开始位置的函数
LOCATE(str1,str)
返回子串str1在字符串str中的开始位置,返回值的最小值为1,如果字符串str中不包含字符串str1,则返回0
反转字符串的函数
REVERSE(str)
返回将字符串str中字符倒序排列后的结果
日期与时间函数
获取当前日期的函数CURDATE()
返回包含年月日的当前日期
获取当前时间的函数CURTIME()
返回“HH:MM:SS”格式的当前时间
获取当前日期和时间的函数NOW()
返回当前的日期和时间
获取UNIX时间戳函数UNIX_TIMESTAMP(date)
返回日期date的UNIX时间戳
获取年份,月份,星期,日,时,分和秒的函数
YEAR(d)
返回所给的日期d是哪一年
MONTH(d)
返回所给的日期d是一年中的第几个月
WEEK(d)
返回所给的日期d是一年中的第几周
HOUR(d)
返回所给时间d的小时
MINUTE(d)
返回所给时间d的分钟
SECOND(d)
返回所给时间d的秒
格式化日期和时间的函数DATE_FORMAT(d,format)
计算日期和时间函数
ADDDATE(date,INTERVAL expr unit)
执行日期和时间的加运算
SUBDATE()
执行日期和时间的减运算
DATEDIFF()
计算两个日期之间相差的天数
时间和秒相互转换的函数
TIME_TO_SEC(d)
将指定的时间d换算成秒
SEC_TO_TIME(d)
将指定的秒换算为“HH:MM:SS”形式的时间格式
条件判断函数
IF(expr,v1,v2)
如果表达式exor的结果为真,函数的返回值为v1,结果为假,返回v2
IFNULL(v1,v2)
如果v1不为NULL,返回值为v1,否则返回v2
CASE函数
子主题
子主题
JSON函数
创建JSON值的函数
创建JSON数组
JSON_ARRAY(val1,val2,……,valn)
[子主题]
创建JSON对象
JSON_OBJECT(key1,val1,key2,val2,……,keyn,valn)
{子主题}
修改JSON值的函数
JSON_ARRAY_APPEND(json_doc,key,val[,key,val]……)
将值附加到JSON文档中指示数组的结尾并返回结果
JSON_SET(json_doc,key,val[,key,val]……)
在JSON文档中插入或更新数据并返回结果
主题