「MySQL」(一)基础

本文主要内容

  • 数据库的基本概念(什么是数据库?等)

  • MySQL数据分类以及8.0的安装配置

  • SQL语言/语句操作MySQL完成数据的存储+管理操作(增删改查)

目录

本文主要内容

MySQL数据分析

MySQL三大范式(面试篇)

第1节MySQL数据库基本概念

1.1 什么是数据库

1.2 数据分类

1.3 关系型数据库主要对象

第2节MySQL数据库

2.1 Mysql数据类型

2.2 安装MySQL_8.0

2.2.1 MySQL的启动与关闭

2.2.2 命令行登录数据库

第3节SQL语句操作详解

3.1 SQL通用语法

3.2 注释方式

3.3 DDL操作数据库

3.3.1 创建数据库

3.3.2 查看数据库

3.3.3 修改数据库

3.3.4 删除数据库

3.4 DDL操作数据表

3.4.1 创建表

3.4.2 创建表结构相同的新表

3.4.3 查看表结构信息

3.4.4 删除表

3.4.5 修改表

3.5 DML操作

3.5.1插入数据

3.5.2 更改数据

3.5.3 删除数据(删除行)

3.6 DQL查询表中操作

3.6.1 简单查询

3.6.2 条件查询


MySQL数据分析

数据分析师进行数据分析工作的前提条件:要有数据,往往从数据载体中获取,比如Excel,但是对于Excel这种数据载体,无法存储海量数据,有它的极限。

数据分析场景中经常接触另外的数据载体,数据库,它支持海量数据的存储(本身的数据组织形式+往往数据库软件支持分布式部署),并且提供高效的查询速度。

数据库:DataBase,简称DB,对于我们而言,所看到的数据库就是一个软件,它可以存储+管理数据,MySQL只是数据库中的一种,因为互联网领域MySQL应用非常广泛,数据分析领域经常涉及到MySQL。

MySQL三大范式(面试篇)

  • 第一范式(1NF) :字段不可分

  • 第二范式(2NF):有主键,非主键字段依赖于主键

  • 第三范式(3NF):非主键字段不能相互依赖

  • 解释:

    • 1NF:原子性,字段不可再分,否则就是非关系型数据库。

    • 2NF:唯—性,一个表只能说明一个事务。

    • 3NF:不存在传递依赖,每列都与主键有直接关系。

    • 存储过程是像编程语言中的函数一样,封装了我们的代码(PLSQL,T-SQL)

  • 卡卡笔记

这里其实就是说数据库要满足基本的数据范式(一般数据库的设计满足第三范式即可)

范式的好处是:使编程相对简单,数据量更小,更适合放入内存,更新更快,只需更新更少的数据。更少的冗余数据意味着更少地需要GROUP、DISTINCT之类的操作。不利之处是查询会变得更加复杂,查询时需要更多连接(JOIN)操作,一些可以复合索引的列由于范式化的需要被分布到了不同的表中,导致索引策略不佳。

我们日常输出的数据呈现清单报表的时候,又需要一定程度地反范式,通过增加冗余数据或通过分组数据来优化数据库读取性能的过程。

第1节MySQL数据库基本概念

1.1 什么是数据库

  • 数据库(DataBase) 是按照数据结构来组织、存储和管理数据的仓库。

  • 数据库是一个数据的集合。

  • 数据库管理系统(DBMS):是一款管理软件。

1.2 数据分类

  • 关系型数据库(RDB: Relationship DataBase) 关系型数据库可以使用SQL语言/SQL语句来操作。

    • 典型代表有:MySQL、Oracle、Microsoft SQL Server、Access、PostgreSQL、DB2等。

  • 非关系型数据库(NoSQL) 常规情况我们是不能使用SQL进行操作的,它不是关系模型非关系型数据库也被称为 NoSQL 数据库,NoSQL 并不是某个具体数据库,它泛指所有非关系型数据库。

    • 典型代表有:Hbase、MongoDB、Redis(k/v)、CouchDB等。

