-
前言
对MySQL的一些基础操作做一下学习性的总结,基本上是照着视频写的。
MySQL的安装
MySQL的下载
MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/
配置环境变量
下载之后直接解压,尽量不要放到中文的目录下面。之后就是配置环境变量,配置就和Java类似。我这里是win11的系统。
对“此电脑”进行右键选择“属性”
选择“环境变量”
选择新建系统变量
也就是你文件夹下载解压之后进入的路径
找到path变量,将%MYSQL_HOME%\bin加入进去
之后就是一直点确定,不然不会保存。
新建配置文件
除了配置环境变量之外,还需要新建一个配置文件my.ini(需要在你下载解压之后的那个目录里面,和bin目录在同一个目录下)
里面的内容如下:
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
初始化MySQL
直接搜cmd,然后选择以管理员身份运行,不然会导致权限不够。
mysqld --initialize-insecure
注册MySQL服务
mysqld -install
启动MySQL服务
net start mysql
停止MySQL服务
net stop mysql
修改MySQL默认账户密码
mysqladmin -u root password 用户自己设置的密码
mysqladmin -u root password 1234
登录MySQL
- 直接输入密码登录
mysql -uroot -p用户刚才设置的密码
C:\Windows\System32>mysql -uroot -p1234
- 后面输入密码登录(这里的*表示的是你输入的密码,不过他不回显而已)
C:\Windows\System32>mysql -uroot -p
Enter password: ****
退出MySQL
exit和quit都可以退出
注释
单行注释 -- 注释内容 或 #注释内容(MySQL特有)
多行注释 /* 注释*/
用--注释,--后面需要跟一个空格。
DDL(Data Definition Language)数据定义语言
DDL(数据定义语言)_百度百科 (baidu.com)https://baike.baidu.com/item/DDL/21997?fr=ge_ala
查询数据库
databases后面有一个s。
SHOW DATABASES;
创建数据库
- 直接创建
database后面没有s。
CREATE DATABASE 数据库名称;
CREATE DATABASE databaseName;
- 如果数据库不存在才创建
CREATE DATABASE IF NOT EXISTS 数据库名称;
CREATE DATABASE IF NOT EXISTS databaseName;
删除数据库
- 直接删除
DROP DATABASE 数据库名称;
DROP DATABASE databaseName;
- 如果数据库存在才删除
DROP DATABASE IF EXISTS 数据库名称;
DROP DATABASE IF EXISTS databaseName;
使用数据库
USE 数据库名称;
USE databaseName;
查看当前正在使用的数据库
SELECT DATABASE();
查询表
- 查询当前数据库下面的所有表的名称。
同样table后面有s。
SHOW TABLES;
- 查询表的结构
DESC 表名;
DESC tableName;
创建表
CREATE TABLE 表名(
字段名1 数据类型1,
字段名2 数据类型2,
...
字段名n 数据类型n
);
注意:最后一行末尾,不能加逗号。
删除表
- 直接删除表。
DROP TABLE 表名;
DROP TABLE tableName;
- 如果表存在才删除
DROP TABLE IF EXIST 表名;
DROP TABLE IF EXISTS tableName;
修改表
- 修改表名
ALTER TABLE 表名 RENAME TO 新的表名;
ALTER TABLE formerName RENAME TO newName;
- 添加一列 add
ALTER TABLE 表名 ADD 列名 数据类型;
- 修改数据类型 modify
ALTER TABLE 表名 MODIFY 列名 新数据类型;
- 修改列名和数据类型 change
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
- 删除列 drop
ALTER TABLE 表名 DROP 列名;
DML(Data Manipulation Language)数据操作语言
数据操纵语言_百度百科 (baidu.com)https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%93%8D%E7%BA%B5%E8%AF%AD%E8%A8%80?fromtitle=DML&fromid=10035808&fromModule=lemma_search-box
添加数据
- 给指定列添加数据
INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);
- 给全部列添加数据
INSERT INTO 表名 VALUES(值1,值2,...);
- 批量添加数据(用逗号分隔)
INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
删除数据
通过where条件来删除目标数据,如果删除语句中未加条件,则将所有数据都删除。
DELETE FROM 表名 [WHERE 条件];
修改数据
通过where条件来判断需要修改哪些数据,如果不加条件,则将所有数据都修改。
UPDATE 表名 SET 列名1=值1,列名2=值2,...[ WHERE条件];
DQL(Data Query Language)数据查询语言
DQL_百度百科 (baidu.com)https://baike.baidu.com/item/DQL?fromModule=lemma_search-box
基础查询
- 查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名; -- 查询所有数据
SELECT * FROM sc; -- 查询sc表中的所有数据
- 去除重复记录
这里distinct没有s,当时考试的时候纠结了好久,最后加上了s,导致丢分了。
SELECT DISTINCT 字段列表 FROM 表名;
- 起别名
之后用到聚合函数,字段可能就会没有信息,让人不知道是什么意思,用了as之后可以更容易理解一点。AS也可以省略。
SELECT 字段名 AS 别名 FROM 表名;
SELECT sname AS '姓名' FROM sc;
条件查询
这个和删除修改就类似的含义了,通过条件来查找目标数据。
SELECT 字段列表 FROM 表名 WHERE 条件列表;
常见符号以及对应的功能
符号 | 功能 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 等于 |
<>或!= | 不等于 |
BETWEEN ... AND... | 在某个范围之内(闭区间) |
IN(...) | 多选一 |
LIKE 占位符 | 模糊查询(_单个任意字符 %多个任意字符) |
IS NULL | 是NULL |
IS NOT NULL | 不是NULL |
AND 或 && | 与 |
OR 或 || | 或 |
NOT 或 ! | 非 |
SQL中对于不等于一般是用<>这个符号,如果多个条件之间是或者的关系,除了可以用or之外,还可以用in来实现,如果是在一个范围内的话,除了可以用and将两个端点判断同时满足之外,还可以通过between...and...来实现,但是between...and...是包含两边的端点值的。
排序查询
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2]...;
ASC:升序排序(默认)
DESC:降序排序
如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序。
分组排序
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
在SQLserver里面我记得这个查询的字段列表需要是分组的字段名或者就是聚合函数。
执行顺序:where > 聚合函数 > having
where是分组前执行,having是分组后执行的,所以where不能使用聚合函数来进行判断。
聚合函数名 | 功能 |
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
如果要统计数据有多少条,但是又不知道哪些数据是都没有null的,就可以用count(*)来实现。
SELECT 聚合函数名(列名) FROM 表名 ;
注意:null值不参与所有聚合函数运算.
分页排序
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目;
起始索引从0开始。
起始索引=(当前页码-1)*每页显示的条数
MySQL分页查询用limit
oracle分页查询用rownumber
SQLserver分页查询用top
DCL(Data Control Language)数据控制语言
DCL(数据控制语言)_百度百科 (baidu.com)https://baike.baidu.com/item/DCL/6524388?fromModule=lemma_search-box
总结
学了SQLserver之后在学MySQL就发现好多东西都是类似的了,所以有基础的同学可以快速带过了,写的比较简单,大部分还是老师总结之后我照搬过来的,写这篇的目的还是为了自己可以快速找到知识点,同时也希望能够帮助到有需要的人。