IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL数据库(一) -> 正文阅读

[大数据]MySQL数据库(一)

目录

1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?

1.1 数据库(DataBase,DB)

1.2 数据库管理系统(DatabaseManagement,DBMS)

1.3 SQL 结构化查询语言

1.4 三者之间的关系

2、安装数据库管理系统MySQL

3、MySQL数据库如何卸载

4、看一下计算机上的服务,MySQL的服务在哪里?

5、在windows操作系统当中,启动和关闭mysql的命令是什么?

6、MySQL安装,服务启动,怎么使客户端登陆mysql数据库?

7、mysql常用命令

7.1 退出mysql?? ?exit

7.2 查看mysql中有哪些数据库?? ?show databases;

7.3 怎么选择使用某个数据库?? ?use 数据库名;

7.4 创建数据库?? ?create database 数据库名;

7.5 查看某个数据库下有哪些表?? ?show tables;

7.6 查看mysql数据库的版本号?? ?select version();

7.7 查看当前使用的是哪个数据库?? ?select database();

8、数据库当中最基本的单元是表:table

9、关于SQL语句的分类?

9.1 DQL:数据查询语言

9.2 DML:数据操作语言

9.3 DDL:数据定义语言

9.4 TCL:事务控制语言

9.5 DCL:数据控制语言。

10、导入一下提前准备好的数据 source 路径(不能包含中文)

11、 看一下文件里有几个表

12、不看表中的数据,只看表的结构? ? ?desc

13、简单查询

13.1查询一个字段

13.2 查询部门名字

13.3 查询两个字段,或者多个字段使用逗号隔开“,”

13.4 给查询的列起别名:使用as关键字起别名。

13.5 假设起别名的时候,别名里面有空格,怎么办?

13.6 计算员工年薪sal * 12:字段可以使用数学表达式

?14、条件查询

14.1 = 等于

14.2 <>或!= 不等于

14.3 < 小于

14.4 <= 小于等于

14.5? > 大于

14.6 >= 大于等于

14.7 between … and …. 两个值之间, 等同于 >= and <=

14.8? is null 为 null(is not null 不为空)

14.9 and 并且

14.10 or 或者

14.11 in 包含,相当于多个 or (not in 不在这个范围中)

14.12 like称为模糊查询,支持%或下划线匹配


1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?

1.1 数据库(DataBase,DB)

按照一定格式存储数据的一些文件的组合。顾名思义:存储数据的仓库,实际上就是一堆文件,这些文件中存储了具有特定格式的数据。

1.2 数据库管理系统(DatabaseManagement,DBMS)

数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以对数据库当中的数据进行增删改查。

1.3 SQL 结构化查询语言

程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL语句,最终来完成数据库中数据的增删改查操作。

1.4 三者之间的关系

DBMS-->执行-->SQL-->操作-->DB

2、安装数据库管理系统MySQL

mysql下载安装教程

3、MySQL数据库如何卸载

第一步:双击安装包进行卸载删除。

第二步:删除目录:

把C:\ProgramData下面的MySQL目录干掉。

把C:\Program Files (x86)下面的MySQL目录干掉。

具体位置根据自己的安装位置查找

4、看一下计算机上的服务,MySQL的服务在哪里?

计算机-->右键-->管理-->服务和应用程序-->服务-->找mysql服务

MySQL的服务,默认是“启动”的状态,只有启动了mysql才能用。默认情况下是“自动”启动,自动启动表示下一次重启操作系统的时候?自动启动该服务。

可以在服务上点击右键:启动、重启服务、停止服务

还可以改变服务的默认配置:

服务上点击右键,属性,然后可以选择启动方式:

自动(延迟启动)、自动、手动、禁用

5、在windows操作系统当中,启动和关闭mysql的命令是什么?

语法:

net start 服务名称;
net stop 服务名称;

其它服务的启停都可以采用以上的命令。

