mysql的学习总结。包括mysql的安装配置,以及SQL语言的使用。
文章目录
一、MySQL简介
MySQL是一个开源免费的关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
mysql的下载地址:下载地址
二、MySQL的安装卸载与常用命令
1.安装
省略
2.卸载
打开命令提示符(管理员),输入以下两条命令并分别按回车。
net stop mysql
mysqld -remove mysql
最后删除mysql的文件目录以及环境变量。
3.初始化mysql
使用管理员身份打开命令行工具,输入命令
mysqld --initialize-insecure
4.注册mysql服务
命令行中输入命令
mysqld -install
5.启动mysql服务
net start mysql
关闭mysql服务
net stop mysql
6.修改默认的账户密码
输入命令
mysqladmin -u root password 修改的密码
7.mysql的登录与退出
登录命令
mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)
退出命令
exit
quit
三.SQL学习
1.SQL的简介
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
2.SQL的分类
DDL(Data Definition Language) : 数据定义语言,用来定义数据库对象:数据库,表,列等
DDL简单理解就是用来操作数据库,表等
DML(Data Manipulation Language) 数据操作语言,用来对数据库中表的数据进行增删改
DML简单理解就对表中数据进行增删改
DQL(Data Query Language) 数据查询语言,用来查询数据库中表的记录(数据)
DQL简单理解就是对数据进行查询操作。从数据库表中查询到我们想要的数据。
DCL(Data Control Language) 数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户
DML简单理解就是对数据库进行权限控制。比如我让某一个数据库表只能让某一个用户进行操作等。
3.DDL操作数据库
查询所有的数据库
show databases;
创建数据库
CREATE DATABASE 数据库名称;
``
创建数据库并判断,不存在则创建
```c
CREATE DATABASE IF NOT EXISTS 数据库名称;
删除数据库
DROP DATABASE 数据库名称;
删除数据库并判断,存在则删除
DROP DATABASE IF EXISTS 数据库名称;
使用数据库
USE 数据库名称;
查看当前使用的数据库
SELECT DATABASE();
操作表
查询当前数据库下的所有表
SHOW TABLES;
查询表的结构
DESC 表名称;
创建表
CREATE TABLE 表名 ( 字段名1 数据类型1, 字段名2 数据类型2, …字段名n 数据类型n );
常用的数据类型
tinyint : 小整数型,占一个字节
int : 大整数类型,占四个字节 eg : age int
double : 浮点类型 使用格式: 字段名 double(总长度,小数点后保留的位数) eg : score double(5,2) 123456
date : 日期值。只包含年月日 eg :birthday date :
datetime : 混合日期和时间值。包含年月日时分秒
char : 定长字符串。 优点:存储性能高 缺点:浪费空间 eg : name char(10) 如果存储的数据字符个数不足10个,也会占10个的空间
varchar : 变长字符串。 优点:节约空间 缺点:存储性能底 eg : name varchar(10) 如果存储的数据字符个数不足10个,那就数据字符个数是几就占几个的空间
删除表
DROP TABLE 表名;
删除表时并判断表是否存在
DROP TABLE IF EXISTS 表名;
修改表名
ALTER TABLE 表名 RENAME TO 新的表名;
给表添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
修改表列的数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;
修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
删除列
ALTER TABLE 表名 DROP 列名;
4.DML语句
给指定列添加数据
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,…)…;
修改数据
UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件] ;
删除数据
DELETE FROM 表名 [WHERE 条件] ;
5.DQL语句
完整的语法格式
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段
HAVING
分组后条件
ORDER BY
排序字段
LIMIT
分页限定
查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名; -- 查询所有数据
查询并去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表;
排序查询
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
ASC : 升序排列 (默认值)
DESC : 降序排列
聚合函数
SELECT 聚合函数名(列名) FROM 表;
-- null 值不参与所有聚合函数运算
函数名 | 功能 |
---|---|
count(列名) | 统计数量 |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
分组查询
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
6.约束
什么是约束
约束是作用于表中列上的规则,用于限制加入表的数据
约束的存在保证了数据库中数据的正确性、有效性和完整性
约束分类
约束名称 | 约束关键字 | 作用 |
---|---|---|
非空约束 | NOT NULL | 保证列中所有的数据不能有null值 |
唯一约束 | UNIQUE | 保证列中所有数据各不相同 |
主键约束 | PRIMARY KEY | 主键是一行数据的唯一标识,要求非空且唯一 |
检查约束 | CHECK | 保证列中的值满足某一条件(MYSQL不支持检查约束) |
默认约束 | DEFAULT | 保存数据时,未指定值则采用默认值 |
外键约束 | FOREIGN KEY | 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性 |
建表时添加约束
-- 创建表时添加非空约束
CREATE TABLE 表名(
列名 数据类型 约束, … );
建表后添加约束
-- 建完表后添加非空约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 约束;
删除约束
ALTER TABLE 表名 MODIFY 字段名 数据类型;
添加外键约束
-- 创建表时添加外键约束
CREATE TABLE 表名(
列名 数据类型,
…
[CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
);
建表后添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
7.多表查询
内连接查询
-- 隐式内连接
SELECT 字段列表 FROM 表1,表2… WHERE 条件;
-- 显示内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;
内连接相当于查询 A B 交集数据
外连接查询
-- 左外连接
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
-- 右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
子查询
查询中嵌套查询,称嵌套查询为子查询。
8.事务
什么是事务
数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。
事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败。事务是一个不可分割的工作逻辑单元。
开启事务
START TRANSACTION;
或者
BEGIN;
提交事务
commit;
回滚事务
rollback;
事务的四大特征
名称 | 特征 |
---|---|
原子性 | 事务是不可分割的最小操作单位,要么同时成功,要么同时失败 |
一致性 | 事务完成时,必须使所有的数据都保持一致状态 |
隔离性 | 多个事务之间,操作的可见性 |
持久性 | 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的 |
设置事务为手动提交
-- 1为自动提交,0为手动提交
set @@autocommit = 0;
查询默认提交方式
SELECT @@autocommit;