1.3 关系型数据库主要对象

  • 使用SQL操作数据库,其实就是操作数据库中的对象,可以类比Excel

    Excel:创建一个Excel 文档 —> 创建一个sheet —> 在sheet中进行数据操作 MySQL数据库:创建一个数据库 —> 创建一个数据表 —> 在表中记录数据

第2节MySQL数据库

2.1 Mysql数据类型

MySQL数据库中的每一条数据都有其数据类型,主要分为数值型,字符串型和日期时间型三个大类。

  • 1、数值类型(一般最常使用int)

TINYINT - 一个非常小的整数,可以带符号。如果是有符号,它允许的范围是从-128到127。如果是无符号,允许的范围是从0到255。

INT - 正常大小的整数,可以带符号。如果是有符号的,它允许的范围是从-2147483648到2147483647。如果是无符号,允许的范围是从0到4294967295。

BIGINT - 一个大的整数,可以带符号。如果有符号,允许范围为-9223372036854775808到9223372036854775807。如果无符号,允许的范围是从0到18446744073709551615。

FLOAT(M,D) - 不能使用无符号的浮点数字。可以定义显示长度(M)和小数位数(D)。这不是必需的,并且默认为10,2。其中2是小数的位数,10是数字(包括小数)的总数。float(5,2) 999.919

DOUBLE(M,D) - 不能使用无符号的双精度浮点数。可以定义显示长度(M)和小数位数(D)。 这不是必需的,默认为16,4,其中4是小数的位数。

  • 2、字符串类型

    • 短文本:char varchar

  • 注意:MySql中的 char类型与 varchar类型,区别在于:

    • char类型是固定长度的: 根据定义的字符串长度分配足够的空间。

    • varchar类型是可变长度的: 只使用字符串长度所需的空间

    • 比如:保存字符串 "abc"

 x char(10) 占用10个字节
 y varchar(10) 占用3个字节
  • 适用场景:

    • char类型适合存储 固定长度的字符串,比如 密码 ,性别一类

    • varchar类型适合存储 在一定范围内,有长度变化的字符串

    • 存储空间 查询效率 char 耗费空间 高 varchar 节省空间 不高

CHAR(M) - 固定长度的字符串是以长度为1到255之间个字符长度(例如:CHAR(5)),存储右空格填充到指定的长度。 限定长度不是必需的,它会默认为1。 char(5) abcde ab 内存空间会浪费,性别:男/女 char(1)(用于固定长度)

VARCHAR(M) - 可变长度的字符串是以长度为1到255之间字符数(高版本的MySQL超过255); 例如: VARCHAR(25). 创建VARCHAR类型字段时,必须定义长度。 5 10 12 节省内存空间abcde(用于可变长度)

BLOB 或 TEXT - 字段的最大长度是65535个字符。 BLOB是“二进制大对象”,并用来存储大的二进制数据,如图像或其他类型的文件。定义为TEXT文本字段还持有大量的数据; 两者之间的区别是,排序和比较上存储的数据,BLOB大小写敏感,而TEXT字段不区分大小写。不用指定BLOB或TEXT的长度。

  • 3、日期和时间类型

DATE - 以YYYY-MM-DD格式的日期,在1000-01-01和9999-12-31之间。 例如,1973年12月30日将被存储为1973-12-30。

DATETIME - 日期和时间组合以YYYY-MM-DD HH:MM:SS格式,在1000-01-01 00:00:00 到9999-12-31 23:59:59之间。例如,1973年12月30日下午3:30,会被存储为1973-12-30 15:30:00。

TIMESTAMP - 1970年1月1日午夜之间的时间戳,到2037的某个时候。这看起来像前面的DATETIME格式,无需只是数字之间的连字符; 1973年12月30日下午3点30分将被存储为19731230153000(YYYYMMDDHHMMSS)。

TIME - 存储时间在HH:MM:SS格式。

YEAR(M) - 以2位或4位数字格式来存储年份。如果长度指定为2(例如YEAR(2)),年份就可以为1970至2069(70〜69)。如果长度指定为4,年份范围是1901-2155,默认长度为4。

