MySQL数据库 (从入门到精通)
MySQL数据库安装与配置
MySQL数据库
大纲:
- 数据库的基础知识
- MySQL数据库安装与配置
- MySQL表操作
- MySQL基本查询
- MySQL高级查询
- MySQL写入操作
- MySQL基本函数
- MySQL的综合应用
一、 MySQL数据库安装与配置
1.1 数据库常见名词
-
数据库系统: 数据库系统(DBMS) Database Management System :是指一个能为用户提供信息服务的系统。它实现了有组织地、动态地储存大量相关数据的功能,提供了数据处理和信息资源共享的便利手段。
-
关系型数据库系统: 关系型数据库系统( RDBMS) Relational database management system :是指使用了关系模型的数据库系统。关系模型中,数据是分类存放的,数据之间可以有联系
-
第一个关系型数据库 :1976年BM的 System R团队在出版的论文中阐述了关系模型,1979年 Oracle公司推出了首个关系型数据库成品。
-
关系型数据的应用:关系型数据库被应用在非常多的领域,教育系统,商业系统,医疗系统,而且关系型数据库可以有效组织和管理大量复杂的数据,所以关系型数据库才是最重要的数据库产品。
1.2 主流的关系型数据库
- DB2 :商业版,成本高,比如电信,金融领域
- Oracle:按照CPU数据库收费
- MySQL:开源免费
- SQL Server:微软数据库
1.3 NoSQL数据库系统
- 概念:NoSQL数据库指的是数据分类存放,但是数据之间没有关联关系的数据库系统
主流的NoSQL数据库
- Redis 内存保存数据秒杀 ,微博
- MemCache:相似于Redis,市场份额不是很大
- MongoDB: 硬盘保存数据,知乎,简书
- Ne04j:负责的人际关系
1.3 MySQL数据库安装与初始化
MySQL数据库: MySQL是应用最广泛、普及度最高的开源关系型数据库,MySQL由瑞典 MySQL AB公司开发,目前属于 Oracle旗下产品
MySQL 大事记
- 1996 MySQL1.0 诞生
- 1999 MySQL AB公司成立
- 2000 MySQLL4.0发布
- 2003 MySQL5.0发布
MySQL衍生版
- Oracle
- MariaDB
- Percona
1.4 用户管理
MySQL客户端:Navicat,DBeaver
密码忘记重设置root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY ′123456′
注意:本地'@'表示root登录方式,可以本地登录与远程登录。localhost是本地登录,如果加上%,代表可远程登录
1.5 MySQL配置文件
MySQL配置文件
在my.ini文件中,我们可以设置各种 MySQL的配置,例如字符集、端口号、目录地址等等[client] #客户端信息配置信息
[mysql] #客户端信息配置信息
[mysqld] #数据库配置信息
[client]
port=3306
[mysql]
no-beep
port=3306 #端口号
datadir=C:/ ProgramData/ MySQL/ MySQL Server8.0/Data #数据目录
default authentication_ plugin= caching sha2_ password #密码认证插件
default- storage- engine= INNODB #默认存储引擎
sq1-mode=" STRICT TRANS TABLES, NO ENGINE SUBSTITUTION" #开启严格模式
log- output=FILE #用文件记录日志
genera1-10g=0 #关闭日志输出
genera1_1 og file=" DESKTOP-HB42AU2.1og" #日志文件名称
slow- query-1og=1 #开启慢查询日志
query_1 og file=" DESKTOP-HB42AU2-s1ow.1og" #慢查询日志文件名称
long query time=10 #大于多少秒的执行SQL被记录在慢查询日志
log- error=" DESKTOP-HB42AU2.err” #错误日志名称
server-id=1 #数据库ID
lower case table names=1 #把表名转换成小写
secure-f1le-priv="C:/ ProgramData/MyQL/ lySQL Server8.0/ Uploads" #导入导出数据的目录地址
max connections=151 #最大连接数
table open cache=2000
tmp table size=16M
thread cache size=10#线程数量
myisam max sort file size=100G
myisam sort buffer size=8M
key buffer size=8M
read buffer size=0
二、数据库表的相关操作
- 定义逻辑库,数据表
- 什么是SQL语言:
- SQL语言分类
- SQL语句注意事项
- SQL语句的注释
2.1 创建逻辑库
mysql> CREATE DATABASE 逻辑库名称 #创建逻辑库
mysql> SHOW DATABASES; #展示逻辑库
mysql> DROP DATABSE 逻辑库名称 ;#展示逻辑库
mysql> CREATE DATABASE student #创建逻辑库
mysql> CREATE DATABASE drop #删除逻辑库
2.2 创建数据表
CREATE TABLE数据表 (
列名1 数据类型 [约束][ COMMENT注释],
列名2 数据类型 [约束][ COMMENT注释],
...
)[ COMMENT=注释];
CREATE TABLE student(
id INT UNSIGNED PRIMARY KEY, #unsigned:无符号
NAME VARCHAR(20) NOT NULL,
sex CHAR(1) NOT NULL,
birthday DATE NOT NULL,
tel CHAR(11) NOT NULL,
remark VARCHAR(200)
);
2.3 写入数据表
INSERT INTO student VALUES(1,"张三","男","1995-05-13","13383838438",NULL);
数据表的其他
SHOW tables;#查看逻辑表
DESC Student;#查看数据表
SHOW CREATE TABLE student,#查询建表语句
DROP TABLE Student #删除表文件
2.2 定义数据库语言:
数据类型
数字类型:
不精确的浮点数
字符串类型:
日期类型:
修改表结构
ALTER TABLE 表名称
ADD 列1 数据类型 [约束] [COMMENT注释],
ADD 列2 数据类型 [约束] [COMMENT注释];
ALTER TABLE student
ADD address VARCHAR(200) NOT NULL,
ADD home tel CHAR(11) NOT NULL;
修改字段类型和约束
ALTER TABLE 表名称
MODIFY 列1 数据类型 [约束] [COMMENT注释],
MODIFY 列2 数据类型 [约束] [COMMENT注释];
ALTER TABLE student
MODIFY home tel VARCHAR(20)NOT NULL;
修改字段名称
ALTER TABLE 表名称
CHANGE 列1 新列名1 数据类型 [约束] [COMMENT注释],
CHANGE 列2 新列名2 数据类型 [约束] [COMMENT注释];
ALTER TABLE student
CHANGE address home address VARCHAR(200)NOT NULL;
删除字段
ALTER TABLE 表名称
DROP 列1,
DROP 列2,
ALTER TABLE student
DROP home address,
DROP home tel;
2.3 数据库的范式与字段约束
数据库的范式:
字段约束
主键约束:
CREATE TABLE t_teacher(
id INT PRIMARY KEY AUTO INCREMENT,
);
非空约束
CREATE TABLE t_teacher(
id INT PRIMARY KEY AUTO_INCREMENT
name VARCHAR(200) NOT NULL,
married BooLeaN NOT NULL DEFAULT FALSE
);
唯一约束
CREATE TABLE t_teacher(
…
tel CHAR(11) NOT NULL UNIQUE
);
创建表
create table t_teacher(
id int unsigned primary key auto_increment,
name varchar(20) not null,
tel char(11) not null unique,
married boolean not null default false #默认未婚
);
外键约束
CREATE TABLE t_dept( #父表
deptno INT UNSIGNED PRIMARY KEY,
dname VARCHAR(20) NOT NULL UNIQUE,
tel CHAR(4) UNIQUE
);
CREATE TABLE t_temp( # 子表
empno INT UNSIGNED PRIMARY KEY,
ename VARCHAR(20) NOT NULL,
sex ENUM(“男”,“女”) NOT NULL, #enum枚举,只能选男或者女
deptno INT UNSIGNED,
hiredate DATE NOT NULL,
FOREIGN KEY (deptno) REFERENCES t_dept(deptno)
);
关联单词 references
外键约束的闭环问题
2.4 索引
数据排序的好处
CREATE TABLE表名称(
…,
INDEX索引名称,
…,
);
CREATE TABLE t message(
id INT UNSIGNED PRIMARY KEY,
content VARCHAR(200)NOT NULL,
type ENUM(“公告”,“通报”,“个人通知”)NOT NULL,
create_time TIMESTAMP NOT NULL,
INDEX idx_type (type)
);
如何添加与删除索引
CREATE INDEX 索引名称 ON 表名(字段);#增加索引
ALTER TABLE 表名称 ADD INDEX [索引名](字段);#增加索引
SHOW INDEX FROM 表名;#展示索引
DROP INDEX 索引名称 ON 表名;#删除索引
DROP INDEX idx_type ON t_message;
CREATE INDEX idx_type ON t message(type)i
SHOW INDEX FROM t message;
ALTER TABLE t message ADD INDEX idx_type(type);
索引的使用原则
3.1 数据库操作语言:普通查询
记录查询
SELECT * FROM t_emp;
SELECT empno, ename, sal FROM t_emp;
SELECT empno,sal * 12 as “income” FROM t_emp;
3.2 数据库操作语言:数据分页
数据分页
SELECT … FROM … LIMIT 起始位置,偏移量;
SELECT empno, ename FROM t_emp LIMIT 0,20;
数据分页的简写用法
如果LIMIT子句只有一个参数,它表示的是偏移量,起始值默认为0
SELECT empno, ename FROM t emp LIMIT 10;
SELECT empno, ename FROM t emp LIMIT 0, 10;
FROM -> SELECT -> LIMIT
3.3 数据操作语言:排序
结果集排序
SELECT FROM ORDER BY 列名 [ASC|DESC]
SELECT ename,sal from t_emp ORDER BY sal
排序关键字
SELECT ename, sal FROM t_emp order BY hiredate desc;
多个排序字段
SELECT empno, ename, sal hiredate FROM t emp ORDER BY sal desc,hiredate Asc;
排序+分页
FROM - SELECT - ORDER BY - LIMIT
3.4 数据操作语言:去除重复记录
去除重复记录
如果我们需要去除重复的数据,可以使用 DISTINCT关键字来实现
SELECT DISTINCT 字段 FROM … ;
SELECT DISTINCT job FROM t emp;
注意事项:使用 DISTINCT的 SELECT子句中只能查询一列数据
如果查询多列,去除重复记录就会失效。
DISTINCT关键字只能在 SELECT 子句中使用一次
3.5 数据操作语言:条件查询
条件查询
SELECT FROM WHERE条件[AND|OR]条件 …;
SELECT empno, ename, sal FRom t emp WHERE deptno=10 AND sal >=2000;
SELECT empno, ename FROM t emp WHERE ename = FORD AND sal >=2000
SELECT empno, ename FROM t emp Where deptno =10 AND sal >=2000
FROM -> WHERE- >seLECT -> ORDER BY ->LIMIT
4. 数据库的高级查询
4.1数据操作语言:聚合函数
什么是聚合函数
SELECT SUM(ename) FROM t emp; SELECT SUM(sal) FROM t emp; WHERE deptno In (10, 20);
SELECT MAX (comm) FROM t empi
SELECT MAX (sal+IFNULL(comm, 0)) FROM t emp WhERE deptno IN(10,20)
SELECT MAX (LENGTH (ename)) FROM t emp
SELECT MIN (empno) FROM t emp; SELECT MIN (hiredate) FRoM t empi
SELECT AVG(sal+IFNULL(comm)) FROM t empi
SELECT COUNT(*) FROM t emp;
SELECT COUNT(*)FROM t emp WhERE deptno IN (10, 20) AND sal>=2000 AND DATEDIFF(NOW(hiredate)/365>=15
SELECT COUNT (* FROM t emp WHERE hiredate>=1985-01-01 AND Sal>AVG(sal)
4.2数据操作语言:分组查询
为什么要分组?
4.3数据操作语言: HAVING子句
4.4 表连接查询
从多张表中提取数据
4.5 子查询
子查询简介 - 子查询是一种査询中嵌套查询的语句 - 查询底薪超过公司平均底薪的员工的信息 子查询的分类 - 子查询可以写在三个地方: WHERE子句、FROM子句、 SELECT子句,但是只有FROM子句子查询是最可取的 WHERE子查询 - 这种子查询最简单,最容易理解,但是却是效率很低的子查询 - 查询底薪超过公司平均底薪的员工的信息 FROM子查询 - 这种子查询只会执行一次,所以查询效率很高 SELECT-子查询 - 这种子查询每输出一条记录的时候都要执行一次,查询效率很低
单行子查询和多行子查询
- MySQL对数据的基本操作
5.1数据操作语言: INSERT语句
5.2 数据操作语言: UPDATE语句
5.5数据操作语言: DELECT 语句
- MySQL基本函数的使用
6.1 MySQL的函数
函数的定义:像编程语言利用函数封装业务功能一样,数据库也把一些复杂的功能封装到函数里,供使用者调用
6.2 数字函数
6.3 日期函数
6.4字符函数
字符函数
6.5条件函数
- MySQL的综合应用
7.1事务机制
避免写入直接操作数据文件
7.2 数据导入与导出
数据导出,导出的纯粹是业务数据
数据备份,备份的是数据文件、日志文件、索引文件等等
SQL文档
文本文档
mysqldump用来把业务数据导出成SQL文件,其中也包括了表结构
mysqldump -uroot-p[ no-data] 逻辑库> 路径
更多推荐




所有评论(0)