MySQL基础概念和SQL

news2024/11/25 2:32:38

目录

1.概念

1.1.什么是MySQL

1.2.关系型数据库、非关系型数据库

1.3.库、表、字段

2.数据类型

2.1.数值

2.2.字符串

2.3.日期/时间

3.结构化查询语言

3.1.DDL

3.2.DML

3.3.DCL

3.4.DQL

3.4.1.结果集

3.4.2.取别名

3.4.3.查列

3.4.4.条件查询

3.4.5.模糊查询

3.4.6.去重

3.4.7.字段运算

3.4.8.排序

3.4.9.聚合函数

3.4.10.分组

3.4.11.having函数

3.4.12.分页查询


1.概念

1.1.什么是MySQL

开源、轻量级的一款关系型数据库,在业内有着广泛应用。

1.2.关系型数据库、非关系型数据库

按照组织数据的方式进行分类,数据库可以分为关系型、非关系型两种。两者各自的特点如下:

关系型非关系型
用表格来组织数据,一个表里是一类数据用各种数据结构(如文档、键值对、列族等)来存储数据
存储的数据是结构化数据,对数据的长度、类型有严格约束存储的数据可以是半结构化、非结构化的,对数据的长度、类型没有严格约束
数据之间(表之间)可以通过主键、外键之间建立起很强的关系数据之间相对独立,没有建立起很强关联关系的方式
用 SQL 语言来操作数据,提供了强大的事务管理和 ACID 特性没有固定的查询语言,通常使用类似于文档的 API 来查询数据,一般不支持事务和ACID
适用于需要高度结构化数据和高度数据一致性的应用场景适用于需要高度可伸缩性、高速度读写、大数据处理等场景

1.3.库、表、字段

库、表、字段,可以理解为三者组成了数据库的层级结构,就像小区、单元楼、户之间的关系。

库(Database):库是一组相关的表的集合,可以看作是一个存储数据的容器。在数据库中,一个库通常对应一个应用程序或一个业务领域。

表(Table):表是一组有结构的数据集合,由若干行和若干列组成。每行表示一个记录,每列表示一种属性。表是数据库的核心,一个库可以包含多个表。

字段(Column):字段是表中的一列,用于存储一种特定类型的数据。字段具有一个名字和一个数据类型,可以包含整数、浮点数、字符串等不同类型的数据。每个字段还可以有约束条件,如主键、外键、非空约束等,用于保证数据的完整性和一致性。

主键:

表中一条数据的唯一标识,在同一个表中不允许重复,类似于一条数据的身份证号码。

外键:

用于关联两个表。两个表之间的外键值是相同的。

索引:

索引可以理解为一个

2.数据类型

MySql中常用的数据类型可以分为三类:

  • 数值

  • 字符串

  • 日期/时间

2.1.数值

类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度 浮点数值
DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度 浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

2.2.字符串

类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

2.3.日期/时间

类型大小 ( bytes)范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME8'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'YYYY-MM-DD hh:mm:ss混合日期和时间值
TIMESTAMP4'1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYY-MM-DD hh:mm:ss混合日期和时间值,时间戳

3.结构化查询语言

结构化查询语言分为四类:

  • DDL,数据库定义语言

  • DML,数据操作语言

  • DQL,数据查询语言

  • DCL,数据控制语言

3.1.DDL

DDL,数据库定义语言,用来操作库、表、字段,用来对他们进行创建、删除、修改。

建库:

create database 名字 (character set utf8);

括号中是可填参数,建库时可以指定字符集。

create table 表名{

id bigint,

name varchar(25)

} (engine=innodb default charset=utf8);

括号中是可填参数,建表的时候可以指定引擎和字符集,不指定的话会用默认的引擎和字符集。

修改表结构:

修改字段:

alter table 表名 add 字段名 数据类型;

alter table 表名 drop 字段名;

alter table 表名 modify 字段名 数据类型;

alter table 表名 change 原始列名 新列名 数据类型;

修改表名:

rename table 原始表名 to 新表名;

修改表字符集

alter table 表名 character set 字符集名;

删除表

drop table 表名;

3.2.DML

DML,数据操作语言,用来对表中的数据进行增删改查。

查询:

select * from 表名;

插入:

insert into 表名 (列名1,列名2,…) value(值1,值2,…);

注意列名和值一一对应。

批量插入:

insert into student values(2,'chen',22),(2,'chen',22);

更新:

update 表名 set 列名 =新值 where 约束条件;

不跟约束条件的话表里的数据会全改

批量更新:

