MySQL

1. 为什么要使用数据库?

Java程序在运行的过程中对于数据进行存储操作,变 量,对象,数组,集合,双边队列…数据是保存到内存中, 数据存储是瞬时的,程序退出,电脑异常。都会导致数据丢失 并且不可逆。
文件存储数据,XML,JSON,其他文件。可操作性比较 差,API繁琐,不同的文件有不同的解析方式,而且在内存占 用和效率问题上很难达到两全程度。
存在的一些问题:
1. 文件保存的数据没有数据类型区分,都是字符串。
2. 数据存储量是较小的,有一定限制的。
3. 没有安全限制。
4. 文件操作没有备份,回滚,数据保护机制

2. 什么是数据库 ?

数据库按照特定的数据结构,来进行数据的组织,存储, 管理和查询,数据库软件。可以长期存储,有安全限制,数据 恢复,并且数据存储可拓展
数据库分类:
网状结构数据库
层次结构数据库
关系结构数据库【重点】
Oracle,MySQL,DB2,SQL Server
通过表结构方式来进行数据的存储操作。–> XLS表格
非关系型数据库
MongDB Redis
使用哈希表结构方式,Key-Value数据存储方式
ES
ElastecSearch

3. 数据库管理系统

数据库管理系统
DataBase Management System
DBMS 操作和管理数据大型软件,用于管理,建立,使用和查询 数据。
Oracle 贼牛皮,安全性,稳定性,数据存储复杂程度…可以 完全符合工业要求 贵
DB2 IBM公司,不是很多见
SQL Server
MS公司推出的关系型数据库 SQLite 轻量级数据库,源码1W行C语言,手机通讯录

4. MySQL

4.1 MySQL历史简介

MySQL数据库默认编码集 Latin1 ==> 西欧
瑞典的一个公司开发的!! MySQL AB公司
MySQL支持插件!!!
社区
InnoDB跨时代的存储引擎 MySQL性能是非常不错的!!!
美国小鹰号航空母舰数据存储都是使用MySQL
MySQL 隶属于Oracle公司,免费提供使用的数据库软 件。目前流行的版本是 MySQL 5.5 5.6 5.7,最新版本是 8.0
实际开发中我们要考虑稳定性,兼容性,普适性

4.2 MySQL获取和安装 【详见】 Windows下安装MySQL5.7

5. SQL

5.1 SQL语句概述

SQL是数据库通用查询数据,不管是MySQL,Oracle, SQL Server都是支持标准SQL语句。不同数据库都会有自己特 定的一些SQL语言。
SQL简单来分类 C Create R Read U Update D Delete

5.2 MySQL基本操作

cmd > mysql -hlocalhost -uroot -p123456

mysql指目前需要操作连接的数据库

-hlocalhost -h host端口,当前数据库所处的服务器ip 地址,域名或者主机名

localhost 表示本地,如果是本地连接可以省略

-uroot -u user用户 root表示用户

-p -password 密码

推荐方式

cmd > mysql -uroot -p Enter password: ******
– 展示当前数据库中所有的数据表
mysql > show databases;
– 创建数据库
– CREATE DATABASE DBName;
mysql > create database nzgp2001;
– 创建数据库过程修改编码集
mysql > create database nzgp2002 character set latin1;
mysql > create database nzgp2003 character set gbk;
– 查看创建数据库的详细内容
mysql > show create database nzgp2001;
– 修改数据库的编码集
mysql > alter database nzgp2002 character set gbk;
– 删除对应数据库
mysql > drop database nzgp2002;
– 选择使用数据库
mysql > use nzgp2001;
– 让MySQL告知当前使用的数据库是哪一个

让MySQL告知当前使用的数据库是哪一个

mysql > select database();

6. MySQL开发工具使用

Navivcat for MySQL 非常不错
SQLyog 小海豚
MySQL WorkBench 免费,MySQL官网提供
IDEA Java IDE提供了数据库操作支持

7. 查询语句【重点】DQL

7.1 基本格式

select 查询内容 from 从哪里查;
– 查询内容 字段名 列明
– 从哪里查 表名

