学习Java第三十八天--MySQL之概述

MySQL

一、引言

1.1 现有的数据存储方式有哪些?

  • Java中存储数据(变量、对象、数组、集合),数据都是保存在内存中,属于瞬时数据
  • 文件(Flie)存储数据,保存在硬盘上,属于持久化状态存储

1.2 以上存储方式有什么缺点?

  • 程序停止,数据就没了
  • 文件存储的数据:没有数据类型的区分
  • 没有访问安全限制;
  • 没有备份、恢复机制

二、数据库

2.1 概念

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

2.2 数据库的分类

  • 网状结构数据库:以节点形式存储数据和访问数据
  • 层次结构数据库:IBM[IMS]。定向有序的树状结构实现存储和访问
  • 关系结构数据库:Oracle、MySQL、DB2、SQL
    Server,以表格(Table)形式存储,多表之间建立关联关系,通过分类、合并、连接、选取等方式实现访问。
  • 非关系型数据库:MongDB、Redis,使用哈希表、表中以(key - value)的方式实现特定的键和一个指针指向的特定数据
  • ElastecSearch

三、数据库管理系统

3.1 概念

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

3.2 常见的数据库管理系统

  • Oracle:可以运行在UNIX、Windows等主流操作系统,支持所有的工业标准,并获得了最高级别的ISO标准安全性认证。
  • DB2:IBM公司的,满足中大型公司的需要
  • SQL Server:微软推出的
  • SQLLite:手机端的数据库
  • MySQL:免费、适合中小型企业

四、MySQL

4.1 简介

  • MySQL是一个关系型数据库管理系统,有瑞典MySQL AB公司开发的。属于Oracle旗下的产品。
  • MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,是最好的应用软件之一。

4.2 访问与下载

  • 官网:https://www.mysql.com
  • 下载地址:https://dev.mysql.com/downloads/mysql/

4.3 配置环境变量

  • Windows:
    创建MYSQL_HOME: C:\Program Files\MySQL\MySQL Server 5.7
    追加Path:%MYSQL_HOME%\bin
    检查是否配置成功:在dos命令窗口输入 mysql -uroot -p密码 回车

4.4 MySQL的目录结构

  • 核心文件介绍
文件夹名称内容
bin命令相关文件
include库文件
lib头文件
Share字符集、语言等信息

4.5 MySQL配置文件

  • C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
  • 在MySQL的安装目录中找到my.ini的文件,MySQL的一些配置参数
参数描述
default-character-set客户端默认字符集
character-set-server服务端默认字符集
port客户端和服务端的端口号
default-storage-engineMySQL的默认存储引擎INNODB

五、SQL

5.1 概念

  • SQL:结构化查询语言,用于存取数据、更新、查询和管理关系数据库系统的程序设计语言
  • 经验:通常执行对数据库的“增、删、改、查” 简称为 C(Create)、R(Read)、U(Update)、D(Delete)

5.2 MySQL应用

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

5.3 基本命令

  • 查看MySQL中所有的数据库
#连接到MySQL
mysql> SHOW DATABASES;  #显示当前MySQL所有的数据库
  • 创建自定义数据库(关键字 CREATE DATABASE)
mysql> CREATE DATABASE nz202;  #创建了名为nz202的数据库
mysql> CREATE DATABASE NZ202 CHARACTER SET gbk; #创建的同时设置其字符集
mysql> CREATE DATABASE nz202 CHARACTER SET gbk COLLATE gbk_chinese_ci;  #支持简体中文和繁体中文
mysql> CREATE DATABASE IF NOT EXISTS nz202;  #如果nz20不存在,则创建,反之,则不创建 
  • 删除数据库(关键字 DROP DATABASE)
mysql> DROP DATABASE NZ202;  #删除数据库nz202
  • 查看数据库创建信息 (关键字SHOW CREATE DATABASE)
mysql> SHOW CREATE DATABASE NZ202;  #查看创建数据库时的基本信息
  • 修改数据库 (ALTER DATABASE)
mysql> ALTER DATABASE nz202 CHARACTER SET utf8;  #修改数据库nz202的字符集为utf-8
  • 使用数据库(USE)
mysql> USE NZ202;  #当前环境下,操作nz202数据库
  • 查看当前使用的数据库(SELECT DATABASE();)
mysql> SELECT DATABASE();  #查看当前使用的数据库

六、客户端工具

6.1 Navicat

  • 是一套快速、可靠并且便宜的数据库管理工具,专为简化数据库管理及降低管理成本而设;

6.2 SQLyog

  • 也拥有图形化界面。拥有广泛的预定工具和查询、友好的视觉界面。类似Excel的查询结构编辑界面;

6.3 DataGrip(IDEA开发工具集成)

  • 捷克公司的产品。需要付费。如果买了idea,DataGrip通用

七、执行脚本语言

  • 创建一个company DB的数据库,然后再对象浏览区,右键->执行SQL脚本->找到文件,打开->点击执行

八、数据查询【重点】

8.1 数据表的基本结构

  • 关系结构数据库是以表格(Table)进行数据存储,表格由行和列组成
  • 经验:执行查询语句返回的结果集是一张虚拟表;