6、MySQL安装,服务启动,怎么使客户端登陆mysql数据库?

使用bin目录下的mysql.exe命令来连接mysql数据库服务器

d: ? //转到D盘
cd D:\mysql-8.0.26-winx64\mysql-8.0.26-winx64\bin ? //进入bin文件
mysql -uroot -p111111 ? ?//后面的111111是我的密码

7、mysql常用命令

7.1 退出mysql?? ?exit

exit

7.2 查看mysql中有哪些数据库?? ?show databases;

show databases;

7.3 怎么选择使用某个数据库?? ?use 数据库名;

use powernode;

7.4 创建数据库?? ?create database 数据库名;

create database power;

7.5 查看某个数据库下有哪些表?? ?show tables;

show tables;

7.6 查看mysql数据库的版本号?? ?select version();

select version();

7.7 查看当前使用的是哪个数据库?? ?select database();

select database();

8、数据库当中最基本的单元是表:table

什么是表table?为什么用表来存储数据呢?

姓名? ? 性别? ? 年龄? ? (列:字段)?
---------------------------
张三? ? ?男? ? ? ? 20? ? ?------->行(记录)
李四? ? ?女? ? ? ? 21? ? ?------->行(记录)
王五? ? ?男? ? ? ? 22? ? ?------->行(记录)

数据库当中是以表格的形式表示数据的。

任何一张表都有行和列:

行(row):被称为数据/记录。

列(column):被称为字段。姓名字段、性别字段、年龄字段。

每一个字段都有:字段名、数据类型、约束等属性。

字段名可以理解,是一个普通的名字,见名知意就行。

数据类型:字符串,数字,日期等,后期讲。

约束:约束也有很多,其中一个叫做唯一性约束,这种约束添加之后,该字段中的数据不能重复。

9、关于SQL语句的分类?

9.1 DQL:数据查询语言

凡是带有select关键字的都是查询语句

select...

9.2 DML:数据操作语言

凡是对表当中的数据进行增删改的都是DML

insert delete update

insert 增、delete 删、update 改

这个主要是操作表中的数据data。

9.3 DDL:数据定义语言

凡是带有create、drop、alter的都是DDL,DDL主要操作的是表的结构。不是表中的数据。

create:新建,等同于增

drop:删除

alter:修改

这个增删改和DML不同,这个主要是对表结构进行操作。

9.4 TCL:事务控制语言

事务提交:commit;

事务回滚:rollback;

9.5 DCL:数据控制语言。

例如:授权grant、撤销权限revoke....

10、导入一下提前准备好的数据 source 路径(不能包含中文)

source D:\pracite_mysql\mysqlpower\bjpowernode.sql

11、 看一下文件里有几个表

dept是部门表

emp是员工表

salgrade 是工资等级表

查看表中的数据:

select * from 表名; //统一执行这个SQL语句。

这个查看语句在Qt数据表中也学过

select * from emp;

列从左到右:

员工序号、员工名字、员工职位、上级领导编号、入职日期、工资、补助、部门编号

select * from dept;

DEPTNO 字段是外键,DEPTNO 的值来源于 dept 表的主键,起到了约束的作用

列从左到右:部门编号、部门名称、部门位置

select * from salgrade;

列从左到右:工资等级、最低工资、最高工资

12、不看表中的数据,只看表的结构? ? ?desc

有一个命令:

desc 表名;? ? desc 是describe的缩写
desc dept;

行从上到下:部门编号、部门名字、地理位

行从上到下:员工编号、员工姓名、工作岗位、上级编号、入职日期、工资、补助、部门编号

desc salgrade;

行从上到下:工资等级、最低工资、最高工资

13、简单查询

13.1查询一个字段

select 字段名 from 表名;

其中要注意:
select和from都是关键字。字段名和表名都是标识符。
强调:
对于SQL语句来说,是通用的,所有的SQL语句以“;”结尾。另外SQL语句不区分大小写,都行。

