MySQL

文章目录

  • 1.Mysql
    • 1.1 为什么学习数据库
    • 1.2 什么是数据库
    • 1.3 数据库分类
    • 1.4 Mysql简介
    • 1.5 安装Mysql
    • 1.6 安装Sqlyog
    • 1.7 连接数据库
  • 2.操作数据库
    • 2.1 操作数据库
    • 2.2 数据库的列类型
    • 2.3 数据库字段属性(重点)
    • 2.4 创建数据库表(重点)
    • 2.5 数据表的类型
    • 2.6 修改删除表
  • 3.Mysql数据管理
    • 3.1 外键(了解)
    • 3.2 DML语言(记住)
    • 3.3 添加
    • 3.4 修改
    • 3.5 删除
  • 4. DQL查询数据(重点)
    • 4.1 DQL
    • 4.2 指定查询字段
    • 4.3 where 条件子句
    • 4.4 联表查询
    • 4.5 排序和分页
    • 4.6 子查询
    • 4.7 分组和过滤
  • 5.Mysql函数
    • 5.1 常用函数
    • 5.2 聚合函数(重要)
    • 5.3 数据库级别的MD5加密
  • 6.事务
  • 7.索引
    • 7.1 索引的分类
    • 7.2 测试索引
    • 7.3 索引原则
  • 8.权限管理和数据库备份
    • 8.1 用户管理
    • 8.2 Mysql备份
  • 9.规范数据库设计
    • 9.1 为什么设计?
    • 9.2 三大范式
  • 10.JDBC(重点)
    • 10.1 数据库驱动
    • 10.2 JDBC
    • 10.3 JDBC程序

1.Mysql

1.1 为什么学习数据库

  1. 岗位需求
  2. 大数据时代
  3. 被迫需求:存数据
  4. 数据库是所有软件体系中最核心的存在

1.2 什么是数据库

数据库(DB,DataBase)
概念:数据仓库,软件,安装在操作系统上,SQL可以存储大量的数据
作用:存储数据,管理数据

1.3 数据库分类

关系型数据库L(SQL)

  • Mysql,Oracle,Sql Server,DB2,SQLlite
  • 通过表和表之间,行和列之间的关系进行数据的存储,学员信息表等
    非关系型数据库(NoSQL)
  • Redis,MongDB
  • 非关系型数据库,对象存储,通过对象的自身属性来决定

DBMS(数据库管理系统)

  • 数据库的管理软件,科学有效的管理我们的数据,维护和管理数据
  • Mysql,数据库管理系统

1.4 Mysql简介

Mysql是一个关系型数据库管理系统

前属于MysqlAB公司,现属于Oracle旗下产品

Mysql是最好的RDBMS应用软件之一,开源的数据库软件

体积小、速度快、成本低

1.5 安装Mysql

1.6 安装Sqlyog

1.7 连接数据库

2.操作数据库

操作数据库----操作数据库中的表-----操作数据库中表的数据

mysql关键字不区分大小写

2.1 操作数据库

1.创建数据库

Create Database [if not exists] student

2.删除数据库

drop database [if exists] student

3.使用数据库

use student

4.查看数据库

show databases

2.2 数据库的列类型

数值:

  • tinyint 1个字节
  • smallint 2个字节
  • mediumint 3个字节
  • int 4个字节
  • bigint 8个字节
  • float 4个字节
  • double 8个字节
  • decimal

字符串:

  • char 字符串0-255
  • varchar 可变字符串 0-65535
  • tinytext
  • text

时间日期:

  • date YYYY-MM-DD,日期格式
  • time HH:mm:ss 时间格式
  • datetime YYYY-MM-DD HH:mm:ss 最常用
  • timestamp 时间戳,1970.1.1到现在的毫秒数,也较为常用
  • year 年份表示

null:

  • 没有值
  • 不要使用

2.3 数据库字段属性(重点)

Unsigned:

  • 无符号的整数
  • 声明了该列不能为负数

zerofill:

  • 0填充
  • 不足的位数,使用0来填充

自增:

  • 通常理解为自增,自动在上一条记录的基础上+1
  • 通常用来设计唯一的主键 index ,必须是整数类型
  • 可以自定义设计主键自增的起始值和步长

非空:NULL not null

  • 假设设置为not null,如果不给他赋值,就会报错
  • 如果不填写,默认就是null

