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、DB、DBMS分别是什么,他们之间的关系?

DB:DataBase数据库实际上在硬盘上以文件的形式存在

DBMS:DataBase Management System数据管理系统,常见的有MySQL Oracle DB2 Sybase SqlServer...

SQL:结构化查询语句,是一门标准通用的语言,标准的sql语句,SQL 属于高级语言。SQL 语句在执行的时候,实际上内部也会先进行编译,然后再执行 sql。(sql 语句的编译由 DBMS 完成。)

DBMS执行SQL语句,通过执行SQL语句来操作DB

2.什么是表?

table是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。

行被称为数据/记录,列被称为字段

每个字段应该包括字段名、数据类型、相关的约束的属性。

3.SQL语句分类

DQL(数据查询语言):查询语句,凡是select语句都是DQL

DML(数据操作语言):insert delect update,对表中的数据进行增删改。

DDL(数据定义语句):creat drop alter,对表结构的增删改。

TCL(事务控制语言):commit 提交事务,rollback 回滚事务。(TCL 中的 T 是 Transaction)
DCL(数据控制语言): grant 授权、revoke 撤销权限等。

二、数据库操作命令(Mysql命令)

登录Mysql数据库管理系统:dos命令窗口:mysql-uroot-p333

查看有哪些数据库:show database;

创建属于自己的数据库:create database powernode;

使用powernode:user powernode;

查看当前使用的数据库有哪些表:show tables;

初始化数据:mysql> source D:\course\05-MySQL\resources\powernode.sql

删除数据库:drop database powernode;

查看表结构:desc emp;

查看当前使用的是那个数据库:select database();

查看mysql:查看mysql版本号

\c 命令,结束一条语句
exit 命令,退出 mysql

三、查询语句(DQL)

1、简单的查询语句

语法格式:select 字段名 1,字段名 2,字段名 3,.... from 表名;

注:任何一个sql语句都以;结尾,sql语句不区分大小写

给查询结果的列重命名:select ename,sal * 12 as yearsal from emp;

2、条件查询

语法格式:select? 字段,字段... from? 表名 where 条件;

select ename,sal from emp where sal between 1100 and 3000; // between...and...是闭区间 [1100 ~ 3000]。between and 在使用的时候必须左小右大。

空不是一个值,不能用等号衡量,必须使用 is null 或者 is not null。select ename,sal,comm from emp where comm is null;

or:找出工作岗位是 MANAGER 和 SALESMAN 的员工? select ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';

and 和 or 联合起来用。找出薪资大于 1000 的并且部门编号是 20 或 30 部门的员工。
select ename,sal,deptno from emp where sal > 1000 and (deptno = 20 or deptno =30);
当运算符的优先级不确定的时候加小括号
in 后面的值不是区间,是具体的值 。select ename,job from emp where sal in (800, 5000);
not in: 不在这几个值当中。select ename,job from emp where sal not in (800, 5000);
like 模糊查询 ,%代表任意多个字符,_代表任意 1 个字符。select ename from emp where ename like '%O%';
3、排序
默认是升序。怎么指定升序或者降序呢?asc 表示升序,desc 表示降序
select ename , sal from emp order by sal asc; // 升序
select ename , sal from emp order by sal desc; // 降序。
当工资相同的时候再按照名字的升序排列
select ename,sal from emp order by sal desc , ename asc;
越靠前的字段越能起到主导作用。只有当前面的字段无法完成排序的时候,才会启用后面的字段。
4、分组函数
分组函数还有另一个名字:多行处理函数。 多行处理函数的特点:输入多行,最终输出的结果是 1 行。
count 计数 、sum 求和 、avg 平均值 、max 最大值 、min 最小值
5、单行处理函数
使用 ifnull 函数:select ename,(sal+ifnull(comm,0))*12 as yearsal from emp;
6、group by 和 having
group by : 按照某个字段或者某些字段进行分组。
having : having 是对分组之后的数据进行再次过滤。
当一条语句中有 group by 的话,select 后面只能跟分组函数和参与分组 的字段。
总结一个完整的 DQL 语句
select? ? ? ? ?5
..
from? ? ? ? ? ?1
..
where? ? ? ? ?2
..
group by? ? ?3
..
having? ? ? ? 4
..
order by? ? ? 6
..