13.2 查询部门名字

select dname from dept;

13.3 查询两个字段,或者多个字段使用逗号隔开“,”

查询部门编号和部门名:

select deptno,dname from dept;

??

查询所有字段:

第一种方式:可以把每个字段都写上

select a,b,c,d,e,f... from tablename;

第二种方式:可以使用*

select * from dept;

??

13.4 给查询的列起别名:使用as关键字起别名。

select deptno,dname as deptname from dept;

注意:只是将显示的查询结果列名显示为deptname,原表列名还是叫:dname

记住:select语句是永远都不会进行修改操作的,因为只负责查询

as关键字可以省略:

select deptno,dname deptname from dept;

??

13.5 假设起别名的时候,别名里面有空格,怎么办?

//select deptno,dname dept name from dept;

DBMS看到这样的语句,进行SQL语句的编译,不符合语法,编译报错。怎么解决?

select deptno,dname 'dept name' from dept; //加单引号
select deptno,dname "dept name" from dept; //加双引号

?

?

?注意:在所有的数据库当中,字符串统一使用单引号括起来,单引号是标准,双引号在oracle数据库中用不了。但是在mysql中可以使用。

13.6 计算员工年薪sal * 12:字段可以使用数学表达式

select ename,sal from emp;

??

select ename,sal*12 from emp;

?

select ename,sal*12 as yearsal from emp;

??

select ename,sal*12 as '年薪' from emp;

?

?14、条件查询

什么是条件查询?
不是将表中所有数据都查出来。是查询出来符合条件的。
语法格式:

select 字段1,字段2,字段3....from 表名 where 条件;

都有哪些条件?

14.1 = 等于

查询薪资等于800的员工姓名和编号?

select empno,ename from emp where sal = 800;

查询SMITH的编号和薪资?

select empno,sal from emp where ename = 'SMITH'; //字符串使用单引号

??

14.2 <>或!= 不等于

查询薪资不等于800的员工姓名和编号

select empno,ename,sal from emp where sal != 800;

select empno,ename,sal from emp where sal <> 800; // 小于号和大于号组成的不等号

?

14.3 < 小于

查询薪资小于2000的员工姓名和编号

select empno,ename,sal from emp where sal < 2000;

14.4 <= 小于等于

查询薪资小于等于3000的员工姓名和编号

select empno,ename,sal from emp where sal <= 3000;

14.5? > 大于

查询薪资大于3000的员工姓名和编号

select empno,ename,sal from emp where sal > 3000;

14.6 >= 大于等于

查询薪资大于等于3000的员工姓名和编号

select empno,ename,sal from emp where sal >= 3000;

??

14.7 between … and …. 两个值之间, 等同于 >= and <=

查询薪资在2450和3000之间的员工信息,包括2450和3000

第一种方式:>= and <= (and是并且的意思。)

select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;

??

第二种方式:between … and …

select empno,ename,sal from emp where sal between 2450 and 3000;


注意:
使用between and的时候,必须遵循左小右大。
between and是闭区间,包括两端的值。

14.8? is null 为 null(is not null 不为空)

查询哪些员工的津贴/补助为null

select empno,ename,sal,comm from emp where comm = null;

select empno,ename,sal,comm from emp where comm is null;

?

注意:在数据库当中null不能使用等号进行衡量。需要使用is null。因为数据库中的null代表什么也没有,它不是一个值,所以不能使用等号衡量。

查询哪些员工的津贴/补助不为null

select empno,ename,sal,comm from emp where comm is not null;

??

14.9 and 并且

查询工作岗位是MANAGER并且工资大于2500的员工信息

select empno,ename,job,sal from emp where job = 'MANAGER' and sal > 2500;

14.10 or 或者

查询工作岗位是MANAGER和SALESMAN的员工

select empno,ename,job from emp where job = 'MANAGER';

