一、相关说明
- 更新日期
2024
年9
月3
日15
点38
分(持续更新中)
二、Mysql相关知识
数据库基础
命令行登陆mysql命令
输入 mysql 【-h主机名 -P端口号 】-u用户名 -p密码
登录本地的数据库则可以不用输入主机名和端口号,直接输入 mysql -u用户名 -p密码即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15D:\phpEnv\www>mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is X
Server version: 5.7.40 MySQL Community Server (GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>提示:在 -p 后直接输入密码,则不可以加空格,并且在这里输入密码,密码会显示出来;建议-p后按回车,命令行窗口就会自动跳到下一行:Enter password:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15D:\phpEnv\www>mysql -uroot -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is X
Server version: 5.7.40 MySQL Community Server (GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>登录的是远端服务器的数据库,则得输入主机名和端口号,主机192.1X8.5.1X6,端口3306,用户名为root,密码123456
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15D:\phpEnv\www>mysql -h192.1X8.5.1X6 -P3306 -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is X
Server version: 5.6.50-log Source distribution
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>注意:-P端口号中的P是大写的,要跟密码前面的p(小写)区分开
命令行退出mysql命令
quit; 或者 exit; 或者 \q;
1
2
3
4
5
6
7
8
9
10
11
12
13mysql> quit;
Bye
D:\phpEnv\www>
mysql> exit;
Bye
D:\phpEnv\www>
mysql> \q;
Bye
D:\phpEnv\www>
三、SQL语句及其种类
数据定义语言DDL(Data Definition Language)——CREATE、DROP、ALTER、…
创建数据库
CREATE DATABASE 数据库名;
删除数据库
DROP DATABASE 数据库名;
使用数据库
USE 数据库名;
创建表
CREATE TABLE 表名(
列名1 列1类型,
…
列名n 列n类型,
PRIMARY KEY (‘列名’)
);
删除表
DROP TABLE 表名;
查看数据库、数据表、表结构
SHOW DATABASES;
SHOW TABLES;
DESC 表名; 或 DESCRIBE 表名;
原数据表的结构,索引
SHOW CREATE TABLE 表名;
修改表名
RENAME TABLE 原表名 TO 新表名;
数据查询语言DQL(Data Query Language)——SELECT
简单查询
SELECT * FROM 表名 WHERE 字段=’值’;
SELECT * FROM 表名 WHERE 条件 IN(‘值’,’值’,…,’值’);
联表查询
左连接
SELECT a.*,b.字段(需要的值) FROM B表名 b LEFT JOIN A表名 a ON a.字段 =b.字段 WHERE 字段=’值’;
嵌套查询
SELECT * FROM A表名 WHERE 字段1 IN(SELECT 字段1 FROM B表名 WHERE 字段3 =’值’);
其他查询
去掉重复值
DISTINCT
SELECT DISTINCT 字段 FROM 表名;
限制行数
LIMIT
SELECT * FROM 表名 LIMIT 数值;
范围区间
BETWEEN…AND
SELECT * FROM 表名 WHERE 字段1 = ‘值’ AND 字段2 BETWEEN ‘起始范围’ AND ‘结束范围’;
除…之外
NOT IN
SELECT 字段(需要的值) FROM 表名 WHERE 字段(除…之外) NOT IN (‘值’);
包含
LIKE
SELECT * FROM 表面 WHERE 字段 LIKE ‘%值%’;
排序
升序
SELECT * FROM 表名 WHERE 字段 = ‘值’ ORDER BY 排序字段 ASC;
降序
SELECT * FROM 表名 WHERE 字段 = ‘值’ ORDER BY 排序字段 DESC;
先升序再升序
SELECT * FROM 表名 WHERE 字段 = ‘值’ ORDER BY 排序字段1 ASC,排序字段2 ASC;
SELECT * FROM 表名 WHERE 字段 = ‘值’ ORDER BY 排序字段1,排序字段2;
先降序再降序
SELECT * FROM 表名 WHERE 字段 = ‘值’ ORDER BY 排序字段1 DESC,排序字段2 DESC;
分组
GROUP BY
SELECT * FROM 表名 GROUP BY 字段1,…,字段N;
SELECT * FROM 表名 GROUP BY 字段1,…,字段N ORDER BY 字段 ASC/DESC;
SELECT * FROM 表名 GROUP BY 字段1,…,字段N HAVING 字段(<、>、=)值;
提示:# WHERE关键字无法与合计函数一起使用,聚合函数作为筛选条件时,不能用WHERE,而是用HAVING语法 # HAVING关键字放在GROUP BY关键字后面,针对分组后的数据进行筛选
组合查询
UNION ALL
SELECT 字段 FROM 表名 WHERE 字段=’值’ UNION ALL SELECT 字段 FROM 表名 WHERE 字段=’值’;
设置别名
AS
SELECT 字段 AS 别名 FROM 表名;
WHERE过滤空值
WHERE 列名 IS NOT NULL
WHERE 列名 != ‘NULL’
WHERE 列名 <> ‘NULL’
操作符
AND
OR
提示:AND优先级大于OR优先级
值
MAX最大值
SELECT MAX(字段) FROM 表名;
MIN最小值
SELECT MIN(字段) FROM 表名;
AVG平均值
SELECT AVG(字段) FROM 表名;
SUM和
SELECT SUM(字段) FROM 表名;
函数
条件函数
数据操纵语言DML(Data Manipulation Language)——INSERT、UPDATE、DELETE
INSERT INTO 表名 (字段1,字段2,…,字段n) VALUES (‘值1’,’值2’,…,’值n’);
UPDATE 表名 SET 字段 = ‘值’(需要修改的值) WHERE 字段 = ‘值’;
DELETE 表名 WHERE 字段 = ‘值’ AND 字段 =’值’;
数据控制语言DCL(Data Control Language)
- …
四、其他相关知识
性能
SELECT
SELECT * FROM 表
查询出表中所有数据,性能比较差
- SELECT 常量 FROM 表
查询出结果是所有记录数的常量,性能比较高
SELECT COUNT(*)、SELECT COUNT(1)、SELECT COUNT(主键)
- SELECT COUNT(*)和SELECT COUNT(1)两者返回结果是一样的
- 没有主键,使用COUNT(1)比COUNT(*)快
- 有主键,那么COUNT(主键)最快