解锁数据世界:从基础到精通的数据库探索之旅

文章目录

  • 一. 数据库介绍
    • 1. 数据库的重要性
    • 2. 常用关系型数据库
      • Oracle数据库
      • MySQL数据库
      • SQL Server数据库
  • 二. SQL语言概述
    • 数据库相关操作
      • 1.创建数据库
      • 2. 删除数据库
    • 数据库表
    • 数据类型
    • 表的创建
    • 表的约束
      • 主键约束 (primary key)
      • 非空约束 (not null)
      • 唯一约束 (unique)
      • 默认值约束 (default)
      • 检查约束 (check)
      • 自增字段 (auto_increment)
  • 三. 数据相关操作
    • 插入(INSERT)
    • 查询(SELECT)
    • 删除(DELETE)
    • 更新(UPDATE)
  • 四. 数据查询
    • 1.查询-字段别名
    • 2.查询-条件查询
    • 3.查询-模糊查询
    • 4.查询-排序查询
    • 5.查询-去重查询
    • 6.LIMIT 的使用
    • 7.SQL中的函数
      • 字符串函数
      • 数学函数
      • 日期函数
      • 聚合函数
      • 其他函数
    • 8.联表查询
      • 内联接(INNER JOIN)
      • 左联接(LEFT JOIN)
      • 右联接(RIGHT JOIN)
    • 9.分组及筛选

一. 数据库介绍

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

每个数据库都有一个或多个不同的API接口用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢,所以现在我们使用关系型数据库管理系
统(RDBMS)来存储和管理的大数据量。
所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的
数据。
按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库、网状数据库和关系型数据库。
而在当今的互联网企业中,最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即表格形式)。在关系型数据库中,对数据的操
作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管
理。

1. 数据库的重要性

  • 数据一致性:数据库设计有严格的数据完整性和一致性规则,这确保了即使在并发操作的情况下,数据仍然

保持正确无误。

  • 数据共享:数据库允许多个应用程序或多个用户同时访问相同的数据集,这提高了数据的可用性和工作效

率。

  • 安全性:数据库通常具有安全措施,如权限控制和加密技术,以保护敏感信息免受未授权访问或篡改。

  • 备份与恢复:数据库管理系统支持定期备份数据,以便在硬件故障或其他灾难性事件发生时能够迅速恢复数

据。

  • 可扩展性:随着业务增长,数据库可以进行扩展以处理更多的数据量和更高的访问频率,这对于长期运营的

系统来说是非常重要的。

2. 常用关系型数据库

Oracle数据库

Oracle前身叫SDL,由Larry Ellison和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场
上大量销售,1979年,Oracle公司引入了第一个商用SQL关系数据库管理系统。Oracle公司是最早开发关系数
据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率数一数二。
Oracle公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商。
2007年7月12日,甲骨文公司在美国纽约宣布推出数据库Oracle llg,这是Oracle数据库的最新版本。
Oracle介绍说,Oracle llg有400多项功能,经过了1500万个小时的测试,开发工作量达到了3.6万人/月。
Oraclellg在安全,XML DB,备份等方面得到了很大提升。
主要应用范围:传统大企业,大公司,政府,金融,证券等等。
版本升级:Oracle8i,Oracle9i,Oracle10g,Oracle11g,Oracle12c。

MySQL数据库

MySQL数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典MySQL AB公司。在2008年1月16号被
Sun公司收购,后Sun公司又被oracle公司收购。目前MySQL被广泛地应用在Internet上的大中小型网站中。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多大中小型网站为了降低网站总体拥有
成本而选择了MySQL作为网站数据库,甚至国内知名的淘宝网也选择弃用ORACLE而更换为更开放的MySQL。
MySQL数据库主要应用范围:互联网领域,大中小型网站,游戏公司,电商平台等等。

SQL Server数据库

Microsoft SQL Server是微软公司开发的大型关系型数据库系统。SQL Server的功能比较全面,效率高,
可以作为中型企业或单位的数据库平台。SQL Server可以与Windows操 作系统紧密集成,不论是应用程序开
发速度还是系统事务处理运行速度,都能得到较大的 提升。对于在Windows平台上开发的各种企业级信息管理
系统来说,不论是C/S(客户机/ 服务器)架构还是B/S(浏览器/服务器)架构,SQL Server都是一个很好的
选择。SQL Server的缺点是只能在Windows系统下运行

