一、认识数据库
1.1 什么是数据库
长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据仓库
1.2 数据库的特点
(1)开源免费,小巧但功能齐全
(2)可在Windows和Linux系统上运行
(3)操作方便,适用于中小型甚至大型网站应用
1.3 数据库结构
(1)Database(数据库):以文件形式存放在磁盘上,即对应于一个或者多个物理文件
(2)Table(数据表):简称表,由一组数据记录组成,数据库中的数据是以表为单位进行组织的。一个表是一组相关的按行排列的数据;每个表中都含有相同类型的信息
(3)Field(字段):也称域,表中的列,每个字段定义了存储数据的类型,例如整数、字符串、日期等
(4)Record(记录):表中的行,每一行代表一个具体的数据记录
(5)Index(索引):实际上是一种特殊类型的表,其中含有关键字段的值和指向实际记录位置的指针。用于加速数据检索的结构,可以提高查询性能
(6)SQL语句:结构化查询语句命令,用来从一个或多个表中获取一组指定的记录,或者对某个表执行指定的操作
(7)Primary Key(主键):表中唯一标识每一行的字段或字段组合,防止数据重复。
(8)Foreign Key(外键):在一个表中引用另一个表的主键,以建立两表之间的关系。
(9)Relationships:表与表之间的连接,通常通过主键和外键来实现。关系可以是:
a.一对一 (One-to-One)
b.一对多 (One-to-Many)
c.多对多 (Many-to-Many)
(10)Views(视图):基于一个或多个表的虚拟表,只显示特定字段或记录,方便对数据的访问和管理
(11)Constraints:用于限制表中数据的规则,例如唯一性约束、非空约束、外键约束等,确保数据的完整性
(12)Schema(模式):数据库中表及其关系的总体结构描述,它定义了数据库的逻辑结构
二、SQL语句分类
SQL(Structured Query Language,结构化查询语言)是一种专门用于管理关系型数据库的编程语言。它用于创建、读取、更新和删除数据库中的数据和结构。SQL 语句是大小写不敏感的,但约定使用大写字母来书写关键字,以便于识别。SQL 语句主要可以分为以下几类:
2.1 数据查询语言(DQL, Data Query Language)
(1)主要用于从数据库中查询数据。
(2)关键字:SELECT
(3)示例:
SELECT * FROM employees WHERE department = 'Sales';
2.2 数据定义语言(DDL, Data Definition Language)
(1)用于定义和管理数据库结构和模式。
(2)关键字:
CREATE:创建数据库对象(如表、视图等)
ALTER:修改已有的数据库对象
DROP:删除数据库对象
(3)示例:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50)
);
ALTER TABLE employees ADD COLUMN salary DECIMAL(10, 2);
DROP TABLE employees;
2.3 数据操作语言(DML, Data Manipulation Language)
(1)用于操作数据库中的数据(插入、更新、删除等)。
(2)关键字:
INSERT:插入新数据
UPDATE:更新已有数据
DELETE:删除数据
(3)示例:
INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'Sales');
UPDATE employees SET salary = 60000 WHERE id = 1;
DELETE FROM employees WHERE id = 1;
2.4 数据控制语言(DCL, Data Control Language)
(1)用于控制数据库用户的权限和访问权限。
(2)关键字:
GRANT:授权某个用户权限
REVOKE:撤销某个用户的权限
COMMIT:提交事务
ROLLBACK:回滚事务
(3)实例:
GRANT SELECT ON employees TO user1;
REVOKE SELECT ON employees FROM user1;
BEGIN;
INSERT INTO employees (id, name, department) VALUES (2, 'Bob', 'HR');
COMMIT;
BEGIN;
INSERT INTO employees (id, name, department) VALUES (3, 'Charlie', 'IT');
ROLLBACK; -- 回滚到上一个存储点