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

devtools/2024/11/20 4:02:15/

文章目录

  • 一. 数据库介绍
  • 二. SQL语言概述
    • 数据库相关操作
    • 数据库
    • 数据类型
    • 表的创建
    • 表的约束
      • 主键约束 (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语句:

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

2. 删除数据库

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

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

SQL语句:

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

数据库

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

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

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

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

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

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

数据类型

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

常用数据类型:

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

表的创建

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

SQL语句

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

表的约束

主键约束 (primary key)

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

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

SQL语句:

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

非空约束 (not null)

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

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

SQL语句:

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

唯一约束 (unique)

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

作用:避免重复数据。

SQL语句:

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

默认值约束 (default)

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

作用:简化数据输入。

SQL语句:

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

检查约束 (check)

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

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

SQL语句:

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

自增字段 (auto_increment)

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

作用:简化主键的管理。

SQL语句:

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

三. 数据相关操作

插入(INSERT)

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

查询(SELECT)

mysql">SELECT column1, column2, ...
FROM table_name
WHERE condition;

删除(DELETE)

mysql">DELETE FROM table_name WHERE condition;

更新(UPDATE)

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

四. 数据查询

1.查询-字段别名

语法说明:

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

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

2.查询-条件查询

语法说明:

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

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

3.查询-模糊查询

语法说明

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

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

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

4.查询-排序查询

语法说明:

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

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

5.查询-去重查询

语法说明:

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

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

6.LIMIT 的使用

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

mysql">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() : 计算符合条件的行数。

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

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

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

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

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

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

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

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

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

其他函数

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

8.联表查询

内联接(INNER JOIN)

概念:

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

mysql">列出所有房间及其对应的类型名称:
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填充右表中的列。

mysql">列出所有房间及其对应的类型名称(即使没有类型也要列出):
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填充左表中的列。

mysql">列出所有房间类型及其对应的房间信息(即使没有房间也要列出):
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 子句生成的结果集进行筛选。

mysql">计算每个用户的预定次数:
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.ppmy.cn/devtools/135378.html

相关文章

泷羽sec渗透DC靶场(1)完全保姆级学习笔记

前言 本次学习的是在b站up主泷羽sec课程完整版跳转链接有感而发,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 &#xff0…

日常ctf

1, [陇剑杯 2021]日志分析(问1) %2e 为URL编码的符号 "." flag{www.zip} 2, [陇剑杯 2021]日志分析(问2) 根据之前题目的分析,在获取到源码文件之后,黑客又成功访问了in…

汽车资讯新动力:Spring Boot技术驱动

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

【论文阅读】Large Language Models for Equivalent Mutant Detection: How Far Are We?

阅读笔记:Large Language Models for Equivalent Mutant Detection: How Far Are We? 1. 来源出处 本文发表于《ISSTA’24, September 16–20, 2024, Vienna, Austria》会议,由Zhao Tian, Honglin Shu, Dong Wang, Xuejie Cao, Yasutaka Kamei和Junji…

机器学习算法之KNN分类算法【附python实现代码!可运行】

一、简介 在机器学习中,KNN(k-Nearest Neighbors)分类算法是一种简单且有效的监督学习算法,主要用于分类问题。KNN算法的基本思想是:在特征空间中,如果一个样本在特征空间中的k个最相邻的样本中的大多数属…

Dowex 50WX8 ion-exchange resin可以用于去除水中的金属离子(如钠、钾、镁、钙等)和其他杂质,提高水质,11119-67-8

一、基本信息 中文名称:Dowex 50WX8 离子交换树脂 英文名称:Dowex 50WX8 ion-exchange resin CAS号:11119-67-8 供应商:陕西新研博美生物科技 外观:米色至浅棕色或绿棕色粉末/微球状 纯度:≥95% 分子…

数据分析-48-时间序列变点检测之在线实时数据的CPD

文章目录 1 时间序列结构1.1 变化点的定义1.2 结构变化的类型1.2.1 水平变化1.2.2 方差变化1.3 变点检测1.3.1 离线数据检测方法1.3.2 实时数据检测方法2 模拟数据2.1 模拟恒定方差数据2.2 模拟变化方差数据3 实时数据CPD3.1 SDAR学习算法3.2 Changefinder模块3.3 恒定方差CPD3…

Elasticsearch 重建索引 数据迁移

Elasticsearch 重建索引 数据迁移 处理流程创建临时索引数据迁移重建索引写在最后 大家都知道,es的索引创建完成之后就不可以再修改了,包括你想更改字段属性或者是分词方式等。那么随着业务数据量的发展,可能会出现需要修改索引,或…