select empno,ename,job from emp where job = 'SALESMAN';

??

select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';

?

?注意:and优先级比or高,当and和or同时出现,会先执行and,然后执行or。

select * from emp where sal > 2500 and deptno = 10 or deptno = 20;

??

这个语句表示找出工资大于2500并且部门编号为10的员工,或者20部门所有员工找出来。

select *?from?emp where sal > 2500 and (deptno = 10 or deptno = 20);

??

查询工资大于2500,并且部门编号为10或20部门的员工

所以and和or同时出现,and优先级较高。如果想让or先执行,需要加“小括号”

14.11 in 包含,相当于多个 or (not in 不在这个范围中)

查询工作岗位是MANAGER和SALESMAN的员工

select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';

select empno,ename,job from emp where job in('MANAGER', 'SALESMAN');

注意:in不是一个区间。in后面跟的是具体的值。

查询薪资是800和5000的员工信息

select ename,sal from emp where sal = 800 or sal = 5000;

select ename,sal from emp where sal in(800, 5000); //这个不是表示800到5000都找出来。

??

select ename,sal from emp where sal in(800, 5000, 3000);// not in 表示不在这几个值当中的数据。

?

select ename,sal from emp where sal not in(800, 5000, 3000);

not 可以取非,主要用在 is 或 in 中

is null、is not null、in、not in

14.12 like称为模糊查询,支持%或下划线匹配

%匹配任意多个字符

下划线:任意一个字符。(%是一个特殊的符号,_ 也是一个特殊符号)

找出名字中含有O的?

select ename from emp where ename like '%O%';

?找出名字以T结尾的

select ename from emp where ename like '%T';

找出名字以K开始的

select ename from emp where ename like 'K%';

?

?找出第二个字每是A的

select ename from emp where ename like '_A%';

找出第三个字母是R的

select ename from emp where ename like '__R%';

?

现在有这么一个表

t_student学生表
?? ??? ?name字段
?? ??? ?----------------------
?? ??? ?zhangsan
?? ??? ?lisi
?? ??? ?wangwu
?? ??? ?zhaoliu
?? ??? ?jack_son

找出名字中有“_”的

首先把这个表创建出来:?

正常的思路肯定是下面这样的,肯定不行,因为_是特殊的,不能直接大摇大摆的放在那,这样让电脑怎么想,他是正经的下划线,还是包含某种含义的,电脑自己也乱了啊,所以要通过某种方式来告诉电脑,我这个下划线是单纯的下划线,还是不单纯的下划线~?

select name from t_student where name like '%_%'; //这样不行。

??

就像下面这样添加一个转义字符,这就相当于一个标志,给电脑看,看,我这个是正经的下划线。?

select name from t_student where name like '%\_%'; // \转义字符。

15、排序

15.1 查询所有员工薪资,排序

select ename,sal from emp order by sal; //默认是升序

15.2 指定降序

select ename,sal from emp order by sal desc;

15.3 指定升序

select ename,sal from emp order by sal asc;

15.4 两个字段,或者多个字段排序

?查询员工名字和薪资,要求按照薪资升序,如果薪资一样的话,再按照名字升序排列。

select ename,sal from emp order by sal asc,ename asc;
//sal在前,起主导,只有sal相等的时候,才会考虑启用ename排序

15.5 根据字段的位置也可以排序?

select ename,sal from emp order by 2; // 2表示第二列。第二列是sal

按照查询结果的第2列sal排序。

了解一下,不建议在开发中这样写,因为不健壮。因为列的顺序很容易发生改变,列顺序修改之后,2就废了。

16、综合案例

找出工资在1250到3000之间的员工信息,要求按照薪资降序排列。

select ename,sal from emp where sal between 1250 and 3000 order by sal desc;

