目录
前言
数据库是现代信息技术的重要组成部分,它在各个领域都有广泛应用,因此数据库专业人才的需求也非常高。学习数据库可以为你提供广阔的就业前景和良好的薪资待遇,同时也能够提升数据管理、数据分析和软件开发等多方面的技能。
本篇文章通过数据库构成,数据类型和约束条件这三个部分的内容,来让你了解数据库的基础知识。详细内容请看正文。
一.数据库构成
1.1 表
表(Table):用于组织和存储数据的矩阵结构。每个表包含一组字段(Columns)和记录(Rows),字段定义了数据的类型和属性,记录则是具体的数据实例。
示例代码:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
gender VARCHAR(10)
);
1.2 关系
关系(Relationship):通过公共字段(主键和外键)连接不同表之间的数据关联。关系可以是一对一、一对多或多对多。
示例代码:
CREATE TABLE courses (
id INT PRIMARY KEY,
name VARCHAR(50),
instructor_id INT,
FOREIGN KEY (instructor_id) REFERENCES instructors(id)
);
1.3 索引
索引(Index):用于提高数据的检索效率,特别是对大型数据集进行快速搜索和排序。索引基于一个或多个列的值创建。
示例代码:
CREATE INDEX idx_students_name ON students(name);
1.4 查询语言
查询语言(SQL):用于与数据库进行交互,执行数据操作和检索。常见的查询语言是结构化查询语言(SQL)。
示例代码:
SELECT * FROM students WHERE age > 20;
1.5 数据库管理系统
数据库管理系统(DBMS):用于管理和操作数据库的软件。常见的DBMS包括MySQL、Oracle和SQL Server等。
示例代码(MySQL):
CREATE DATABASE mydb;
USE mydb;
二.数据类型
2.1 整数
整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。以下是MySQL中常见的日期和时间数据类型:
这些整数数据类型可以根据需要选择有符号(可包含正负值)或无符号(仅包含非负值)。有符号整数可以表示正负整数,而无符号整数只能表示非负整数。
示例代码:
CREATE TABLE employees (
id INT PRIMARY KEY,
age TINYINT UNSIGNED,
salary BIGINT NOT NULL,
tenure SMALLINT
);
2.2 浮点
这些浮点数数据类型可以根据需要来选择合适的精度和范围。FLOAT和DOUBLE数据类型在存储大量数据时占用的空间相对较小,但存在一些舍入误差。DECIMAL数据类型提供了准确的十进制计算,但占用的存储空间相对较大。
示例代码:
CREATE TABLE products (
id INT PRIMARY KEY,
price FLOAT(8, 2),
weight DECIMAL(6, 3)
);
2.3 日期与时间
示例代码:
CREATE TABLE events (
id INT PRIMARY KEY,
event_date DATE,
event_time TIME,
event_datetime DATETIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2.4 字符串
MySQL数据库提供了多个字符串(String)数据类型,用于存储和处理文本和字符数据。以下是MySQL中常见的字符串数据类型:
示例代码:
CREATE TABLE users (
id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email CHAR(100),
bio TEXT
);
注意:
VARCHAR(M) 定义时, 必须指定 长度M,否则报错。char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
三.约束条件
3.1 主键约束
主键约束(PRIMARY KEY):用于唯一标识表中的每一行数据。主键与记录之间的关系如同身份证和人之间的关系,他们是一一对应的。以下是MySQL中主键约束的一些重要特点:
示例代码:
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100)
);
在上述示例中,`id`列被定义为主键,它将唯一标识`users`表中的每一行。
通过使用主键约束,可以确保表中的每一行都有一个唯一的标识,帮助保持数据的一致性和完整性。主键还可以作为关联表之间的连接点,用于建立表之间的关系。
3.2 唯一约束
示例代码:
CREATE TABLE users (
id INT,
username VARCHAR(50) UNIQUE,
email VARCHAR(100) UNIQUE
);
在上述示例中,`username`和`email`列都被定义为唯一约束,确保表中每个用户的用户名和电子邮件地址都是唯一的。
需要注意的是,通过使用唯一约束,可以在列或组合列上强制实施数据的唯一性。这有助于避免数据重复或重复插入,并维护数据的一致性。
3.3 外键约束
外键约束(FOREIGN KEY):用于关联两个表,确保外键列中的值存在于关联表的主键列中。外键约束可以用于维护表之间的引用完整性。以下是MySQL中外键约束的一些重要特点:
示例代码:
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
在上述示例中,`orders`表中的`customer_id`列被定义为外键,引用了`customers`表中的`id`列。这样就建立了`customers`表和`orders`表之间的关联。
3.4 非空约束
非空约束(NOT NULL):用于确保某个列中的值不为空,即不允许NULL值。以下是MySQL中非空约束的一些关键特点:
示例代码:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT NOT NULL,
department VARCHAR(50)
);
在上述示例中,`name`和`age`列被定义为非空约束,这表示在插入或更新数据时,这两个列必须包含非NULL的值。
3.5 默认值约束
默认值约束(DEFAULT):用于在插入数据时,如果未提供该列的值,则将使用默认值。以下是MySQL中默认值约束的一些关键特点:
示例代码:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100) DEFAULT 'N/A',
age INT DEFAULT 0,
department VARCHAR(50) DEFAULT NULL
);
在上述示例中,`name`列的默认值设置为字符串'N/A',`age`列的默认值设置为整数0,`department`列的默认值设置为NULL。
通过使用默认值约束,可以确保在插入数据时如果未显式提供值,那么将使用默认值填充列,从而简化了对那些常见的默认值的重复输入,提高了数据插入的效率和简洁性。