2.2 安装MySQL_8.0

  • 详见 MySQL安装文档

2.2.1 MySQL的启动与关闭

  • 以Windows服务启动MySQL

1)  右键此电脑 --> 管理

2)  选择服务--> 找到MySQL服务

3) 右键选择 --> 启动或停止

2.2.2 命令行登录数据库

MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号, 使用安装时设置的密码即可登录。

dos命令行进入MySQL安装目录下的bin目录,执行如下命令

命令说明
mysql -u 用户名 -p 密码使用指定用户名和密码登录当前计算机中的MySQL数据库
mysql -h 主机IP -u 用户名 -p 密码-h 指定IP 方式,进行 登录
  • 命令演示:

 mysql -uroot -p123456
 mysql -h127.0.0.1 -uroot -p123456 

  • 退出命令:

 exit 或者 quit

第3节SQL语句操作详解

  • Server端

  • Client端:Navicat,我们需要使用Client端写/发送SQL语句到Server端。

    使用Client端去操作MySQL数据库(数据的存储+管理),说白了就是数据的增删改查(CRUD)
    •  C: create 增加;R: Retrieve 获取/查询;U: update更新;D: delete删除

SQL语句按照功能,往往分成这么几类(流程):

  • 1.新建Excel —> sheet —> 填入数据

  • 2.新建数据库(DataBase)—> 新建表(Table) —> 插入数据/更新数据/删除数据

  • SQL(Structure Query Language)结构化查询语言

  • DDL(data definition language)数据库定义语言,主要是创建数据库,创建表、删除表、修改表结构(字段)等操作。(结构性操作,创建或修改数据库/表结构,不涉及具体存储的数据)

  • DML(data manipulation language)数据操作语言,针对table数据表中的数据的增删改三种操作。

  • DQL(data query language)数据查询语言 ,针对table数据表中的数据的查询操作,select操作。

  • DCL(data control language)数据控制语言,(了解就行) 事务的提交/回滚等如commit,revoke之类的,在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL。

3.1 SQL通用语法

  • SQL语句可以单行 或者 多行书写,以分号结尾 ; (Sqlyog中可以不用写分号)

  • 可以使用空格和缩进来增加语句的可读性。

  • MySql中使用SQL不区分大小写,一般关键字大写,数据库名、表名、列名小写。

3.2 注释方式

注释语法说明
--空格单行注释
#单行注释
/* */多行注释
#show databases;  单行注释
-- show databases; 单行注释
/*
    多行注释 
    show databases; 
*/

3.3 DDL操作数据库

3.3.1 创建数据库

create database 数据库名 character set 字符集;

创建指定名称的数据库,并且指定字符集(一般都指定utf8)

create database db1_1 character set utf8;

3.3.2 查看数据库

use/select/show 数据库名; (切换数据库)

use/select/show db1; --切换数据库直接加库名 
命令说明
use 数据库切换数据库
select database();查看当前正在使用的数据库
show databases;查看Mysql中都有哪些数据库
show create database 数据库名;查看一个数据库的定义信息

3.3.3 修改数据库

alter database 数据库名 character set 字符集;

alter DATABASE db1 character set utf8;

3.3.4 删除数据库

drop database 数据库名;

DROP DATABASE db1_1;

3.4 DDL操作数据表

一个数据库中可以n个表,表中又有字段(列)

在建表的时候就需要定义好字段(指定字段属性---->字段数据类型+字段长度等)

类型描述
int整型
double浮点型
varchar字符串型
date日期类型,给是为 yyyy-MM-dd ,只有年月日,没有时分秒

3.4.1 创建表

 CREATE TABLE 表名(
 字段名称1 字段类型(长度),
 字段名称2 字段类型    **注意: 最后一列不要加逗号**
 );

3.4.2 创建表结构相同的新表

 create table 新表名 like 旧表名;

3.4.3 查看表结构信息

命令说明
show tables;查看当前数据库中的所有表名
desc 表名;查看数据表的结构

3.4.4 删除表

