数据库的基本概念

文章目录

一、什么是关系型数据库

关系型数据库(Relational Database, 简称 RDB)是一种基于关系模型的数据存储系统。数据在数据库中以表格(Table)的形式组织,表格由行(Row)和列(Column)组成,其中每一行表示一条记录,每一列表示一个字段。它的核心概念是通过关系来管理和组织数据。

1.表(Table)

  • 数据的基本存储单位,类似于二维表格。
  • 每个表由列(字段)和行(记录)组成。
  • 表与表之间可以通过主键和外键建立关系。

2.列(Column)

  • 表中的一个字段,用于定义数据的属性(如姓名、年龄、地址等)。
  • 每列有固定的数据类型(如 INT、VARCHAR、DATE)。

3.行(Row)

  • 表中的一条记录,表示某个具体对象的数据(如某个学生的姓名和学号)。
  • 每行的数据是唯一的,可以通过主键标识。

4.主键(Primary Key)

  • 表中用于唯一标识一条记录的字段。
  • 主键值不能重复,也不能为空。

5.外键(Foreign Key)

  • 表中用来建立表与表之间关系的字段。
  • 外键引用另一个表的主键,用于确保数据的完整性和一致性。

6.关系

  • 表与表之间通过主键和外键建立连接,从而形成数据之间的逻辑关联。

二、数据库的创建和删除

1.创建数据库

创建数据库是指在数据库系统中划分一块空间,用来存储相应的数据,这是进行表操作的基础,也是进行数据库管理的基础。

在MySQL中创建数据库之前,可以使用SHOW语句来显示当前已经存在的数据库,具体SQL语句如下:

sql 复制代码
SHOW DATABASES;

执行结果如下:

基本语法:

sql 复制代码
CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARACTER SET 字符集] [COLLATE 排序规则];
  • IF NOT EXISTS: 如果数据库不存在,则创建;如果已存在,避免报错。
  • CHARACTER SET: 指定数据库的字符集(默认是 utf8mb4)。
  • COLLATE: 指定数据库的排序规则(与字符集相关,默认为 utf8mb4_general_ci)。

示例:

创建一个名为 testdb 的数据库,使用默认字符集和排序规则:

sql 复制代码
CREATE DATABASE testdb;

创建一个名为 mydb 的数据库,指定字符集为 utf8mb4,排序规则为 utf8mb4_unicode_ci:

sql 复制代码
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

创建时避免重复报错:

sql 复制代码
CREATE DATABASE IF NOT EXISTS mydb;

执行结果如下:

2.选择数据库

告诉 MySQL 当前我们要操作哪个数据库。一旦选择了数据库,后续的所有操作(如创建表、插入数据、查询数据)都会默认针对该数据库进行。

选择数据库 testdb:

sql 复制代码
USE testdb;

验证当前选择的数据库:

sql 复制代码
SELECT DATABASE();

执行结果:

3.删除数据库

在删除数据库之前,首先需要确定所操作的数据库对象已经存在。在MySQL中删除数据库可以通过SQL语句DROP DATABASE来实现。

基本语法:

sql 复制代码
DROP DATABASE [IF EXISTS] 数据库名;
  • IF EXISTS: 如果数据库存在,则删除;如果不存在,避免报错。
  • 注意: 删除数据库会移除数据库中的所有表和数据,操作需谨慎。

示例:

删除名为 testdb 的数据库:

sql 复制代码
DROP DATABASE testdb;

删除时避免报错:

sql 复制代码
DROP DATABASE IF EXISTS mydb;

三、数据表的操作

在MySQL数据中,表是一种很重要的数据库对象,是组成数据库的基本元素,由若干个字段组成,主要用来实现存储数据记录。表的操作包含创建表、查询表、修改表和删除表,这些操作是数据库对象的表管理中最基本也是最重要的操作。

先创建一个数据库:

sql 复制代码
create database school;

然后在此数据库中创建一个班级表:

sql 复制代码
CREATE TABLE class (
    ID INT AUTO_INCREMENT PRIMARY KEY,        -- 主键,自动递增
    名称 VARCHAR(100) NOT NULL,              -- 学校或班级名称,不允许为空
    班主任 VARCHAR(64) NOT NULL             -- 班主任姓名,不允许为空
);

向班级表中插入数据:

sql 复制代码
INSERT INTO class (ID, 名称, 班主任) VALUES (101, '五年级一班', '张老师');
INSERT INTO class (ID, 名称, 班主任) VALUES (102, '五年级二班', '李老师');

查询表中的数据:

查询表class中的全部记录:

sql 复制代码
select * from class;

根据ID查询指定记录:

sql 复制代码
select * from class where ID = 101;
相关推荐
夏炎正好眠29 分钟前
mysql练习
数据库·mysql
NineData1 小时前
NineData 社区版正式上线,支持一键本地化部署!
数据库·程序员
大0马浓1 小时前
LLM训练如何从图片提取信息存入向量数据库
数据库·训练·rag
鱼骨不是鱼翅1 小时前
Mybatis操作数据库----小白基础入门
数据库·mybatis
已是上好佳2 小时前
介绍一下Qt 中的QSizePolicy 布局策略
数据库·qt
钡铼技术物联网关2 小时前
导轨式ARM工业控制器:组态软件平台的“神经中枢”
linux·数据库·人工智能·安全·智慧城市
驜鸈2 小时前
MySQL 的EXPLAIN 计划 type 字段详细说明
android·数据库·mysql
XiYang-DING3 小时前
【数据库系统概论】第一章 绪论
数据库·oracle
码上飞扬3 小时前
Oracle RAC配置原理详解:构建高可用与高性能的数据库集群
数据库·oracle·rac
小刘爱喇石( ˝ᗢ̈˝ )3 小时前
行式数据库与列式数据库区别
数据库·分布式