7.1.1 基本查询,字段表名

– * 所有字段全部展示
– 不建议,如果采用select * 方式整个数据库数据的时间 非常长,浪费资源
select * from t_employees;
– 查询指定的字段
select EMPLOYEE_ID, FIRST_NAME, LAST_NAME from t_employees;

7.1.2 查询结果字段进行数据计算

– 查询员工ID号,员工的名字(FristName LastName) 用户年薪
select EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY * 12 from t_employees;
– 这里允许使用+ - * / 可以完成字段和字段直接的算术运算
– %在SQL语句中不是取余,而是占位符!!

7.1.3 去重查询 distinct

– 查询结果中存在相同内容,第二个数据不要
select distinct MANAGER_ID from t_employees;
– 不去重
select MANAGER_ID from t_employees;

7.1.4 字段别名

– 字段名 as ‘别名’
select EMPLOYEE_ID as ‘ID’, FIRST_NAME as ‘名’, LAST_NAME as ‘姓’, SALARY * 12 as ‘年薪’
from t_employees;

7.2 排序查询 order by

规则 效果
asc 指定条件升序
desc 指定条件降序
– 基本格式
select fieldName from tbName order by fieldName asc/desc;
– 在查询结果展示中,按照执行的字段作为标记完成升序和降序

7.2.1 单一条件排序

select EMPLOYEE_ID, FIRST_NAME, SALARY
– 查询展示 的字段有哪些 from t_employees
– 从哪里查询 order by SALARY asc ;
– order by 指定字段要求排序 升序
select EMPLOYEE_ID, FIRST_NAME, SALARY
– 查询展示 的字段有哪些
from t_employees
– 从哪里查询
order by SALARY desc ;
– order by 指定字段要求排序 降序

7.3 条件查询 where

7.3.1 基本格式

select fieldName from tbName where condition;
– 从指定数据表中,按照where之后指定条件,查询对应的 字段数据
– where条件是一个是一个boolean类型结果

7.3.2 等值判断 =

– Java等于判断是用的是 == 或者更严谨的情况,会使用 equals
– 数据库中使用 = 在where条件之后是一个等值判断
– 查询在员工表内容,工资等于11000 对应的id号,名,和 工资
select EMPLOYEE_ID, FIRST_NAME, SALARY
from t_employees
where SALARY = 11000;

7.3.3 不等值判定(> < >= <= != <>)

– 查询在员工表内容,工资大于10000 对应的id号,名,和 工资
select EMPLOYEE_ID, FIRST_NAME, SALARY
from t_employees
where SALARY > 10000;
– 查询在员工表内容,工资大于10000 对应的id号,名,和 工资
select EMPLOYEE_ID, FIRST_NAME, SALARY
from t_employees
where SALARY >= 10000;
– 查询在员工表内容,部门ID不等于80 对应的id号,名, 工资和部门ID
select EMPLOYEE_ID, FIRST_NAME, SALARY, DEPARTMENT_ID
from t_employees
where DEPARTMENT_ID <> 80;
– 查询在员工表内容,部门ID不等于80 对应的id号,名, 工资和部门ID
select EMPLOYEE_ID, FIRST_NAME, SALARY, DEPARTMENT_ID
from t_employees
where DEPARTMENT_ID != 80;

7.3.4 逻辑判断(and, or, not)

– 查询在员工表内容,要求工资大于10000并且部门编号为 80 对应的ID号,名,工资和部门ID
select EMPLOYEE_ID, FIRST_NAME, SALARY, DEPARTMENT_ID
from t_employees
where SALARY > 10000 and DEPARTMENT_ID = 80;
– 查询在员工表内容,要求工资小于2500或者部门编号为90 对应的ID号,名,工资和部门ID
select EMPLOYEE_ID, FIRST_NAME, SALARY, DEPARTMENT_ID
from t_employees、
where SALARY < 2500 or DEPARTMENT_ID = 90;

7.3.5 区间 between and

