MySQL Day01

1. 为什么要使用数据库

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

2. 什么是数据库

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

3. 数据库管理系统

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

4. MySQL

4.1 MySQL历史简介
 MySQL数据库默认编码集 Latin1 ==> 西欧瑞典的一个公司开发的!! MySQL AB公司MySQL支持插件!!!社区InnoDB跨时代的存储引擎MySQL性能是非常不错的!!!美国小鹰号航空母舰数据存储都是使用MySQLMySQL 隶属于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 CreateR ReadU UpdateD 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.2.2 多字段条件排序
-- 第一条件是工资降序,当第一条件出现一致情况下,使用第二条件进行二次排序
select EMPLOYEE_ID, FIRST_NAME, SALARY -- 查询展示的字段有哪些
from t_employees -- 从哪里查询
order by SALARY desc, EMPLOYEE_ID desc; -- order by 指定字段要求排序 工资降序 ID降序
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 分支结构查询
casewhen condition1 then ret1when condition2 then ret2when condition3 then ret3
end
-- 从case开始,到end结束。满足条件对应一个结果,类似于Java中的switch case-- 查询姓名,工资已经对应工资划分的等级LEVEL
select FIRST_NAME, SALARY,
casewhen 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;

MySQL Day01相关推荐

  1. mysql day01课堂笔记

    mysql day01课堂笔记 1.什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么? 数据库:英文单词DataBase,简称DB.按照一定格式存储数据的一些文件的组合.顾名思义 ...

  2. 【老杜】MySQL—day01

    文章目录 day01课堂笔记 1.数据库概述及数据准备 1.1.什么是数据库 1.2.什么是数据库管理系统 1.3.SQL概述 1.4.安装MySQL数据库管理系统. 1.4.MySQL数据库的完美卸 ...

  3. 第033层:Java核心知识点面试题之-MySql篇

    1.什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?数据库:英文单词DataBase,简称DB.按照一定格式存储数据的一些文件的组合.顾名思义:存储数据的仓库,实际上就是一堆文 ...

  4. MySQL数据库学习教程,从0到入门

    mysql day01课堂笔记 1.什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么? 数据库:英文单词DataBase,简称DB.按照一定格式存储数据的一些文件的组合.顾名思义 ...

  5. MySQL_2020.11.05

    MySQL MySQL day01 1.sql.DB.DBMS分别是什么,他们之间的关系? 2.什么是表? 3.学习MySQL主要还是学习通用的SQL语句,那么SQL语句包括增删改查,SQL语句怎么分 ...

  6. python爬虫(廖雪峰商业爬虫)

    文章目录 day01 http Request Headers Response Headers 其他 爬虫工作原理 demo day02 1.get传参 2.post请求 3.User-Agent: ...

  7. Mysql(Python相关) day01

    目录: Mysql(Python相关) day01 MySQL概述 什么是数据库 哪些公司在用数据库 提供数据库服务的软件 MySQL特点 关系型数据库特点 示例 非关系型数据库存储 跨平台 支持多种 ...

  8. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day01.txt

    文章目录 文件来源/资料下载: MySQL课堂笔记-day01.txt 1.sql.DB.DBMS分别是什么,他们之间的关系? 2.什么是表? 3.学习MySQL主要还是学习通用的SQL语句,那么SQ ...

  9. Mysql基础学习Day01

    Mysql基础学习Day01 1.SQL语言的分类 2.注释 3.基本的select语句 4.显示表结构 5.过滤数据 突然发现java基础内容学的差不多了 就又开一个mysql基础学习 1.SQL语 ...

最新文章

  1. SZUACM集训字符串基础总结: 字符串最小表示 ,KMP, EXKMP, Manracher, Trie树,字符串的hash; 附带一写常见的运用技巧,邝斌大佬的板子和例题[持续更新]
  2. 数据库(分库分表)中间件对比
  3. 智能指针weak_ptr
  4. java之Stack详细介绍
  5. linux svn客户端通过 https访问windows VisualSVN Server Manager
  6. es6 modules 和commonjs
  7. 七种qsort排序方法
  8. 重庆计算机c语言二级成绩查询,历届重庆市计算机C语言二级考试试题及答案.pdf...
  9. 程序人生|从网瘾少年到微软、BAT、字节offer收割机逆袭之路
  10. 不同网段共享文件服务器,不同局域网如何共享文件
  11. 基于药效团模型和分子动力学模拟对PTP-LAR抑制剂的研究
  12. SolidWorks 2023软件安装教程SW2023软件安装包
  13. 《卧底经济学》书中精髓:我们如何正确理解“稀缺”这件事儿?
  14. tomcat服务器报503
  15. 我的软件推广成功之路 [转]
  16. Mac下.CR2格式图片批量转换
  17. 机器学习--基础算法--机器学习基础
  18. 计算机flash ram是什么意思,ROM、RAM、CPU、CACHE、FLASH的区别
  19. 世相科技:引领新媒体时代的潮水方向
  20. RafyA PS合成作品欣赏(2)

热门文章

  1. 让机器人告诉你当下淘宝爆款商品
  2. 使用node+puppeteer破解验证码
  3. weibo上收藏整理
  4. div向左、向右移动的动画效果
  5. 百度地图API 显示区域边界及地名定位
  6. rdd 内生分组_内生性问题和倾向得分匹配, 献给准自然试验的厚礼
  7. TG纸飞机频道创建和维护
  8. 电脑有网(如可以登QQ),但浏览器连不上网络
  9. 我的大学生活之ACM
  10. 保证为正数 深度学习_深度学习:让数学课堂学习真正发生