对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
直接搜cmd,然后选择以管理员身份运行,不然会导致权限不够。
mysqld --initialize-insecure
mysqld -install
net start mysql
net stop mysql
mysqladmin -u root password 用户自己设置的密码
mysqladmin -u root password 1234
mysql -uroot -p用户刚才设置的密码
C:\Windows\System32>mysql -uroot -p1234
C:\Windows\System32>mysql -uroot -p
Enter password: ****
exit和quit都可以退出
单行注释 -- 注释内容 或 #注释内容(MySQL特有)
多行注释 /* 注释*/
用--注释,--后面需要跟一个空格。
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;
ALTER TABLE 表名 ADD 列名 数据类型;
ALTER TABLE 表名 MODIFY 列名 新数据类型;
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
ALTER TABLE 表名 DROP 列名;
数据操纵语言_百度百科 (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_百度百科 (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(数据控制语言)_百度百科 (baidu.com)https://baike.baidu.com/item/DCL/6524388?fromModule=lemma_search-box
学了SQLserver之后在学MySQL就发现好多东西都是类似的了,所以有基础的同学可以快速带过了,写的比较简单,大部分还是老师总结之后我照搬过来的,写这篇的目的还是为了自己可以快速找到知识点,同时也希望能够帮助到有需要的人。