二. SQL语言概述

SQL(Structured Query Language)是一种用于管理和处理关系数据库的标准语言。

它主要用于执行查询、更新、管理数据库中的数据以及定义和操作数据库结构。

数据库相关操作

1.创建数据库

创建数据库是通过SQL语句来完成的,通常使用 create database 语句。一旦创建了数据库,就可以在其上定义表和其他数据库对象。

SQL语句:

create database bookstore;
-- 这条语句创建了一个名为 bookstore 的数据库

2. 删除数据库

删除数据库是通过SQL语句来完成的,通常使用 drop database 语句。

删除数据库会永久删除数据库及其所有内容,因此在执行此操作前请谨慎考虑。

SQL语句:

drop database bookstore;
-- 这条语句删除了名为 bookstore 的数据库

数据库表

数据库表是用来存储数据的二维表格,每一行称为一条记录(或元组),每一列表示一个属性(或字段)。

表中的每一行记录代表一个对象的状态,而每一列表示对象的一个属性。

在面向对象编程中,对象是类的实例,具有状态和行为。

在数据库设计中,表可以看作是对类的实例化,每条记录就是一个对象,而每一列表示对象的属性。

在这个表格中, id 是主键, name 是作者的名字, bio 是作者的简介。

idnamebio
1莫言中国当代著名作家,诺贝尔文学奖得主。
2金庸中国武侠小说泰斗,代表作《射雕英雄传》

数据类型

数据类型定义了可以存储在字段中的数据种类。选择合适的数据类型对于保证数据完整性和提高性能至关重要。

常用数据类型:

  • 整型 ( int ):用于存储整数。
  • 浮点型 ( double ):用于存储带有小数的数值。
  • 字符型 ( varchar ):用于存储文本字符串。
  • 日期时间型 ( date ):用于存储日期。

表的创建

创建表是通过SQL语句来完成的,通常使用 create table 语句。创建表时可以定义表中的各个字段及其数据类型。

SQL语句

create table student (
id int,
name varchar(100),
age int
);

表的约束

主键约束 (primary key)

主键约束用于唯一标识表中的每一条记录。每张表都应该具备一个主键。

作用:确保字段值的唯一性。数据不可重复。

SQL语句:

create table student (
id int primary key,
name varchar(100),
age int
);
-- 主键约束确保了表中的每一条记录都是唯一的,这有助于后续的操作,例如查询、更新或删除单条记录

非空约束 (not null)

非空约束确保字段值不能为空。

作用:防止数据丢失或错误。

SQL语句:

create table student (
id int primary key,
name varchar(100) not null,
age int
);
非空约束确保了某些关键字段(如姓名)必须有值,这样可以避免数据的不完整性。
-- 非空约束确保了某些关键字段(如姓名)必须有值,这样可以避免数据的不完整性。

唯一约束 (unique)

唯一约束确保字段或字段组合的值在表中是唯一的。

作用:避免重复数据。

SQL语句:

create table student (
id int primary key,
name varchar(100) not null,
email varchar(255) unique
);

默认值约束 (default)

默认值约束为字段提供默认值,在插入新记录时不指定值时自动使用。

作用:简化数据输入。

SQL语句:

create table student (
id int primary key,
name varchar(100) not null,
age int default 18
);
-- 默认值约束可以在插入记录时如果没有指定某些字段的值时,默认使用设定的值,从而简化数据输入过程

检查约束 (check)

检查约束确保字段值满足特定条件。

作用:防止无效数据的插入

SQL语句:

create table student (
id int primary key,
name varchar(100) not null,
age int check (age ≥ 0 and age ≤ 150)
);
-- 检查约束确保了年龄字段的值在合理的范围内,这样可以避免无效的数据插入。

自增字段 (auto_increment)

自增字段在每次插入新记录时自动增加,通常用于主键字段。

作用:简化主键的管理。

SQL语句:

