一起重新开始学大数据-MySQL篇-Day33-SQL、建库建表、增删查改、聚合函数等

本文主要是介绍一起重新开始学大数据-MySQL篇-Day33-SQL、建库建表、增删查改、聚合函数等,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一起重新开始学大数据-MySQL篇-(1)

在这里插入图片描述

什么是数据库

在这里插入图片描述

数据库是数据的仓库
与普通的数据仓库不同的是,数据库依据数据结构来组织数据,因为数据结构的存在,所以看到的数据时条理化的
数据库和普通文件系统的区别在于:数据库拥有数据结构,能都快速查找对应的数据
常说的XX数据库,其实就是XX数据库管理系统:数据库管理系统是一个软件,是数据库服务的体现

数据库分为关系型数据库和非关系型数据库:

.关系型:以行作为记录,列数相同
.非关系型:以列作为记录,行数随便

什么是关系型数据库

关系型数据库依据关系模型创建数据库
关系模型就是一对一,一对多,多对多等关系模型,关系模型就是存储格式是以行列组成的二维表格,所以一个关系型数据库就是由二维表之间的联系所组成的一个数据组织
关系型数据库可以很好的存储一些关系模型的数据,比如老师对应学生的数据(“多对多”),一本书对应多个作者(“一对多”),一个人对应一个身份证号码(“一对一”)

什么是非关系型数据库

由于关系型太大和复杂,所以一般使用“非关系型数据”来表示其他类型的数据库
非关系型的模型比如:
列模型:存储的数据是一列一列,关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录
键值对模型:存储的数据是一个个键值对,比如name:lisi
文档类模型:以一个个文档来存储数据,类似于键值对

数据库创建流程

服务器->数据库->表(行列组成的二维表格)->行

lient操作服务器通过命令登录操作:

mysql -u用户名(默认root) -p密码

命令:

SQL语句:每个命令执行结束加分号结束
查询所有数据库:show databases;
切换数据库:use 库命名;
创建数据库:create database [IF NOT EXISTS] 库名;
删除数据库:drop database [IF EXISTS] 库名;
查询数据库创建:show 建库语句;
指定数据库采用的字符集:CHARACTER SET
注意:
不要修改mysql服务器的编码集,表的编码集默认和库一致

建表

格式:

create table [if exists] 表名(
字段1 数据类型 字段属性,
字段2 数据类型 字段属性,
...
字段N 数据类型 字段属性
)engine=引擎 default charset=编码集;

在这里插入图片描述

查看当前数据库:select database();
在这里插入图片描述

查看建表语句:show create table 表名;
在这里插入图片描述

查看表结构:desc 表名;
在这里插入图片描述

删除:drop table [if exists] 表名;
OVO不想再添加,懒得

字段属性:

not null:没给值数据为默认值(varchar默认值为空)
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1
PRIMARY KEY关键字用于定义列为主键,您可以使用多列来定义主键,列间以逗号分隔
ENGINE设置存储引擎,CHARSET 设置编码
default null:没给值数据就是null
default 值:设置字段的默认值
----注意:主键不重复的列

修改表结构:alter table
修改表名:alter table 旧表名 to 新表名;
添加字段:alter table 表名 add 字段 字段数据类型 属性;
修改字段:alter table 表名 change 旧字段 新字段 数据类型 属性;
修改字段:alter table 表名 modify 字段 数据类型 属性;

注意:
change:修改所有(字段名,数据类型,属性)
modify:修改一部分(数据类型,属性)
修改数据类型时,varchar->int原数据会变为0

增删改查:字符串全部使用’'包起来

在这里插入图片描述

insert 增:

格式:

insert into 表名(字段) values(值),(值)...(值);

例如:

insert into stduent(name) values('zs');
insert into stduent(name) values('zs'),('ls');

在这里插入图片描述

delete 删

格式:

delete from 表名 where 子句;

在这里插入图片描述

update改

格式:

update 表名 set 字段1=值1,字段2=值2...字段N=值N where 子句;
在这里插入图片描述

select查

格式:

select 字段 from 表名 where 子句;

注意:

*表示所有字段

在这里插入图片描述

起别名,子句,分页,去重

在这里插入图片描述

as 起别名

格式:

字段 as 名称

注意:

as 也加可不加

举例:列别名

在这里插入图片描述

举例:表别名

在这里插入图片描述

子句:

> 大于<小于<= 小于等于>= 大于等=等于<>不等于

注意:sql 里 符号<> 与 != 的区别

<> 与!=都是不等于的意思,但是一般都是用<>来代表不等于,因为<>在任何SQL中都起作用,但是!=在sql2000中用到,则是语法错误,不兼容的