8.2 查询语句

8.2.1 基本查询

  • 语法:SELECT 列名 FROM 表名
关键字描述
SELECT指定要查询的列
FROM指定要查询的表

8.2.2查询所有列

#查询t_employees表中所有员工的信息
SELECT * FROM t_employees;
SELECT 所有的列名 FROM t_employees;
  • 经验:生产环境下,优先使用列名查询。*的方式虽然看起来便捷,但实际上需要转换成全列名,效率低,可读性差;

8.2.3 查询部分列

 #查询表中的所有员工的编号、姓氏、邮箱
 SELECT EMPLOYEE_ID,FIRST_NAME,EMAIL FROM t_employees;
 #查询表中的所有员工的编号、部门编号
 SELECT EMPLOYEE_ID,DEPARTMENT_ID FROM t_employees;

8.2.4 对列中的数据进行运算

  • #查询圆滚滚表中所有员工的编号、姓名、年薪
算术运算符描述
+列与列之间做加法运算
+列与列之间做减法运算
+列与列之间做乘法运算
/列与列之间做除法运算
  • 注意:%在数据库中,表示占位,而非取余
 #查询员工表中所有员工的编号、姓名、年薪(列运算 * 12)
 SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY * 12 FROM t_employees;
 #查询员工表中所有员工的编号、姓名、日薪(列运算 /22)四舍五入
 SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY / 22 FROM t_employees;

8.2.5 列的别名

  • 列 AS ‘别名’
 #查询员工表中所有员工的编号、姓名、日薪(列运算 /22)四舍五入,列名为中文
 SELECT EMPLOYEE_ID AS '编号',FIRST_NAME AS '姓',LAST_NAME AS '名',SALARY / 22 AS '日薪' FROM t_employees;
  • 其别名,没有对原表的列名发生影响

8.2.6 去重

  • distnct 列名
#查询员工表中,所有经理的ID编号
SELECT DISTINCT MANAGER_ID AS '经理编号' FROM t_employees;
 
#查询工资(去掉重复)
SELECT DISTINCT SALARY FROM t_employees;

8.3 排序查询

8.3.1 排序语法

  • SELECT 列名 FROM 表名 PRDER BY 排序列名[排序规则]
排序规则描述
ASC升序排序
DESC降序排序

8.3.2 依据单列进行排序

#排序
#查询员工的编号,名字,薪资,按照工资进行升序排序
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees ORDER BY SALARY ASC;
#查询员工的编号,名字,薪资,按照姓名进行升序排序
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees ORDER BY FIRST_NAME ASC;
  • 经验:当进行升序排序是,排序规则可以不显示声明。默认为升序排序规则

8.3.3 依据多列进行排序

#查询员工的编号,名字,薪资,按照工资进行升序排序,如果工资相等,按照编号降序排序
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees
ORDER BY SALARY ASC , EMPLOYEE_ID DESC;
#查询员工的编号,名字,薪资,按照工资进行升序排序,如果工资相等,按照姓名降序排序
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees
ORDER BY SALARY ASC , FIRST_NAME DESC;

8.4 条件查询

8.4.1 语法

  • SELECT 列名 FROM 表名 WHERE 条件
关键字描述
WHERE在查询结果中,筛选符合条件的查询结果。条件为布尔表达式

8.4.2 等值判断

#条件查询
#等值判断
#查询工资为2500的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees WHERE SALARY = 2500;
#查询名字为Steven的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees WHERE FIRST_NAME = 'Steven';
  • 注意:与Java不同(==),MySQL中等值判断为=

8.4.3 不等值判断(> , < , >= , <= , != , <>)

  • #不等于判断
    #查询员工工资不是2500的员工信息 SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees WHERE SALARY <> 2500;

8.4.4 逻辑判断(and 、 or 、not)

#查询员工工资在6000~10000的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees
WHERE SALARY >= 6000 AND SALARY <= 10000;

#查询员工工资为6000或10000的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees
WHERE SALARY = 6000 OR SALARY = 10000;

##查询员工工资不为10000的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees
WHERE NOT SALARY = 10000;

8.4.5 区间判断(between)

#区间判断,包含区间边界的两个值
#查询员工工资在6000~10000的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees
WHERE SALARY BETWEEN 6000 AND 10000;
  • 注意:between and要遵循between 小值 and 大值

8.4.6 null值判断(IS NULL 、 IS NOT NULL)

IS NULL

  • 列名 IS NULL

IS NOT NULL

  • 列名 IS NOT NULL
#查询出  没有经理编号的员工
SELECT EMPLOYEE_ID,FIRST_NAME,MANAGER_ID FROM t_employees
WHERE MANAGER_ID IS NULL;
#查询出  没有经理编号以外的员工
SELECT EMPLOYEE_ID,FIRST_NAME,MANAGER_ID FROM t_employees
WHERE MANAGER_ID IS NOT NULL;
#查询出  没有经理编号以外的员工
SELECT EMPLOYEE_ID,FIRST_NAME,MANAGER_ID FROM t_employees
WHERE NOT MANAGER_ID IS NULL;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值