数据库的基本概念

文章目录

一、什么是关系型数据库

关系型数据库(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;
相关推荐
hef2885 小时前
如何生成特定SQL的AWR报告_@awrsqrpt.sql深度剖析单条语句性能
jvm·数据库·python
xcjbqd06 小时前
Python API怎么加Token认证_JWT生成与验证拦截器实现
jvm·数据库·python
二月十六7 小时前
SQL Server 2022 新语法:IS [NOT] DISTINCT FROM 彻底解决 NULL 比较难题
数据库·sqlserver
~ rainbow~7 小时前
前端转型全栈(四)——常见的错误及解决方案
数据库·oracle·全栈
数厘7 小时前
2.1SQL 学习:先懂数据库概念再学 SQL
数据库·sql·学习
Cat_Rocky7 小时前
redis哨兵模式
数据库·redis
广师大-Wzx8 小时前
一篇文章看懂MySQL数据库(下)
java·开发语言·数据结构·数据库·windows·python·mysql
hef2888 小时前
golang如何使用range over func_golang range over func迭代器使用方法
jvm·数据库·python
qq_380619169 小时前
html如何查看windows
jvm·数据库·python
爱学习的小邓同学9 小时前
MySQL --- MySQL数据库基础
数据库·mysql