between  ...and...显示在某一区间的值(含头含尾)in(set)显示在in列表中的值,例:in(100,200)只能匹配100或200like '张_'模糊查询  使用% 和 _(%表示匹配所有 _匹配一个)Is null判断是否为空

and多个条件同时成立or多个条件任一成立not不成立,例:where not(expection>10000);

limit分页

格式:

语句 limit 开始下标,长度;

注意:

如果数据量不够,显示全部

例如:三条语句①②③

SELECT * FROM student LIMIT 0,10;
SELECT * FROM student LIMIT 2,5;
SELECT * FROM student LIMIT 0,50;

①从位置0开始查找十条数据
②从位置2开始查找五条数据
③从位置0开始查找五十条数据,虽然数据只有十二条(1010被删除了)但是不会报错,输出全部数据

在这里插入图片描述在这里插入图片描述在这里插入图片描述

去重

格式:

DISTINCT 字段1,字段2...字段N

注意:

字段不能在DISTINCT之前,只能在DISTINCT后面
DISTINCT之后有多个字段,按照所有字段进行去重

例子

student表数据
在这里插入图片描述
执行如下三条查询语句

SELECT name,DISTINCT age FROM student;
SELECT DISTINCT name FROM student;
SELECT DISTINCT name,age from student;

第一句

在这里插入图片描述
第二句:重复的zs被只剩一个了
在这里插入图片描述
第三句:zs出现了两个,因为姓名和年龄为整体,所以年龄有区别的zs不是重复的
在这里插入图片描述0

聚合函数

在这里插入图片描述

count(字段):求多少行数据
sum(字段):求和
avg(字段):平均数
max(字段):最大值
min(字段):最小值

注意:
varchar能比较大小,不能获取avg(没有任何意义)
如果值为Null不参与计算
sumavg字段的数据不是数值,结果都是0

例:

student表数据
在这里插入图片描述

count(字段):求多少行数据

SELECT count(*) FROM student;
SELECT count(age) from student;

在这里插入图片描述在这里插入图片描述

sum(字段):求和

SELECT sum(*) FROM student;		/*查询语句一报错,因为名字等参与不了求和*/
SELECT sum(age) from student;

语句一
在这里插入图片描述
语句二
在这里插入图片描述

avg(字段):平均数

SELECT avg(age) from student;

在这里插入图片描述

max(字段):最大值

语句①查询年龄最大值
语句②查询名字最大值(结果出来了),说明名字可以比较大小

SELECT max(age) from student;
SELECT max(name) from student;

在这里插入图片描述在这里插入图片描述

min(字段):最小值

语句①查询年龄最小值
语句②查询名字最小值(结果出来了),说明名字可以比较大小

SELECT min(age) from student;
SELECT min(name) from student;

在这里插入图片描述在这里插入图片描述

字段运算与拼接

在这里插入图片描述

字段进行算术运算

格式:

(字段 符号 字段)

例如:

select (name+age) from students;

注意:

字符串参与运算字符串为0参与运算

在这里插入图片描述

拼接:

格式①:

concat(str1,str2...)

例如:把name和age以-拼接显示

select concat(name,'-',age)from students;

在这里插入图片描述

格式②:

concat_WS(separator,str1,str2,...)

例如:把name和age以-拼接显示

SELECT concat_WS('-',name,age) from student;

在这里插入图片描述

注意:

SELECT concat_WS(id,name,age) from student;

在这里插入图片描述
出现如上结果表明这种格式concat_WS(separator,str1,str2,...)固定,第一位始终为分隔符
|
|
|
|
|

前面一部分使用的是Linux里MySQL的界面,后面使用的是Navicat Premium远程连接MySQL,因为Navicat Premium的可视化界面确实好用点

本人用的Navicat Premium

链接:https://pan.baidu.com/s/1CyFbz1JDlWEooVa5dLL-rg
提取码:q6lg

对应的激活工具(安装好Navicat Premium后先点击激活工具后运行程序)

链接:https://pan.baidu.com/s/1dS6UWM3N0sP6sTjsVRc9aw
提取码:dump

|
|
|
|
|
|

上一章-Linux篇-Day32-shell脚本(2)、时间、定时器、安装MySQL

下一章-MySQL篇-Day34-日期函数、计算、排序分组筛选、连表联查等

|
|
|

听说长按大拇指👍会发生神奇的事情呢!好像是下面的画面,听说点过的人🧑一个月内就找到了对象的💑💑💑,并且还中了大奖💴$$$,考试直接拿满分💯,颜值突然就提升了😎,虽然对你好像也不需要,是吧,吴彦祖🤵!

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

这篇关于一起重新开始学大数据-MySQL篇-Day33-SQL、建库建表、增删查改、聚合函数等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871492

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间