默认:

  • 设置默认的值
  • sex,默认为男 如果不指定,就会有默认

2.4 创建数据库表(重点)

-- 目标:创建一个school数据库
-- 创建学生表(列,字段) 使用SQL创建
-- 学号int 登陆密码varchar(20) 姓名、性别varchar(2),出生日期(datatime),家庭住址,email

-- 注意点,使用英文(),表的名称和字段尽量使用·· 括起来
-- AUTO_INCREMENT 自增
-- 字符串使用,单引号括起来
-- 所有的语句后面加,
-- PRIMARY KEY主键,一般一个表只有一个唯一的主键!
CREATE TABLE IF NOT EXISTS `student`(
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
	`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
	`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭地址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

格式:

Create table [if not exists] `表名``字段名` 列类型 [属性] [索引] [注释],[表类型][字符集设置][注释]

常用命令:

show create database school --查看创建数据库的语句
show create table student -- 查看student数据表的定义语句
desc student --显示表的结构

2.5 数据表的类型

MYISAM INNODB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为2倍

常规操作:

  • MYISAM 节约空间,速度较块
  • INNODB 安全性高,事物的处理,多表多用户操作

2.6 修改删除表

修改:

-- 修改表名 alter table 旧表名 rename as 新表名
alter table teacher rename as teacher1
-- 增加表的字段 alter table 表名 add 字段名 列属性
alter table teacher1 add age int(11)
-- 修改表的字段(重命名,修改约束)
-- alter table 表名 modify 字段名 列属性[]
alter table teacher1 modify age varchar (11) --修改约束
-- alter table 表名 change 旧名字 新名字 列属性[]
alter table teacher1 change age age1 int(1) --字段约束名
-- 删除表的字段
-- alter table 表名 drop 字段名
alter table teacher1 drop age1

删除:

-- 删除表(如果表存在再删除)
drop table if exists teacher1

注意点:

  • ``字段名用这个
  • 注释–
  • sql对关键字大小写不敏感
  • 所有符号全部用英文

3.Mysql数据管理

3.1 外键(了解)

3.2 DML语言(记住)

数据库意义:数据存储,数据管理

DML语言:数据操作语言

  • Insert
  • update
  • delete

3.3 添加

insert:

insert into 表名([字段1,字段2,字段3]) values('值1'),('值2'),('值3')

注意:

  • 字段和字段之间使用英文逗号隔开
  • 字段可以省略,但是后面的值要一一对应,不能少
  • 可以同时插入多个数据,values后面的值需要使用,隔开即可

3.4 修改

update:

update 表名 set colnum = value where [条件]

条件:where 子句,运算符 id等于某个值或在某个区间
注意:

  • colnum是数据库的列
  • 条件,筛选的条件,如果没有指定,则会修改所有的列
  • value,是一个具体的值,也可以是一个变量
  • 多个设置的属性之间,使用英文逗号隔开

3.5 删除

delete:

delete from 表名 [where 条件]

4. DQL查询数据(重点)

4.1 DQL

(Data Query Language:数据库查询语言)

  • 所有的查询操作都用 select
  • 简单复杂查询都用
  • 数据库中最核心的语言,最重要的语句
  • 使用频率最高

4.2 指定查询字段

-- 查询全部的学生
SELECT * FROM student
-- 查询指定字段
SELECT `studentno`,`studentname` FROM student 
-- 别名 as
SELECT `studentno` AS 学号,`studentname` AS 姓名 FROM student 
-- 函数 Concat(a,b)
SELECT CONCAT('姓名:',studentname) AS 新名字 FROM student

语法:

Select 字段 from

去重:distinct
去除select查询结果重复的数据

-- 查询全部考试成绩
select * from result 
-- 查询那些同学参加
select `studentno` from result
-- 去重
select distinct `studentno` from result
 

4.3 where 条件子句

作用:检索数据中符合条件的值

搜索的条件由一个或多个表达式组成,结果 布尔值

逻辑运算符
MySQL_第1张图片
模糊查询:比较运算符
MySQL_第2张图片

4.4 联表查询

MySQL_第3张图片

4.5 排序和分页

排序:asc(升),desc(降)
分页: limit(查询起始下标,pageSize)

4.6 子查询

嵌套使用

4.7 分组和过滤

主要就是Having

5.Mysql函数

5.1 常用函数

5.2 聚合函数(重要)

MySQL_第4张图片

5.3 数据库级别的MD5加密

MD5:主要增强算法复杂性和不可逆性
MD5不可逆,具体的值和MD5是一样的
MD5破解网站的原理,背后有一个字典,MD5加密后的值

6.事务

事务原则:ACID 原子性,一致性,隔离性,持久性

原子性(Atomicity)
要么成功要么失败

一致性(Consistency)
事务前后的数据完整性要保证一致

**持久性(Durability)**事务提交
事务一旦提交则不可逆,被持久化到数据库中

隔离性(Isolation)
事物的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间相互隔离

隔离导致:
脏读:指一个事务读取了另外一个事务未提交的数据
不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同
虚读(幻读):旨在一个事务中读取到了别的事务插入的数据,导致前后读取结果不一致

-- mysql是默认开启事务自动提交的
SET autocommit = 0 -- 关闭
SET autocommit = 1 -- 开启(默认)
-- 手动处理事务
SET autocommit = 0 -- 关闭自动提交
-- 事务开启
START TRANSACTION -- 标记一个事务的开始,从这个之后的sql都在同一个事务中

INSERT xx
INSERT xx
-- 提交:持久化(成功)
COMMIT 
-- 回滚:回到原来的样子(失败)
ROLLBACK

-- 事务结束
SET autocommit = 1 -- 开启自动提交

7.索引

Mysql官方定义:索引是帮助Mysql高校获取数据的数据结构

7.1 索引的分类

在一个表中,逐渐索引只能有一个,唯一索引可以有多个

  • 主键索引(Primary key)
    - 唯一的标识,逐渐不可重复,只能由一个列作为主键
  • 唯一索引(Unique key)
    - 避免重复的列出现,唯一索引可以重复,多个列都可以标识 唯一索引
  • 常规索引(key/index)
    - 默认的,index,key关键字来设置
  • 全文索引(fulltext)
    - 在特定的数据库引擎下才有
    - 快速定位数据

7.2 测试索引

索引在小数据量的情况下作用不大,但在数据量的时候很有用

7.3 索引原则

  • 索引不是越多越好
  • 不要对进程变动数据加索引
  • 小数据量的表不需要加索引
  • 索引一般加在常用来查询的字段上

索引的数据结构

Hash类型的索引
Btree:InnoDB的默认数据结构

8.权限管理和数据库备份

8.1 用户管理

SQL yog可视化管理

SQL命令操作

用户表:mysql.user
本质:读这张表进行增删改查

8.2 Mysql备份

为什么备份?

  • 保证重要数据不丢失
  • 数据迁移
    Mysql数据库备份的方式
  • 直接拷贝物理文件
  • 在可视化工具中手动导出
  • 使用命令行mysqldump命令导出
mysqldump -h 主机 -u 用户名 -p 密码 数据库 表名 物理位置

9.规范数据库设计

9.1 为什么设计?

糟糕的数据库设计:

  • 数据冗余,浪费空间
  • 数据库插入和删除都会麻烦、异常
  • 程序的性能差
    良好的数据库设计:
  • 节省内存空间
  • 保证数据库的完整性
  • 方便开发系统

软件开发中关于数据库的设计

  • 分析需求:分析业务和需要处理的数据库的需求
  • 概要设计:设计关系图E-R图

9.2 三大范式

为什么要数据规范化?

  • 信息重复
  • 更新异常
  • 插入异常
    - 无法正常显示信息
  • 删除异常
    - 丢失有效的信息

三大范式

第一范式(1NF)
原子性:保证每一列不可再分
第二范式(2NF)
前提:满足第一范式,每张表只描述一件事情
第三范式(3NF)
前提:满足第一范式和第二范式
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能直接相关

关联查询的表不能超过三张表

10.JDBC(重点)

10.1 数据库驱动

驱动:声卡、显卡、数据库

10.2 JDBC

SUN公司为了简化开发人员对数据库的操作,提供了一个Java操作数据库的规范,称为JDBC

java.sql
javax.sql
mysql-connector-java.jar包

10.3 JDBC程序

  1. 加载驱动
  2. 用户信息和url
  3. 连接成功,数据库对象 Connection代表数据库
  4. 执行SQL对象 Statement 执行sql的对象
  5. 执行SQL的对象去执行SQL 查看返回结果
  6. 释放连接

你可能感兴趣的:(mysql,数据库)