create table student (
id int auto_increment primary key,
name varchar(100) not null,
age int
);
-- 自增字段确保了每次插入新记录时,主键字段自动递增,不需要手动指定,这样可以简化主键的管理。

三. 数据相关操作

插入(INSERT)

INSERT INTO tb (c1, c2,...)
VALUES (v1, v2,...);

查询(SELECT)

SELECT column1, column2, ...
FROM table_name
WHERE condition;

删除(DELETE)

DELETE FROM table_name WHERE condition;

更新(UPDATE)

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

四. 数据查询

1.查询-字段别名

语法说明:

字段别名是通过 AS 关键字或者直接跟在列名后使用,可以给查询结果中的列名赋予新的名称,方便展示或者处理。

查询用户信息并给电话列命名为“联系电话”
SELECT name, phone AS 联系电话 FROM user;

2.查询-条件查询

语法说明:

条件查询是通过 WHERE 子句指定查询条件,只返回符合条件的记录

查询特定用户的电话号码
SELECT * FROM user WHERE phone = '13812345678';

3.查询-模糊查询

语法说明

模糊查询是通过 LIKE 操作符配合通配符 % 和 _ 实现模式匹配。

%表示一个或多个字符,_表示一个字符

查询身份证号码包含 “678” 的用户
SELECT * FROM user WHERE nric LIKE '%678%';
查询房间编号中第三个字符为 “号” 的房间
SELECT * FROM room WHERE no LIKE '__号%';

4.查询-排序查询

语法说明:

排序查询是通过 ORDER BY 子句对查询结果进行排序,可以指定一个或多个列,并指定升序(ASC,默认)或降序(DESC)

按价格升序显示所有房间的信息
SELECT * FROM room ORDER BY price ASC;
按类型名称降序显示所有房间的信息
SELECT * FROM room ORDER BY type_id DESC;

5.查询-去重查询

语法说明:

去重查询是通过 DISTINCT 关键字去除查询结果中的重复行,常用于统计不同的值。

显示所有房间的价格分段
SELECT DISTINCT price FROM room;

6.LIMIT 的使用

LIMIT 子句用于限制从数据库表中选择的记录数量。它通常用于分页显示结果或者获取前几条记录。

SELECT ... FROM table_name
LIMIT offset,count;

7.SQL中的函数

字符串函数

  1. UPPER(column) - 将字符串转换为大写。
  2. LOWER(column) - 将字符串转换为小写。
  3. CONCAT(column1, column2, ...) - 将多个字符串连接成一个字符串。
  4. SUBSTRING(column, start, length) - 截取字符串的一部分。
  5. LENGTH(column) - 获取字符串的长度。
  6. replace(column, old, new) - 将字符串转换为小写。

数学函数

  1. ABS(column) - 计算绝对值。
  2. CEIL(column) - 向上取整。
  3. FLOOR(column) - 向下取整。
  4. ROUND(column) - 四舍五入。

日期函数

  1. NOW() - 获取当前日期和时间。
  2. YEAR(date) - 提取日期中的年份。
  3. MONTH(date) - 提取日期中的月份。
  4. DAY(date) - 提取日期中的天数。

聚合函数

COUNT() : 计算符合条件的行数。

计算所有用户的总数:
SELECT COUNT(*) AS 总用户数
FROM user;

SUM() : 计算数值列的总和。

计算所有房间的价格总和:
SELECT SUM(price) AS 总价格
FROM room;

AVG() : 计算数值列的平均值。

计算所有房间的平均价格:
SELECT AVG(price) AS 平均价格
FROM room;

MAX() : 找出一列中的最大值。

找出最贵的房间价格
SELECT MAX(price) AS 最高价格
FROM room;

MIN() : 找出一列中的最小值。

找出最便宜的房间价格
SELECT MIN(price) AS 最低价格
FROM room;

其他函数

  1. IFNULL(column, default_value) - 如果列值为 NULL,则返回默认值。

8.联表查询

内联接(INNER JOIN)

概念:

INNER JOIN 只返回两个表中匹配的行。如果某一行在其中一个表中没有匹配,则该行不会出现在结果集中。

列出所有房间及其对应的类型名称:
SELECT r.no AS 房间编号, t.name AS 类型名称
FROM room r
INNER JOIN type t ON r.type_id = t.id;

