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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 只需一文,带你吃透数据库及SQL语句(上) -> 正文阅读

[大数据]只需一文,带你吃透数据库及SQL语句(上)

一、SQL,DB,DBMS及三者关系?

DBMS 数据库管理系统

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

SQL 结构化查询语言 这是一个标准的SQL语言适合于所有的数据库产品。
SQL属于高级语言。只要能看懂英语单词的,写出来的SQL语句,可以读懂什么意思。

SQL语句在执行的时候,实际上内部也会先进行编译,然后再执行SQL。(SQL语句的编译由DBMS完成)

(注意SQL语句每一条SQL语句独立执行,且前期在cmd中进行使用SQL语句可以明显感受到,一条SQL语句分号只能出现一次,分号出现,被编译检测到,立刻到此结束,类似方法中写一个return,检测到,秒结束,秒中断!)

DBMS负责执行SQL语句,通过执行SQL语句来操作DB当中的数据。
DBMS–执行–>SQL–操作–>DB

数据库管理系统通过执行SQL语句来对数据库进行操作!

而且SQL语句一定要小心翼翼,很多操作是直接对硬盘进行操作的,不可逆,例如update 和 delete 一定要加删除条件,不然把客户数据整丢了你可废废了

二、什么是表

table 是DB中组织数据的基本数据单元

表:table,是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。
一个表包括
行:被称为数据/记录(data)
列:被称为字段(column)

每一列,也叫每一个字段 应该包括 :

字段名,数据类型,相关的约束


三、SQL语句分类

DQL????????查询语句? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 就是一句select查询

DML????????对数据进行操作增删改? ? ? ? ? ?delete update insert

DDL????????数据定义语言? ? ? ? ? ? ? ? ? ? ? ? create drop alter

TCL????????事务控制语言? ? ? ? ? ? ? ? ? ? ? ? commit rollback 事务提交,事务回滚

DCL????????数据控制语言? ? ? ? ? ? ? ? ? ? ? ? grank授权? revoke取消授权


四、初识数据库:带你用小黑框(cmd)轻松拿捏~~~

进入cmd

windows+r 输入 cmd 回车?

登录mysql

有人在旁边

mysql -uroot -p
*****
//此处第二行再输入密码

其中u是username 用户名 p是password 密码

也可以如下:直接显示密码登录

-uroot -prota

mysql退出

?显示电脑硬盘上所有的数据库

?

show databases;

创建数据库

create database new_database_for_csdn;

删除数据库

注意是 drop,drop,drop!!!!!

删除表

也是使用drop

关于删除操作的叮嘱:

但是对表中一条或者多条数据进行操作就是delete了,一定记得限制范围!

不然业务中把客户数据删除了可白给了。

还有,drop前一定要反复确认客户需求,刻在磁盘上的,啪的一下就没了!

切换要使用的数据库

显示数据库内的表

use databasename;//要使用的数据库名
show tables;

?查询自己用的mysql版本,

便于后续配相应版本jar包:

查询正在使用的数据库:

查询当前使用的数据库:

select databases();

显示当前使用的数据库的所有表名:

show tables;

查询建表语句:

注意,从查库,到查表,到查建表语句,这些都是一个show走天下,但是这些show 都不是SQL命令,是MySQL自带的!

?向数据库中导入数据:使用source导入:

sql脚本?

此时导入的文件时sql脚本。

比如电商双十一夜里客户的数据,那个大脚本,你记事本打得开?

这时候就需要知道什么是sql脚本了:

当一个文件的扩展名是.sql,并且该文件中编写了大量的sql语句,我们称这样的文件为sql脚本。
注意:直接使用source命令可以执行sql脚本。
sql脚本中的数据量太大的时候,无法打开,请使用source命令完成初始化。

五、具体的sql语句


sql语句不区分大小写 以分号结尾

sql语句不区分大小写,但是对于表中的数据,是严格区分大小写的

如字段column? name这一列:大写的史密斯Smith和小写的smith有区别


Oracle语法和SQL语句很严密

Mysql语法还是很松散的,不是很严谨严格

规范起见,为了程序健壮性

请在字符串中使用单引号

另外注意,字符串虽然Mysql支持双引号,且高版本不加单引号、双引号也可以

但是MySQl毕竟只是操作数据库的工具,为了程序的健壮性

还是建议字符串用单引号括起来


between and

在内连接之非等值连接中也有出现,区间范围。

左小右大 ,数字方面左右都是闭区间,如[10,20]就是大于等于10,小于等于20