updata 表名 set 列名1 =新值,列名2=新值,….,where 约束条件;

不跟约束条件的话数据会全改

3.3.DCL

DCL,数据控制语言,定义权限。用来控制数据库、表、字段、用户的访问权限和安全级别

常用关键字:grant、revoke等。

创建用户并分配权限:

create user 'usertest'@'%' indentified by '123456';

grant all privileges on mydb.* to 'usertest'@'%';

回收权限:

revoke delete on mydb.* from 'usertest'@'%'

查看权限:

show grants for 'usertest'@'%';

3.4.DQL

DQL,数据查询语言,SQL中最常用也是最核心的内容。

注意:本文的DQL暂时只限定于单表查询,多表联查在下一篇文章聊MySQL的高级内容时会细聊

3.4.1.结果集

查询出来的结果叫结果集,会以表的形式呈现,这张表是张虚拟的表,并不真实存在,存放在内存里面。

3.4.2.取别名

可以为表、字段取别名,如:

select username as un,password as pw from sys_user su where su.name='admin';

3.4.3.查列

select 列1,列2……from 表名;

3.4.4.条件查询

通过where后面的条件来约束查询的范围,where后面可以跟很多条件运算符:

3.4.5.模糊查询

通配符:

‘_’ 一个下划线代表任意单个字符

‘%’百分号表示任意个字符。

注意:通配符必须由单引号引起来,否则会报错。

3.4.6.去重

可以在字段前面跟上distinct关键字,查询结果会根据该关键字来去重。

3.4.7.字段运算

字段运算的前提是都为数值型

3.4.8.排序

使用order by来对查询结果按字段进行排序,默认是升序

也可以指定为升序或者降序:

ASC指定为升序,DESC指定为降序,此处以ASC为例:

3.4.9.聚合函数

mysql有一些内置函数用来求最大、最小、平均值、总数等。

3.4.10.分组

使用group by可以按照字段对结果集进行分组,想显示分组字段外的其他字段用group_concat函数:

分组函数可以与聚合函数联合起来用,这样聚合函数的范围会限定在每一个分组内部:

分组函数是对结果集进行分组,所以自然可以和条件函数一起联合使用:

3.4.11.having函数

havingwhere的效果不一样!!!

having写在group by的后面,分组后对数据过滤。

where写在group by的前面,分组前对数据过滤。

having可以用聚合函数,因为操作的是一个分组

where不可以用聚合函数,因为操作的是单个数据

where是让不满足条件的数据从分组里干掉,

having是干掉含有不满足条件的分组

having函数:

where函数:

3.4.12.分页查询

limit 起始位(0开始),查几位(包括当前位)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/472208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做BI财务数据分析,国产BI软件经验更足

不管是为了提高销售额,还是为了提高库存周转、疏通现金流,都离不开数据分析,特别是BI大数据分析可视化。因此这几年来BI软件在各行各业的接受度迅速提升,特别是在财务数据分析方面,国产BI软件更是经验、技术到位。要说…

【大数据之Hadoop】二十二、Yarn调度器和调度算法

Hadoop作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。 Apache Hadoop默认的资源调度器:容量调度器Capacity Scheduler。 CDH框架默认调度器是Fair Scheduler。 1 FIFO 单…

智能电动自行车充电远程管理系统

目前市场上现有的户外普通充电桩只是一个用电计量工具,无法形成一个有效的停放充电管理环境。在受到雨、雪、风、暴晒等天气影响下根本无法使用,并且存在极大的安全隐患。同时公共无限的停放也导致充电位置被闲置车辆及杂物堆放占用,经常出现真正需要充电…

前端面试题 —— CSS (二)

目录 一、transition 和 animation 的区别 二、什么是物理像素,逻辑像素和像素密度,为什么在移动端开发时需要用到3x, 2x 这种图片? 三、margin 和 padding 的使用场景 四、CSS 优化和提高性能的方法有哪些? 五、display:in…

大数据编程实验3 熟悉常用的HBase操作

实验:熟悉常用的HBase操作 1实验目的 理解HBase在Hadoop体系结构中的角色;熟练使用HBase操作常用的Shell命令; 2 实验平台 操作系统:Linux Hadoop版本:3.1.3 HBase版本:2.2.2 JDK版本:1.8 3 实验内容和…

KDJB-702继保综合检测试验仪

一、产品参数 交流电流输出 输出精度:≤0.5A 2mA >0.5A 0.2% 相电流输出(有效值):0~30A 三并电流输出(有效值):0~900A 相电流长时间允许工作值&#xff…