命令说明
drop table 表名;删除表(从数据库中永久删除某一张表)
drop table if exists 表名;判断表是否存在, 存在的话就删除,不存在就不执行删除

3.4.5 修改表

命令说明
rename table 旧表名 to 新表名;修改表名
alter table 表名 add 字段名称 字段类型;向表中添加列,关键字 ADD
alter table 表名 modify 字段名称 字段类型;修改表中列的 数据类型或长度 , 关键字 MODIFY(只改字段类型)
alter table 表名 change 旧列名 新列名 类型(长度);修改列名称 , 关键字 CHANGE(字段名称和类型都能改)
alter table 表名 drop 列名;(删除列 ),关键字 DROP

3.5 DML操作

SQL中的DML 用于对表中的数据进行增删改操作

3.5.1插入数据

 insert into 表名 (字段名1,字段名2...) values(字段值1,字段值2...);

命令说明
如上图所示,一 一对应方式1: 插入全部字段名, 将所有字段值都写出来
insert into 表名 values(字段值1,字段值2···);方式2: 插入全部字段值,不写字段名
insert into 表名 (字段名) values(字段值);方式3:插入指定字段名和对应的值
insert into 表名 [字段名] select [字段名] from 另一个表方式4:把一个表的数据插入到另外一个表中(见模块三4.2数据预处理)

注意

1)值与字段必须要对应,个数相同&数据类型相同;

2)值的数据大小,必须在字段指定的长度范围内;

3)varchar char date类型的值必须使用单/双引号包裹;(就用单引号,在所有SQL里通用)

4)如果要插入空值,可以忽略不写,或者插入null;

5) 如果插入指定字段的值,必须要上写列名。

 

3.5.2 更改数据

  • 语法格式1:不带条件的修改

     update 表名 set 列名 = 值
     -- 这里的值可以是一个具体值,也可以是一个字段(见模块三4.2数据预处理)
  • 语法格式2:带条件的修改

     update 表名 set 列名 = 值 [where 条件表达式:字段名 = 值 ]
    • 三种用法

3.5.3 删除数据(删除行)

命令说明
delete from 表名;语法格式1:删除所有数据
truncate table 表名;语法格式2:删除所有数据
delete from 表名 [where 字段名 = 值];语法格式3:指定条件 删除数据

  • 如果要删除表中的所有数据,有两种做法:

  1. delete from 表名; 不推荐. 有多少条记录 就执行多少次删除操作. 效率低

  2. truncate table 表名: 推荐. 先删除整张表, 然后再重新创建一张一模一样的表. 效率高 当一个表中条数非常多,又要做删除动作的时候,如果用delete会很慢,那我们可以使用 truncate

3.6 DQL查询表中操作

查询不会对数据库中的数据进行修改。只是一种显示数据的方式 SELECT。

3.6.1 简单查询

  • 执行顺序

    FROM --> WHERE --> GROUP BY --> HAVING --> SELECT --> ORDER BY

  • 语法格式

 select 列名 from 表名

①查询所有数据

 SELECT * FROM 表名; -- 使用 * 表示所有列

②查询个别字段(个别列中所有行的记录

 SELECT 字段名1,字段名2 FROM 表名; -- 字段名英文逗号连接

③别名查询,使用关键字 as(可以给查询出来的结果表名、列名改名,as可省略

 SELECT 字段名 '别名' FROM 表名 '别名'; 

④结果去重使用关键字 distinct

 SELECT DISTINCT 列名 FROM 表名;-- 使用distinct 关键字,去掉重复部门信息

⑤运算查询 (查询结果参与运算)

--需求: 将所有员工的工资 +1000 元进行显示
SELECT ename , salary + 1000 FROM emp;

3.6.2 条件查询

  • 语法结构(where关键词

     select 列名 from 表名 where 条件表达式
     -- 先取出表中的每条数据,满足条件的数据就返回,不满足的就过滤掉

运算符(where必须有)

  • 比较运算符

  • 逻辑运算符​​​​​​​

  • 模糊查询通配符

     

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

满眼凄迷i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值