– 要求between min and max 在min <==> max范围以内, 而且要求小值之前,大值不然会报 – 错,这里区间范围是包含指定的边界
– 区间范围
select EMPLOYEE_ID, FIRST_NAME, SALARY
from t_employees
where SALARY between 8000 and 10000;

7.3.6 NULL值判断

– is null 指定当前的字段是null
– is not null 指定当前字段不是null
– 找出所有提成为null的数据
select FIRST_NAME, COMMISSION_PCT
from t_employees
where COMMISSION_PCT is null;
– 找出所有提成不是null的数据
select FIRST_NAME, COMMISSION_PCT
from t_employees
where COMMISSION_PCT is not null;

7.3.7 枚举查询 in

– 查询部门编号为60, 70, 90员工名字和对应部门编号
– in查询效率较低,推荐使用多条件拼接完成查询操作
select FIRST_NAME, DEPARTMENT_ID
from t_employees
where DEPARTMENT_ID in(70, 60, 90);

7.3.8 模糊查询 like

– LIKE
– _ 匹配一个字符
– % 匹配任意长度字符
– 查询FIRST_NAME,要求FIRST_NAME字段D字母开头后面有 4个字符
select FIRST_NAME
from t_employees
where FIRST_NAME like ‘D____’;
– 查询FIRST_NAME,要求FIRST_NAME字段带有D字母就 可以,而且不区分大小写
select FIRST_NAME
from t_employees
where FIRST_NAME like ‘%D%’;

7.3.9 分支结构查询

case
when condition1 then ret1
when condition2 then ret2
when condition3 then ret3
end
– 从case开始,到end结束。满足条件对应一个结果,类似 于Java中的switch case
– 查询姓名,工资已经对应工资划分的等级LEVEL
select FIRST_NAME, SALARY,
case
when SALARY >= 10000 then ‘A’
when SALARY >= 8000 and SALARY < 10000 then ‘B’
when SALARY >= 6000 and SALARY < 8000 then ‘C’
when SALARY >= 4000 and SALARY < 6000 then ‘D’
else ‘E’ end as ‘LEVEL’
from t_employees;

7.4 时间查询

– 语法
select 时间函数([参数列表]);
– 查询时间情况下,得到的是一个单列单表(虚表)
时间函数 功能描述
sysdate() 当前系统时间(年,月,日, 时,分,秒)
CURRENT_TIMESTAMP() 当前系统时间(日,月,年, 时,分,秒)
curdate() 当前日期
curtime() 当前时间
week() 指定日期是这一年的第几周
hour() 指定日期是今天第几个小时
minite() 指定日期是小时的第几分钟
second() 指定日期是分钟的第几秒

select sysdate();
select CURRENT_TIMESTAMP();
select curdate(); select curtime();
select week(‘2019-11-23’);
select now();
select second(sysdate());
select minute(sysdate());
select hour(sysdate());

7.5 字符串应用

  方法 			      功能描述

concat(str1, str2, str3…) 拼接多个字符串
insert(str, pos, len, newStr) 在指定字符串位置pos,长度限制len, 插入新字符串
lower(str) 大写转小写
upper(str) 小写转大写
substring(str,pos, len) 指定字符串,从pos位置开始,长度限 制len

select concat(‘你好’, ’ MySQL’, ’ Oracle公司产 品’);
select insert(‘ABCDEFG’, 3, 3, ‘你好’);
select upper(‘abcdefg’);
select lower(‘ABCDEF’);
select substring(‘ABCDEFG’, 2, 5);

7.6 内置方法

方法 功能描述
sum() 指定字段一列总会
avg() 指定字段一列平均值
max() 指定字段一列中的最大值
min() 指定字段一列中的最小值
count() 指定字段有多少行

– 工资总和
select sum(SALARY) from t_employees;
– 工资平均数
select avg(SALARY) from t_employees;
– 工资最大值
select max(SALARY) from t_employees;
– 工资最小值
select min(SALARY) from t_employees;
– 当前有多少员工计数
select count() from t_employees;
– 当前有多少员工计数
– count(1) 效率比count(
) 快一点
select count(1) from t_employees;
– 统计有多少人有绩效
select count(COMMISSION_PCT)
from t_employees;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值