MySQL1

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: MySQL

1 引言

1.1 现有的数据存储方式
  • Java程序存储数据(变量、对象、数组、集合),数据保存在内存中,属于瞬时状态存储。
  • 文件(File)存储数据,保存在硬盘上,属于持久状态存储。
1.2 没有数据类型的区分。

•存储数据量级较小。

•没有访问安全限制。

•没有备份、恢复机制。2 以上存储方式存在的缺点

2 数据库

2.1 概念

数据库是“按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。

2.2 数据库的分类
  • 网状结构数据库:美国通用电气公司IDS (Integrated Data Store),以节点形式存储和访问。
  • 层次结构数据库:IBM公司IMS (Information Management System)定向有序的树状结构实现存储和访问。
  • 关系结构数据库:Oracle、DB2、MySQL、SQL Server,以表格(Table)存储,多表间建立关联关系,通过分类、合并、连接、选 取等运算实现访问。
  • 非关系型数据库:ElastecSearch、MongoDB、Redis,多数使用哈希表,表中以键值(key-value)的方式实现特定的键和一个指针 指向的特定数据。

3 数据库管理系统

3.1 概念

数据库管理系统(DataBase Management System, DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。

3.2 常见数据库管理系统

• Oracle:被认为是业界目前比较成功的关系型数据库管理系统。Oracle数据库可以运行在UNIX、Windows等主流操作系统平台,完 全支持所有的工业标准,并获得最高级别的ISO标准安全性认证。


• DB2:旧M公司的产品,DB2数据库系统采用多进程多线索体系结构,其功能足以满足大中公司的需要,并可灵活地服务于中小型 电子商务解决方案。


• SQLServer: Microsoft公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点。


• SQLLite:应用在手机端的数据库。

4 MySQL

4.1 简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司幵发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统 之一,在WEB应用方面,MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。

4.2 访问与下载

官方网站:https://www.mysql.com/

下载地址:https://dev.mysql.com/downloads/mysql/

4.3 安装
4.4 卸载

•控制台卸载。

•找到mysql的安装目录进行删除。

• program data 删除 mysql

注意:如果卸载后,如有未删除的MySQL服务,可采用手动删除。

以管理员身份打开命令行,输入sc delete MySQL57回车。

4.5 配置环境变量

• Windows

  • 创建MYSQLJHOME: C:\Program Files\MySQL\MySQL Server 5.7
  • 追加PATH: %MYSQL_HOME%\bin;

• MacOS / Linux

  • 终端中输入cd〜进入目录,并检查.bash_profile是否存在,有则追加,无则创建
  • 创建文件 touch .bash_profile
  • 打开文件 open .bash_profile
  • 输入export PATH=${PATH}:/usr/local/mysql/bin 保存并退出终端
4.6 MySQL目录结构

核心文件介绍

文件夹名称 内容
bin 命令文件
lib 库文件
include 头文件
Share 字符集、语言等信息
4.7 MySQL配置文件

在MySQL安装目录中找到my.ini文件,并打开my.ini文件查看几个常用配置参数

参数 描述
defau lt-character-set 客户端默认字符集
chara cte r-set-server 服务器端默认字符集
port 客户端和服务器端的端口号
default-storage-engine MySQL默认存储引擎INNODB

5 SQL语言

5.1 概念

SQL (Structured Query Language)结构化查询语言,用于存取数据、更新、查询和管理关系数据库系统的程序设计语言。

经验:通常执行对数据库的“增删改查”,简称C (Create) R (Read) U (Update) D (Delete)

5.2 MySQL应用

对于数据库的操作,需要在进入MySQL环境下进行指令输入,并在一句指令的末尾使用;结束

5.3 基本命令

查看MySQL中所有数据库

mysql> SHOW DATABASES; #显示当前MySQL中包含的所有数据库
数据库名称 描述
i nformation_schema 信息数据库,其中保存着关于所有数据库的信息(元数据)。元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。
mysql 核心数据库,主要负责存储数据库的用户、权限设置、关键字等, 以及需要使用的控制和管理信息,不可以删除。
performance_schema 性能优化的数据库,MySQL5.5版本中新增的一个性能优化的引擎。
sys 系统数据库,MySQL5.7版本中新增的可以快速的了解元数据信息的系统库 便于发现数据库的多样信息,解决性能瓶颈问题。

创建自定义数据库

mysql> CREATE DATABASE mydbl ; #创建mydb数据库
mysql> CREATE DATABASE mydb2 CHARACTER SET gbk; #创建数据库并设置编码格式为gbk
mysql> CREATE DATABASE IF NOT EXISTS mydb4; #如果mydb4数据库不存在,则创建;如果存在,则不创建。

查看数据库创建信息

mysql> SHOW CREATE DATABASE mydb2; #查看创建数据库时的基本信息

修改数据库

mysql> ALTER DATABASE mydb2 CHARACTER SET gbk; #查看创建数据库时的基本信息

删除数据库

mysql> DROP DATABASE mydb! ; #删除数据库mydbl

查看当前所使用的数据库

mysql> select database(); #查看当前使用的数据库

使用数据库

mysql> USE mydbl ; #使用mydbl数据库

6 客户端工具

6.1 Navicate

Navicat是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。

它的设计符合数据库管理 员、开发人员及中小企业的需要。Navicat是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共 用信息。

6.2 SQLyog

MySQL可能是世界上最流行的开源数据库引擎,但是使用基于文本的工具和配置文件可能很难进行管理。

SQLyog提供了完整的图形界 面,即使初学者也可以轻松使用MySQL的强大功能。其拥有广泛的预定义工具和查询、友好的视觉界面、类似Excel的查询结果编辑界 面等优点。

7 数据查询

7.1 数据库表的基本结构

关系结构数据库是以表格(Table)进行数据存储,表格由“行”和“列”组成

经验:执行查询语句返回的结果集是一张虚拟表。

7.2 基本查询

语法:SELECT列名FROM表名

关键字 描述
SELECT 指定要查询的列
FROM 指定要查询的表
7.2.1 查询部分列
#查询员工表中所有员工的编号、名字、邮箱
SELECT employee_id,first_name,email FROM t^employees;
7.2.2 查询所有列
#查询员工表中所有员工的所有信息(所有列)
SELECT 所有列的列名 FROM t.employees;
SELECT * FROM t_employees;

*注意:生产环境下,优先使用列名查询。的方式需转换成全列名,效率低,可读性差。

7.2.3 对列中的数据进行运算

#查询员工表中所有员工的编号、名字、年薪
SELECT employee_id , first_name , salary*12 
FROM t^employees;
算数运算符 描述
+ 两列做加法运算
- 两列做减法运算
* 两列做乘法运算
/ 两列做除法运算

注意:%是占位符,而非模运算符。

7.2.4 列的别名

列 as ‘列名’

#查询员工表中所有员工的编号、名字、年薪(列名均为中文)
SELECT employee_id as "编号”,first_name as 名字",salary*12 as "年薪" 
FROM t.employees;
7.2.5 查询结果去重

DISTINCT 列名

#查询员工表中所有经理的ID。
SELECT DISTINCT manager_id
FROM t_employees;
7.3 排序查询

语法:SELECT列名FROM表名ORDER BY排序列[排序规则]

排序规则 描述
ASC 对前面排序列做升序排序
DESC 对前面排序列做降序排序
7.3.1 依据单列排序
#查询员工的编号,名字,薪资。按照工资高低进行降序排序。 
SELECT employee_id , first_name , salary 
FROM t.employees
ORDER BY salary DESC;
7.3.2 依据多列排序
#查询员工的编号,名字,薪资。按照工资高低进行升序排序(薪资相同时,按照编号进行升序排序)。
SELECT employee_id , first.name , salary
FROM t.employees
ORDER BY salary DESC , employee_id ASC;
7.4 条件查询

语法:SELECT列名FROM表名WHERE条件

关键字 描述
WHERE条件 在查询结果中,筛选符合条件的查询结果,条件为布尔表达式
7.4.1等值判断(=)
#查询薪资是11000的员工信息(编号、名字、薪资)
SELECT employee_id , first_name , salary FROM t.employees
WHERE salary = 11000;

注意:与java不同(==),mysql中等值判断使用=

7.4.2 逻辑判断(and、or、not)
#查询薪资是11000并且提成是0.30的员工信息(编号、名字、薪资)
SELECT employee_id , first_name , salary
FROM t.employees
WHERE salary = 11000 AND commission_pct = 0.30;
7.4.3 不等值判断(>、<、>=、=、!=、<>)
#查询员工的薪资在6000^10000之间的员工信息(编号,名字,薪资)
SELECT employee_id , first_name , salary
FROM t.employees
WHERE salary >= 6000 AND salary <= 10000;
7.4.4 区间判断(between and)
#查询员工的薪资在6000-10000之间的员工信息(编号,名字,薪资)
SELECT employee_id , first_name , salary
FROM t.employees
WHERE salary BETWEEN 6000 AND 10000; #闭区间,包含区间边界的两个值

注:在区间判断语法中,小值在前,大值在后,反之,得不到正确结果

7.4.5 NULL 值判断(IS NULL、IS NOT NULL)

• IS NULL

列名IS NULL

• IS NOT NULL

列名 IS NOT NULL

#查询没有提成的员工信息(编号,名字,薪资,提成)
SELECT employee_id , first_name , salary , commission_pct
FROM t_employees
WHERE commission_pct IS NULL;
7.4.6枚举查询(IN (值1,值2,值3))
#查询部门编号为7。、80、9。的员工信息(编号,名字,薪资,部门编号) SELECT employee.id , first_name , salary , department.id FROM t^employees
WHERE department-id IN(70,80,90);
注:in的查询效率较低,可通过多条件拼接。
7.4.7模糊查询

•LIKE_ (单个任意字符)

列名LIKE弓长」

•LIKE% (任意长度的任意字符)

列名LIKE ‘张%’

注意:模糊查询只能和LIKE关键字结合使用

#查询名字以开头的员工信息(编号,名字,薪资,部门编号)
SELECT employee_id , first_name , salary , department_id 
FROM t.employees
WHERE first-name LIKE 'L%‘;
#查询名字以"L”开头并且长度为4的员工信息(编号,名字,薪资,部门编号)
SELECT employee.id , first_name , salary , department_id 
FROM t.employees
WHERE first_name LIKE 'L___';
7.4.8分支结构查询
CASE
  WHEN条件1 THEN结果1 
  WHEN条件2 THEN结果2 
  WHEN条件3 THEN结果3 
  ELSE结果
END

注意:通过使用CASE END逬行条件判断,每条数据对应生成一个值。

经验:类似Java中的switcho

#查询员工信息(编号,名字,薪资,薪资级别〈对应条件表达式生成〉) 
SELECT employee_id , first_name , salary , department^id ,
  CASE
    WHEN salary>=10000 THEN 'A,
    WHEN salary>=8000 AND salary<1000 THEN 'B'
    WHEN salary>=6000 AND salary<8000 THEN 'C'
    WHEN salary>=4090 AND salary<6000 THEN 'D'
  ELSE 'E'
    END as "LEVEL"
FROM t_employees;
7.5 时间查询

语法:SELECT时间函数([参数列表])

经验:执行时间函数查询,会自动生成一张虚表(一行一列)

时间函数 描述
SYSDATE() 当前系统时间(日、月、年、时、分、秒)
CURDATEQ 获取当前日期
CURTIMEO 获取当前时间
WEEK(DATE) 获取指定日期为一年中的第几周
YEAR(DATE) 获取指定日期的年份
HOUR(TIME) 获取指定时间的小时值
MINUTE(TIME) 获取时间的分钟值
DATEDIFF(DATE1,DATE2) 获取DATE1和DATE2之间相隔的天数
ADDDATE(DATE,N) 计算DATE加上N天后的日期
7.5.1获得当前系统时间
#查询当前时间
SELECT SYSDATE();

#查询当前时间
SELECT NOW();

#获取当前日期
SELECT CURDATE();

#获取当前时间
SELECT CURTIMEO;
7.6 字符串查询

语法:SELECT字符串函数([参数列表])

字符串函数 说明
CONCAT(strl,str2,str…) 将多个字符串连接
INSERT(str,pos,len,newStr) 将str中指定pos位置幵始len长度的内容替换为newStr
LOWER(str) 将指定字符串转换为小写
UPPER(str) 将指定字符串转换为大写
SUBSTRING(str,num,len) 将str字符串指定num位置开始截取len个内容
7.6.1字符串应用
#拼接内容
SELECT CONCAT('My','S',*QL');

#字符串替换
SELECT INSERT('这是一个数据库’,3,2 , ' MySql' ) ;#结果为这是MySql数据库

#指定内容转换为小写
SELECT LOWERCMYSQL1) ;#mysql

#指定内容转换为大写
SELECT UPPER(,mysql,);#MYSQL

#指定内容截取
SELECT SUBSTRING('JavaMySQLOracle',5,5);#MySQL
7.7 聚合函数

语法:SELECT**聚合函数(列名)**FROM表名;

经验:对多条数据的单列进行统计,返回统计后的一行结果。

聚合函数 说明
SUM() 求所有行中单列结果的总和
avgo 平均值
MAX() 最大值
MIN() 最小值
COUNTQ 求总行数
7.7.1单列总和
#统计所有员工每月的工资总和 SELECT sum(salary)
FROM t.employees;
7.7.2单列平均值
#统计所有员工每月的平均工资 SELECT AVG(salary)
FROM t_employees;
7.7.3单列最大值
#统计所有员工中月薪最高的工资
SELECT MAX(salary)
FROM t^employees;
7.7.4单列最小值
#统计所有员工中月薪最低的工资
SELECT MIN(salary)
FROM t^employees;
7.7.5总行数
#统计员工总数
SELECT COUNT(*)
FROM t_employees;


#统计有提成的员工人数
SELECT COUNT(commission_pct)
FROM t.employees;

注意:聚合函数自动忽略nullfi,不进行统计。


MySQL2:https://developer.aliyun.com/article/1580071

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
关系型数据库 MySQL Linux
记一次mysql问题
记一次mysql问题
|
1月前
|
SQL NoSQL 关系型数据库
|
存储 Oracle NoSQL
Mysql部分详解
Mysql部分详解
63 0
|
5月前
|
存储 关系型数据库 MySQL
什么是MySQL
什么是MySQL
57 0
|
SQL 算法 关系型数据库
【MySQL】 MRR
【MySQL】 MRR
124 0
|
关系型数据库 MySQL 数据库
mysql实用篇
mysql实用篇
|
SQL 存储 缓存
MySQL的组成
SQL运行机制概述
135 0
MySQL的组成
|
关系型数据库 MySQL
MySQL - 查询表达式总结
MySQL - 查询表达式总结
109 0
MySQL - 查询表达式总结
|
存储 SQL 关系型数据库
MYSQL
MYSQL
163 0
MYSQL
|
SQL Oracle 关系型数据库
Mysql(二)
Mysql(二)
156 0
Mysql(二)