java开发的chatGPT机器人系统

ChatGPT机器人发展趋势: 更加个性化:随着数据和技术的不断进步,ChatGPT机器人将能够更加准确地理解用户的需求和偏好,并提供更加个性化的回复和服务。 多语言支持:随着ChatGPT在各个国家和地区的普及&#xff…

uniapp(vue2)封装子组件

创建子组件 在项目根目录下新建 components 目录,右键选择“新建组件”,创建子组件(这里以 search.vue 举例)并且为同名目录,即 components --> search --> search.vue,这样父组件可以直接使用&…

C语言-学习之路-01

C语言学习之路-01 目录关键字数据类型常量变量声明和定义进制sizeof关键字整型:intshort、int、long、long long字符型:charASCII对照表转义字符数值溢出实型(浮点型):float、double类型限定符字符串格式化输出和输入 …

深度学习笔记之稀疏自编码器

深度学习笔记之稀疏自编码器 引言引子:题目描述正确答案: A B C D \mathcal A \mathcal B \mathcal C \mathcal D ABCD题目解析 介绍:自编码器欠完备自编码器正则自编码器从先验角度解释稀疏自编码器稀疏自编码器的构建 引言 本节以一道算法…

14.基于双层优化的电动汽车优化调度研究(文章复现)

说明书 MATLAB代码:基于双层优化的电动汽车优化调度研究 关键词:双层优化 选址定容 输配协同 时空优化 参考文档:《考虑大规模电动汽车接入电网的双层优化调度策略_胡文平》中文版 《A bi-layer optimization based temporal and sp…

【OfflineExplorer篇】网站固定神器OfflineExplorer基础教程(简)

【OfflineExplorer篇】网站固定神器OfflineExplorer基础教程(简) 简单记录下,可固定特定网页数据脱机使用—【蘇小沐】 文章目录 【OfflineExplorer篇】网站固定神器OfflineExplorer基础教程(简)OfflineExplorer简介 …

C++基础 虚函数

参考 顺便记录下写的比较好的博客 C Primer Plus (第6版) C虚函数表 C内存模型 关于vtordisp知多少? 【VC】虚函数 内存结构 - 第四篇(多重继承,无虚函数覆盖) C 虚函数表剖析 虚函数 静态联编: 在编译过程中函数实现与函数关…

react相关概念

真实DOM和虚拟DOM区别 react关于虚拟DOM和真实DOM 虚拟DOM比较“轻”,真实DOM比较“重”,因为虚拟DOM是React在用,无需真实DOM上那么多属性 虚拟DOM最终一定会转为真实DOM放入页面 JSX JSX: 全称JavsScript XML 是react定义的一种类似于XM…

西门子S7-1200内部存储区和掉电数据保持设置

S7-1200内部存储区分类 S7-1200的内部存储区分为工作存储区、装载存储区和保持性存储区三种。 装载存储区 是非易失性存储区。用于存储用户项目文件(用户程序、数据和组态)。 如果不使用存储卡,用户使用TIA PORTAL软件下载项目即下载到CPU内…

jpg图片怎么压缩大小,3个有效工具分享

jpg图片怎么压缩大小?很多小伙伴都会用电脑来保存平时拍摄在的照片吧,拍摄的照片大多是jpg格式的,如果图片的体积太大,那么可能会占用很多的电脑存储空间,最后的结果是电脑变得非常慢,甚至卡死。平时我们在…

Python词云图的制作与案例分享

一、基本知识 Python 有很多可用于制作词云图的库,其中比较常用的有 wordcloud 和 jieba。 wordcloud 是一个用于生成词云图的 Python 库,其使用了 Python 的 PIL 库和 numpy 库。您可以使用 pip 命令来安装 wordcloud 库: pip install wo…

《计算机网络——自顶向下方法》精炼——2.6.2-2.7.1

“An investment in knowledge pays the best interest.” - Benjamin 文章目录 分布式散列表(键-值)对散列函数逻辑上的实现环形DHT对等方扰动对等方离开对等方加入 UDP套接字编程客户端代码服务器端代码 分布式散列表 分布式散列表是一种数据库。集中…

NIO基础 - 网络编程

non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入…

STM32配置ADC2(DMA)进行采集 DAC 输出-1

1.实验目标 在正点原子的ADC(DMA)例程上,将ADC1改成ADC2来采集电压,并且进行测试 开发板:正点原子探索者STM32F407ZG 2.查看adc.h和开发指南需要修改哪些配置 ADC相关 通过查看开发指南我们发现,ADC1 和…