link方式(自定义方式):
42小时
装机必备
MySQL GUI Tools
phpMyAdmin
SQLYog
Navicat for MySQL
文件:
mysql ZIP Archive
是压缩版本,需要自己配置
mysql MSI Installer
是安装版本,安装过程中自动配置
create database mybatis_test;
use mybatis_test;
1 | drop table if exists user; |
数据库
一、数据库的好处
1、可以持久化数据到本地
2、结构化查询
二、数据库的常见概念★
1、DB:数据库,存储数据的容器
2、DBMS: 数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB
3、SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言
三、数据库存储数据的特点
1、数据存放到表中,然后表再放到库中
2、一个库中可以有多张表,每张表具有唯- -的表名用来标识自己
3、表中有一-个或多个列,列又称为“字段”,相当于java中“属性”
4、表中的每- -行数据,相当于java中“对象”
四、常见的数据库管理系统
mysq1、oracle、db2、sql server
MySQL数据库相关概念
一、MySQL的背景
前身属于瑞典的一家公司,MySQL AB,08年被sun公司收购,09年sun被oracle收购
二、MySQL的优点
1、开源、免费、成本低
2、性能高、移植性也好
3、体积小,便于安装
三、MySQL的安装
属于c/s架构的软件,一般来讲安装服务端
版本:
企业版
社区版
version:
5.5/5.6/5.7/8.0
五、DQL语言的学习(数据查询语言,data query language)
基础查询
条件查询
排序查询
常见函数
分组函数
分组查询
连接查询
子查询
分页查询
union联合查询
六、DML语言的学习(数据操纵语言,Data Manipulation Language)
插入语句
修改语句
删除语句
七、DDL语言的学习(数据定义语言,Data Definition Language)
库和表的管理
常见数据类型介绍
常见约束
八、TCL语言的学习(事务控制语言,Transaction Control Language)
事务和事务处理
九、视图的讲解
十、存储过程和函数
DCL(数据控制语言data manipulation language)
打开/关闭服务及登录
打开/关闭
方式一:命令行提示符(用管理员身份打开)
语法:
net start MySQL1997
net stop 服务名
方式二:计算机- – 右击-管理- -门服务
MySQL服务的登录和退出
登录:
mysq1[ h 主机名-P端口号] -u 用户名-p密码|
退出:
exi t或ctr1+C
语法:
mysql -h localhost -P 3306 -u root -p
简写:mysql -u root -p root
yws1997
环境变量配置
配置环境变量
将安装的bin路径添加到环境变量
mysql的基本语法
1 | 查看当前所有数据库 |
MySQL的语法规范
1.不区分大小写,但建议关键字大写,表名、列名小写
2.每条命令最好用分号结尾
3.每条命令根据需要,可以进行缩进或换行
4.注释
单行注释: #注释文字
单行注释: – 注释文字
多行注释: /注释文字/
图形用户界面
SQLyog-10.Q.0-0客户端 /小海豚
mysql-5.5.15-win32.msi
Navicat Premium_11.0.10.exe /猫
Name: any
key: dd987f34-f358-4894-bd0f-21f3f04be9c1
Name: any
key: dd987f34-f358-4894-bd0f-21f3f04be9c1
SQLyog
名字:mysql01
F9显示运行结果
mysql查询常量、表达式
DQL语言
基础查询
语法:
select 查询列表 from 表名;
查询表中所有字段(查询结果与表中一样)
select * from employees;
类似于:System.out.println(打印东西)
特点:
1、查询列表可以是:表中的字段、常量值、表达式、函数
2、查询结果是一个虚拟的表格
查询常量值
select 常量;
字符(MySQL没有字符串概念)
字符用 单引号
查询表达式
select 表达式;
select 100*100;
select 100%98;
查询函数(方法)
select version();
1 | 起别名 |
条件查询
1 | 语法: |
模糊查询:
1 | like |
排序查询
1 | 语法: select 查询列表 from 表 【where 筛选条件】 order by 排序列表 【asc|desc】 |
常见函数
1 | 概念:类似与java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名 |
分组函数
1 | 功能:用作统计使用,又称为聚合函数或统计函数或组函数 |
连接查询
1 | 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 |
一、sql92标准
1 | 1、等值连接 |
与MySQL的第一次亲密接触
077作业
CTRL+k+s
二、sql99语法
1 | 语法: |
1 | #sq192和sql99pk |
子查询
1 | 含义: |
分页查询
1 | 应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求 |
四、SQL99语法
1 | 连接查询 |
DML语言
1 | 数据操作语言: |
一、插入语句
1 | 方式一:经典的插入 |
二、修改语句
1 | 1.修改单表的记录★ |
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
三、删除语句
1 | 方式一: delete |
DDL语言
1 | 数据定义语言 |
一、库的管理
1 | 1、库的创建 |
二、表的管理
1 | 1.表的创建 |
三、常见数据类型介绍
1 | 数值型: |
特点:
①如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned
②如果插入的数值超出了整型的范围,会报out of range异常, 并且插入临界值
③如果不设置长度,会有默认的长度长度代表了显示的最大宽度,如果不够会用0在左边充,但必须搭配zerofill使用!
#二、小数
分类:
1.浮点型
float (M, D)
double (M, D)
2.定点型
dec(M,D)
decimal (M, D)
特点:
①
M: 整数部位+小数部位
D:小数部位
如果超过范围,则插入临界值
②
M和D都可以省略
如果是decimal,则M默认为10,D默认为0
如果是float和double,则会根据插入的数值的精度来决定精度
③
定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用
原则:
所选择的类型越简单越好,能保存数值的类型越小越好
三、字符型
较短的文本:
char
varchar
较长的文本:
text
blob (较大的二进制)
其他:
binary和varbinary用于保存较短的二进制
enum用于保存枚举
set用于保存集合
特点:
写法 | M的意思 | 特点 | 空间的耗费 | 效率 | |
---|---|---|---|---|---|
char | char(M) | 最大的字符数,可以省略,默认为1 | 固定长度的字符 | 比较耗费 | 低 |
varchar | varchar (M) | 最大的字符数,不可以省略 | 可变长度的字符 | 比较节省 | 低 |
四、日期型
分类:
date只保存日期
time 只保存时间
year 只保存年
datetime保存日期+时间
timestamp保存日期+时间
1 | 特点: |
124复习
四、常见约束
分类:
六大约束
NOT NULL:
非空,用于保证该字段的值不能为空 如姓名、学号等
DEFAULT:
默认,用于保证该字段有默认值 比如性别
PRIMARY KEY:
主键,用于保证该字段的值具有唯一-性,并且非空 比如学号、员工编号等
UNIQUE:
唯一,用于保证该字段的值具有唯一-性,可以为空 比如座位号
CHECK:
检查约束[mysq1中不支持] 比如年龄、性别
FOREIGN KEY:
外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值在从表添加外键约束,用于引用主表中某列的值 比如学生表的专业编号,员工表的部门编号,员工表的工种编号
CREATE TABLE 表名(字段名 字段类型 约束);
功能 | 列子 | |||||||
---|---|---|---|---|---|---|---|---|
NOT NULL: | 非空 | 用于保证该字段的值不能为空 | 姓名、学号 | |||||
DEFAULT: | 默认 | 用于保证该字段有默认值 | 性别 | |||||
PRIMARY KEY: | 主键 | 用于保证该字段的值具有唯一性 | 学号、员工编号 | |||||
UNIQUE: | 唯一 | 用于保证该字段的值具有唯一性 | 座位号 | |||||
CHECK: | 检查约束 | [mysq1中不支持] | 年龄、性别 | |||||
FOREIGN KEY: | 外键 | 用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值在从表添加外键约束,用于引用主表中某列的值 | 学生表的专业编号,员工表的部门编号,员工表的工种编号 | |||||
|
主键和唯一对比(面试)
| |保证唯一性|是否允许为空|一个表中可以有多少个|是否允许组合|
| —— | —— | —— | ——| ——|
| 主键 | √ | × | 至少有1个|√ |
| 唯一 | √ | √ | 可以有多个| √ |
外键:
1、要求在从表设置外键关系
2、从表的外键列的类型和主表的关联列的类型要求一 致或兼容,名称无要求
3、主表的关联列必须是一-个key (一般是主键或唯一)
4、插入数据时,先插入主表,再插入从表,删除数据时,先删除从表,再删除主表
1 | ``` |
#查看 表 中都所有索引,包括主键、外键、唯一
show index from 表名;
ШЯДФФФФФФФГШЯДФФФФФФФГЯШКЙДУГБВСВДГСДОАСЧИЧФСИЧЕУ8ЯШГБФШОААЧДСУЧГУАЙ
1 | 2.添加表级约束 |
1、添加列级约束
alter table 表名modify column 字段名字段类型新约束;
2、添加表级约束
alter table 表名add [constraint 约束名] 约束类型(字段名) [|外键的引用] ;
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo (
id INT,
stuname VARCHAR(20) ,
gender CHAR(1) ,
seat INT,
age INT,
majorid INT)
DESC stuinfo;
#1.添加非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
#2.添加默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
#3.添加主键
#①列级约束
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
#②表级约束
ALTER TABLE stuinfo ADD PRIMARY KEY (id) ;
#4.添加唯一
#①列级约束
ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;
#②表级约束
ALTER TABLE stuinfo ADD UNIQUE (seat) ;
#5.添加外键
ALTER TABLE stuinfo ADD DONSTRAINT fk_ stuinfo major FOREIGN KEY (majorid) REFERENCES major (id);
1 | #三、修改表时删除约束 |
#1.删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
#2.删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT ;
#3.删除主键
ALTER TABLE stuinfo DROP PRIMARY KEY;
#4.删除唯-
ALTER TABLE stuinfo DROP INDEX seat;
#5.删除外键
ALTER TABLE stuinfo DROP FOREIGN KEY majorid;
1 |
|
又称为自增长列(auto_increment)
含义: 可以不用 手动的插入值,系统提供默认的序列值
#一、创建表时设置标识列
特点:
1、标识列必须和主键搭配吗?不一-定,但要求是一个key
2、一个表可以有几个标识列?至多- -个!
3、标识列的类型只能是数值型
4、标识列可以通过SET auto_increment_increment=3;设置步长
可以通过手动插入值,设置起始值
#二、修改表时设置标识列
ALTER TABLE tab_identity MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;
#三、修改表时删除标识列
ALTERT TABLE tab_identity MODIFY COLUMN id INT;
➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢➢
🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡🗡
→ → → → → → → → → → → → → → → → → → → → → → → →
1 | # TCL语言 |
Transaction Control Language 事务控制语言
事务:
一个或一组sq1语句组成一-个执行单元,这个执行单元要么全部执行,要么全部不执行。
事务:事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一且执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态;如果单元中的所有SQL语句均执行成功,则事物被顺利执行。
MySQL中的存储引擎(InnoDB/DEFAULT/MyISAM/MEMORY)
1、概念:在mysq1中的数据用各种不同的技术存储在文件(或内存)中
2、通过show engines; 来查看mysql支持的存储引擎。
3、在mysql中用的最多的存储引擎有: innodb,myisam , memory等。其中innodb支持事务,而myisam、memory等不支持事务
事务的ACID(acid)属性(面试)
➢1.原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
➢2.一致性( Consistency )
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
➢3.隔离性( Isolation)
事务的隔离性是指一个事务的执行不能被其他事务干扰,即一事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
➢4.持久性( Durability )
持久性是指-一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的他操你和数据库故障不应该对其有任何影响
显式事务:事务具有明显的开启和结束的标记
前提:必须先设置自动提交功能为禁用
1 | 步骤1:开启事务 |
#2.演示事务对于delete和truncate的处理的区别
1 | 演示delete |
#3.演示savepoint的使用
SET autocommit=0;
START TRANSACTION;
DELETE FROM account WHERE id=25;
SAVEPOINT a;#设置保存点
DELETE FROM account WHERE id=28;
ROLLBACK TO a;# 回滚到保存点
数据库的隔离级别
事务的隔离级别:
| | 脏读 |不可重复读| 幻读 |
| —— | —— | —— | ——|
|ead uncommitted| √ | √ | √ |
|read committed| × | √ | √ |
|repeatable read| × | × | √ |
|serializable | × | × | × |
mysq1中默认第三个隔离级别repeatable read
oracle中默认第二个隔离级别read committed
查看隔离级别
select @@tx_ isolation;
设置隔离级别
set sessionlglobal transaction isolation level
对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发问题:
➢脏读:对于两个事务T1,T2, T1读取了已经被T2更新但还没有被提交的字段.之后,若T2回滚,T1读取的内容就是临时且无效的.
➢不可重复读:对于两个事务T1, T2,T1读取了一个字段,然后T2更新了该字段.之后, T1再次读取同一个字段,值就不同了,
➢幻读:对于两个事务T1, T2, T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行.之后,如果T1再次读取同一个表,就会多出几行.
数据库事务的隔离性:数据库系统必须具有隔离并发运行各个事务的能力,使它们不会相互影响,避免各种并发问题.一个事务与其他事务隔离的程度称为隔离级别.数据库规定了多种事务隔离级别,不同隔离级别对应不同的干扰程度,隔离级别越高,数据一致性就越好,但并发性越弱.
在MySQL中设置隔离级别
每启动一个mysq|程序,就会获得一个单独的数据库连接.每个数据库连接都有一个全局变量@@tx_isolation,表示当前的事务隔离级别.
查看当前的隔离级别: SELECT @@tx_ isolation;
设置当前mySQL连接的隔离级别:
➢set transaction isolation level read committed;
设置数据库系统的全局的隔离级别:
➢set global transaction isolation level read committed;
视图
含义:虚拟表,和普通表一样使用
mysq15.1版本出现的新特性,是通过表动态生成的数据
MySQL从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果
应用场景:
多个地方用到同样的查询结果
该查询结果使用的sql语句较复杂
好处:
●重用sq|语句
●简化复杂的sql操作,不必知道它的查询细节
●保护数据,提高安全性
视图与表的比较
1 | 创建语法的关键字 是否实际占用物理空间 使用 |
#案例:查询姓张的学生名和专业名
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.’majorid’= m.’id’
WHERE s.’stuname’ LIKE ‘张%’;
CREATE VIEW v1
AS
SELECT stuname, majorname
FROM stuinfo s
INNER JOIN major m ON s.’majorid’= m.’id’ ;
SELECT*FROM v1 WHERE stuname LIKE ‘张%’ ;
1 | ## 一、创建视图 |
二、视图的修改
1 | 方式一: |
三、删除视图
语法: drop view视图名,视图名,…;
四、查看视图
DESC myv3;
SHOW CREATE VIEW myv3;
五、视图更新
1 | #1.插入 |
148复习
1 | # 变量 |
存储过程
1 | 存储过程和函数:类似于java中的方法 |
函数
1 | 含义:一组预先编译好的sQL语句的集合,理解成批处理语句 |
一、创建语法
1 | CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型 |
二、调用语法
1 | SELECT函数名(参数列表) |
三、查看函数
1 | SHOW CREATE FUNQTION myf3; |
四、删除函数
1 | DROP FUNCTION myf3; |
流程控制结构
1 | 顺序结构:程序从上往下依次执行 |
一、分支结构
1.if函数
1 | 功能:实现简单的双分支 |
2.case结构
1 | 情况1:类似于java中的switch语句, 一般用于实现等值判断 |
3.if结构
1 | 功能:实现多重分支 |
二、循环结构
1 | 分类: |
1.while
1 | 语法: |
#2.1oop
1 | 语法: |
#3. repeat
1 | 语法: |
178小结
- 本文作者: wenshuaiyang
- 本文链接: http://yoursite.com/2019/08/24/MySQL基础篇/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!