左联接(LEFT JOIN)

概念:

LEFT JOIN 返回左表中的所有行和右表中匹配的行。如果右表中没有匹配,则使用NULL填充右表中的列。

列出所有房间及其对应的类型名称(即使没有类型也要列出):
SELECT r.no AS 房间编号, t.name AS 类型名称
FROM room r
LEFT JOIN type t ON r.type_id = t.id;

右联接(RIGHT JOIN)

概念:

RIGHT JOIN 返回右表中的所有行和左表中匹配的行。如果左表中没有匹配,则使用NULL填充左表中的列。

列出所有房间类型及其对应的房间信息(即使没有房间也要列出):
SELECT t.name AS 类型名称, r.no AS 房间编号, r.description AS 描述, r.price AS 价格
FROM type t
RIGHT JOIN room r ON t.id = r.type_id;

9.分组及筛选

概念:

GROUP BY 子句用于组合数据,通常与聚合函数一起使用。

HAVING 子句用于对 GROUP BY 子句生成的结果集进行筛选。

计算每个用户的预定次数:
SELECT u.name AS 用户姓名, COUNT(*) AS 预定次数
FROM user u
INNER JOIN plan p ON u.id = p.user_id
GROUP BY u.name;

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

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

相关文章

【Flink】-- flink新版本发布:v2.0-preview1

目录 1、简介 2、非兼容变更 2.1、API 2.2、连接器适配计划 2.3、配置 2.4、其它 3、重要新特性 3.1、存算分离状态管理 3.2、物化表 3.3、批作业的自适应执行 3.4、流式湖仓 4、附加 4.1、非兼容性的 api 程序变更 4.1.2、Removed Classes # 4.1.3、Modified Cl…

ffmpeg+D3D实现的MFC音视频播放器,支持录像、截图、音视频播放、码流信息显示等功能

一、简介 本播放器是在vs2019下开发,通过ffmpeg实现拉流解码功能,通过D3D实现视频的渲染功能。截图功能采用libjpeg实现,可以截取jpg图片,图片的默认保存路径是在C:\MYRecPath中。录像功能采用封装好的类Mp4Record实现&#xff0c…

webpack指南

​🌈个人主页:前端青山 🔥系列专栏:webpack篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来webpack篇专栏内容:webpack-指南 概念 中文: webpack | webpack中文文档 | webpack中文网 英文&…

把越南语翻译成中文一般用什么翻译工具?《越南语翻译通》App或许能满足你的技术痛点需求!

在多语言交流日益频繁的今天,掌握越南语对于商务、旅游或学术交流都是一项重要技能。《越南语翻译通》App应运而生,旨在通过技术手段简化越南语学习和翻译过程,满足用户在不同场景下的需求。 核心技术 《越南语翻译通》App采用了先进的自然语…

Android Framework AMS(16)进程管理

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要解读AMS 进程方面的知识。关注思维导图中左上侧部分即可。 我们本章节主要是对Android进程管理相关知识有一个基本的了解。先来了解下L…

Rust Struct 属性初始化