大于等于and小于等于

也可以用于字符,在字符中左闭右开 ,但是用的非常少


is NULL, is not NULL

此处注意 这里不能用 等号 和 !=?

在MySQL中等号是等量关系,NULL就不是量。是空的。


and 和 or 的优先级

and 和 or 连起来 and优先级更高

or 优先级低,但是可以加括号


like是模糊查询

其中百分号是任意多个字符? ? %

下划线是任意一个字符? ? ? ? ?_

如果要转义,转义字符用斜杠,输出


关于排序

排序要注意语法规范

要排序的列? 排序方式

如 :studenNO? ?DESC

默认是升序排列 asc

降序排列desc

按照两个字段排序 ,

order by a,b的意思是先按照a字段排序,如果排序中分不出来前后,再按照b的条件排


分组函数 count sum max avg min

这五个组合函数。

五个聚合函数(max,min,avg,sum,count) 这五个函数是不能作为聚合条件的,这五个函数是不能作为where的子句的,因为你的一条sql语句的执行顺序就是,from,where,group,having,select,order by

也就是说你前面的执行按照顺序应该是你在后面的语句

这在语法严格的Oracle里是不可行的,所以Mysql的语法还是很松散的!~

特点 分组函数 不能直接出现在 where 的后面

where 语句的 嵌套子查询可以避免这种 情况,例如? 查询高于平均工资的人的姓名

把查询的avg作为筛选条件放入 where

where salary >(select avg(salary) from table)

//但是注意这里的嵌套子查询语句不能加分号,上文我提到过,一条SQL语句检测到分号立马停止斩立决!

分组函数分组函数 group by 是分组

分组之后才能用,每分组您去哪儿用分组函

分组函数还有一个机制是自动忽略NULL,不需要我们手动去除

不想去除NULL 就 加限制条件。

分组查询能按照一个或者多个字段联合分组

如果一条语句有group by 的话

select 后面 只能跟 参加分组的 字段 或者就是分组函数

在Oracle中直接报错了

而且group by 和 having 是兄弟俩

不见group by

having 是不能用的

having的出现就是为了 group by 服务!~

所以总结到这里,一条SQL语句的执行顺序就是

先from 定你要去的地方,哪个表

然后 where 去哪个表的哪儿

(这里插一句,99版本的join on 这个连接条件真的巧妙,节省出来where用于下一次过滤)

接着group分组

再用 group的亲兄弟 having 分组筛选

最后返回select

查询出来 的结果集

如果需要排序,就order by?

不写默认升序排序 ASC ,写了DESC是降序排序!

再输出出来.


本部分内容属于本人的牛客刷题记录,掌握了上述知识点,这些题真可谓手到擒来!

六、牛客刷题记录

  • 🔲sql去重 ,了解DISTINCT关键字

查询结果只有universiy这一列,可以用group by 去重 ,

但是本题考查的思想主要是是关键字distinct去重

其中关于distinct 关键字还要一个妙用

那就是在一个表格中,查询不同的ID有多少条

可以使用语句

select count(distinct id)from tablename;

其中count方法真的是懂英文就知道它的功能,如名所示是用来count的

它也是一个组合函数(MAX,MIN,SUM,AVG,COUNT)

再次强调当筛选方法的条件中含有这五个组合方法时,不能写在where的子句中哦

要写在having子句中,此外 having 和 group by 这个真的是亲兄弟方法,

两个捆绑在一起,必须先分组 group by ,才能再用having筛选,如果

  • 🔲只要求输出前两行,limit关键字

select device_id from user_profile limit 0,2;

或者

select device_id from user_profile limit 2;

都可以实现输出前两行

  • 🔲起别名 select 原名字 as 别名(输出表格用别名替代)

select device_id as user_infos_example from user_profile limit 2;

  • 🔲注意排序方式是 order 列名,asc

排序方式在后面,升序排列为asc,降序排列为desc。

  • 🔲注意Mysql 中 关于NULL
  • 🔲是 is Null 和 is not Null 而不是 !=

  • 🔲in 适用于多种情况的条件下

  • 🔲使用max方法 与 不使用 max方法

select university,
avg(question_cnt) as avg_question_cnt,
avg(answer_cnt) as avg_answer_cnt
from user_profile
group BY university

having avg(question_cnt)<5 or avg(answer_cnt)<20;


七、小结

初识数据库,总结本文,一起学习,共同进步!

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 09:57:56  更:2021-11-27 09:58:05 
 
开发: 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 7:29:54-

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