?关键字顺序不能变:
?? ??? ?select
?? ??? ??? ?...
?? ??? ?from
?? ??? ??? ?...
?? ??? ?where
?? ??? ??? ?...
?? ??? ?order by
?? ??? ??? ?...
?? ??? ?
?? ??? ?以上语句的执行顺序必须掌握:
?? ??? ??? ?第一步:from
?? ??? ??? ?第二步:where
?? ??? ??? ?第三步:select
?? ??? ??? ?第四步:order by(排序总是在最后执行!)

17、数据处理函数

17.1、数据处理函数又被称为单行处理函数

?? ?单行处理函数的特点:一个输入对应一个输出。

?? ?和单行处理函数相对的是:多行处理函数。(多行处理函数特点:多个输入,对应1个输出!)

17.2、lower 转换小写

select lower(ename) as ename from emp;

14个输入,最后还是14个输出。这是单行处理函数的特点。

17.3?upper 转换大写

select * from t_student;

??

select upper(name) as name from t_student;

?

17.4?substr 取子串(substr( 被截取的字符串, 起始下标,截取的长度))

select substr(ename, 1, 1) as ename from emp;

注意:起始下标从1开始,没有0.

找出员工名字第一个字母是A的员工信息

第一种方式:模糊查询

select ename from emp where ename like 'A%';

第二种方式:substr函数

 select ename from emp where substr(ename,1,1)='A';

首字母大写:

select name from t_student;

select upper(substr(name,1,1)) from t_student;

select substr(name,2,length(name) - 1) from t_student;

select concat(upper(substr(name,1,1)),substr(name,2,length(name) - 1)) as result from t_student;

?

17.5??concat函数进行字符串的拼接

select concat(empno,ename) from emp;

17.6?length 取长度

select length(ename) enamelength from emp;

17.7?trim 去空格

select * from emp where ename = '  KING';

select * from emp where ename = trim('  KING');

?

17.8?str_to_date 将字符串转换成日期

17.9?date_format 格式化日期

17.10?format 设置千分位

17.11?case..when..then..when..then..else..end

当员工的工作岗位是MANAGER的时候,工资上调10%,当工作岗位是SALESMAN的时候,工资上调50%,其它正常。
?? ??? ?(注意:不修改数据库,只是将查询结果显示为工资上调)

select ename,job,sal as oldsal,(case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 else sal end) as newsal from emp;

17.12? round 四舍五入

select 字段 from 表名;

select ename from emp;

select 'abc' from emp; // select后面直接跟“字面量/字面值”

select 'abc' as bieming from emp;

select 1000 as num from emp; // 1000 也是被当做一个字面量/字面值。

?

结论:select后面可以跟某个表的字段名(可以等同看做变量名),也可以跟字面量/字面值(数据)。

select 21000 as num from dept;

select round(1236.567, 0) as result from emp; //保留整数位。

select round(1236.567, 1) as result from emp; //保留1个小数

select round(1236.567, 2) as result from emp; //保留2个小数

select round(1236.567, -1) as result from emp; // 保留到十位。

?

select round(1236.567, -2) as result from emp;

17.13?rand() 生成随机数

select round(rand()*100,0) from emp; // 100以内的随机数

17.14?ifnull 可以将 null 转换成一个具体值

ifnull是空处理函数。专门处理空的。
?? ??? ?在所有数据库当中,只要有NULL参与的数学运算,最终结果就是NULL。

select ename, sal + comm as salcomm from emp;

?计算每个员工的年薪

年薪 = (月薪 + 月补助) * 12

?注意:NULL只要参与运算,最终结果一定是NULL。为了避免这个现象,需要使用ifnull函数。

?ifnull函数用法:ifnull(数据, 被当做哪个值)

如果“数据”为NULL的时候,把这个数据结构当做哪个值。

补助为NULL的时候,将补助当做0

select ename, (sal + ifnull(comm, 0)) * 12 as yearsal from emp;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章           查看所有文章
加:2021-10-19 11:57:30  更:2021-10-19 12:00:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:11:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码