四、事务(Transaction)

1、什么是事务?

事务是一个完整的业务逻辑单元,不可再分。例如,两条DML语句必须同时成功,或者同时失败,不允许出现一条成功,一条失败。

2、和事务相关的语句只有:DML语句(insert delete update)为什么?

因为这三句话都是和数据库表中的“数据“”相关的。事务的存在是为了保证数据的完整性,安全性。

3、事物的特性

事务包括四大特性:ACID

A:原子性:事务是最小的工作单元,不可再分。

C:一致性:事务必须保证多条DML语句同时成功或者同时失败。

I:隔离性:事务A和事务B之间具有隔离

D:持久性:持久性是最终数据必须持久化到硬盘文件,事务才算成功的结束。

4、事物之间的隔离性

理论上隔离级别包括4个:

第一级别读未提交:对方事务还没有提交,当前事务可以读取到对方未提交的数据。读未提交存在脏读现象,表示读到了脏的数据。

第二级别读已提交:对方事务提交之后的数据我方可以读取到。这种隔离级别解决了: 脏读现象没有了。 读已提交存在的问题是:不可重复读。

第三级别可重复读(repeatable read)这种隔离级别解决了:不可重复读问题。 这种隔离级别存在的问题是:读取到的数据是幻象。
第四级别:序列化读/串行化读(serializable) 解决了所有问题。 效率低。需要事务排队。
oracle 数据库默认的隔离级别是:读已提交。 mysql 数据库默认的隔离级别是:可重复读。
5、演示事务
怎样关闭自动提交start transaction?
回滚 mysql> rollback;
持久化到硬盘mysql> commit;

五、索引

1、什么是索引?有什么用?为什么可以提高索引效率?

索引就相当于一本书的目录,通过目录可以快速的找到对应的资源。 在数据库方面,查询一张表的时候有两种检索方式: 第一种方式:全表扫?第二种方式:根据索引检索(效率很高),根本原理是缩小了扫描的范围。索引虽然可以? 高检索效率,但是不能随意的添加索引,因为索引也是数据库当中的对象,也需要数据库不断的维护。表中的数据经常被修改,就不适合添加索引。
2、怎样创建索引对象?怎样删除索引对象
创建索引对象: create index 索引名称 on 表名(字段名);
删除索引对象: drop index 索引名称 on 表名;
3、什么时候考虑给字段添加索引?(满足什么条件)
* 数据量庞大。(根据客户的需求,根据线上的环境)
* 该字段很少的 DML 操作。(因为字段进行修改操作,索引也需要维护)
* 该字段经常出现在 where 子句中。(经常根据哪个字段查询)
注意:主键和具有 unique 约束的字段自动会添加索引。 根据主键查询效率较高。尽量根据主键检索。
添加索引
4、索引底层采用的数据结构是:B+tree
5、索引的实现原理:
通过Btree缩小扫描范围,底层索引进行排序,分区,索引会携带数据在表中的“物理地址”
最终通过索引检索到数据之后,获取关联的物理地址,通过物理地定位表中的数据,效率是最高的
6、索引的分类
单一索引:给单个字段添加索引
复合索引: 给多个字段联合起来添加 1 个索引
主键索引:主键上会自动添加索引
唯一索引:有 unique 约束的字段上会自动添加索引

7、索引什么时候失效?

select ename from emp where ename like '%A%';
模糊查询的时候,第一个通配符使用的是%,这个时候索引是失效的。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:27:20  更:2021-10-28 12:27:24 
 
开发: 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:50:15-

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