结构体是用户定义的数据类型,其中包含定义特定实例的字段。结构有助于实现更容易理解的抽象概念。本文介绍几种初始化结构体对象的方法,包括常规方法、Default特征、第三方包实现以及构建器模式。 Struct声明与初始化 struct Employee {id: i32,name: …

Vue全栈开发旅游网项目(10)-用户管理后端接口开发

1.异步用户登录\登出接口开发 1.设计公共响应数据类型 文件地址:utils/response404.py from django.http import JsonResponseclass BadRequestJsonResponse(JsonResponse):status_code 400def __init__(self, err_list, *args, **kwargs):data {"error_c…

数据结构:队列

目录 概念与结构底层结构的选择队列的实现队列头文件(queue.h)队列初始化队列的销毁入队列检查队列是否为空出队列查询队列第一个数据查询队列末尾数据查询队列有效数据个数代码试运行 概念与结构 概念:只允许在⼀端进行插⼊数据操作&#x…

Clickhouse集群新建用户、授权以及remote权限问题

新建用户 create user if not exists user on cluster 集群名称 IDENTIFIED WITH plaintext_password BY 密码;给用户授查询、建表、删表的权限 GRANT create table,select,drop table ON 数据库实例.* TO user on cluster 集群名称 ;再其他节点下用户建本地表成功&#…

JavaWeb--MySQL

1. MySQL概述 首先来了解一下什么是数据库。 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。 像我们日常访问的电商网站京东,企业内部的管理系统OA、ERP、CRM这类的系统,以及大家每天都会刷的头条、抖音…

i春秋-SQLi(无逗号sql注入,-- -注释)

练习平台地址 竞赛中心 题目描述 后台有获取flag的线索应该是让我们检查源码找到后台 题目内容 空白一片 F12检查源码 发现login.php 访问login.php?id1 F12没有提示尝试sql注入 常规sql注入 //联合注入得到表格列数 1 order by 3 # 1 union select 1,2,3 #&#xff08…

基于Spring Boot的电子商务平台架构

2 相关技术 2.1 SpringBoot框架介绍 Spring Boot是一种不需要代码生成的一种框架,并且可以不需要配置任何的XML文件就可以,因为Spring Boot里面自带了很多接口,只需要配置不同的接口就会自动的应用并且识别需要的依赖,在配置方面非…

华为云分布式缓存服务(DCS)专家深度解析Valkey,助力openEuler峰会

在数字化时代,开源技术已成为推动创新和协作的重要力量。 11月15日,openEuler峰会将于北京中关村国际创新中心举行。本次峰会,华为云分布式缓存服务(DCS)的两位专家将为大家深入讲解Valkey的核心特性与优势。 更多大…

如何进行产线高阶能耗数据的计算和可视化?

一、前言 在当前经济下行时期,越来越来多企业开始对产线进行数字化转型,提高企业竞争力。在产线数字化转型过程中,产线高阶能耗数据的计算和可视化是比较重要的一环,今天小编就和大家分享如何对产线能耗数据进行计算和可视化。 …

vsftp 修改端口 限制用户登录 开启防火墙 pasv模式

安装设置开机启动 yum -y install vsftpd systemctl start vsftpd systemctl enable vsftpd 修改配置,追加端口号到最后一行 vim /etc/vsftpd/vsftpd.conf listen_port5510 编辑 /etc/services 文件,将其中的三行端口改成5510 vim /etc/services ftp …

IntelliJ IDEA插件开发-代码补全插件入门开发

使用IntelliJ IDEA想必大家都有使用过代码自动补全功能,如输入ab,会自动触发补全,提供相应的补全建议列表。作为有追求的程序员,有没有想过这样的功能是如何实现的?本节将详细介绍如何实现一个类似的代码自动补全插件。…

❤React-React 组件基础(类组件)

❤React-React 组件基础 1、组件化开发介绍 组件化开发思想:分而治之 React的组件按照不同的方式可以分成类组件: 划分方式一(按照组件的定义方式) 函数组件(Functional Component )和类组件(Class Component); …

Python →爬虫实践

爬取研究中心的书目 现在&#xff0c;想要把如下网站中的书目信息爬取出来。 案例一 耶鲁 Publications | Yale Law School 分析网页&#xff0c;如下图所示&#xff0c;需要爬取的页面&#xff0c;标签信息是“<p>”&#xff0c;所以用 itemssoup.find_all("p&…

机器学习: LightGBM模型(优化版)——高效且强大的树形模型

LightGBM&#xff08;Light Gradient Boosting Machine&#xff09;是一种基于梯度提升决策树&#xff08;GBDT&#xff09;的框架&#xff0c;由微软提出。它具有高效的训练速度、低内存占用、支持并行和GPU加速等特点&#xff0c;非常适合大规模数据的训练任务&#xff0c;尤…

《内存函数》

内存函数 1. memcpy函数 &#xff08;1&#xff09;介绍 这里通过memcpy的定义我们可以看这个函数包含三个参数&#xff0c;destination就是拷贝的目的地&#xff0c;source就是拷贝的源头&#xff0c;num就是拷贝的个数。 &#xff08;2&#xff09;使用 这里要包含头文件s…