一、数据库简介
数据库是按照数据结构来组织、存储和管理数据的仓库,MySQL 是一种常用的关系型数据库管理系统,以其开源、高效、可靠等特点广泛应用于各种 Web 应用开发中。
二、MySQL 数据库的安装与卸载
安装 MySQL 需注意选择合适的版本,安装过程中配置好相关参数,如端口号、字符集等。卸载时要确保彻底删除相关文件和注册表信息,避免残留数据影响后续安装。
三、MySQL 数据库概念
- 数据库:存放数据的集合,可包含多个表。
- 表:由行(记录)和列(字段)组成,用于存储具体的数据。
- 字段:表中的列,定义数据的类型和约束。
- 记录:表中的行,包含一组相关的数据值。
四、SQL 语言
SQL(Structured Query Language)即结构化查询语言,用于数据库的通信和操作。
- 分类 :
- 数据定义语言(DDL):用于创建、修改和删除数据库对象,如数据库、表等。
- 数据操作语言(DML):用于对数据库中的数据进行增、删、改、查操作。
- 数据控制语言(DCL):用于控制数据库的访问权限等。
五、数据库的操作(CURD)
-
创建数据库:
CREATE DATABASE database_name;
-
查看数据库:
SHOW DATABASES;
-
删除数据库:
DROP DATABASE database_name;
-
修改数据库:较少直接修改数据库,通常通过修改数据库配置文件实现。
六、表结构操作(CURD)
-
创建表:
CREATE TABLE table_name (
field1 type(length) constraint,
field2 type(length) constraint,
field3 type(length) constraint
);
注意事项:
- 表定义用小括号,结尾加分号。
- 字段间用逗号分隔,最后一个字段后无逗号。
- 字符串类型需指定长度,int 默认长度 11。
-
执行 SQL 语句 :
SELECT DATABASE();
:查询当前使用的数据库。USE database_name;
:选择要使用的数据库。- 执行创建表语句。
-
查看表信息:
DESC table_name;
七、数据库的数据类型
- 数值类型 :如
INT
(整数)、DOUBLE
(浮点数)等。 - 日期和时间类型 :如
DATE
(日期)、DATETIME
(日期时间)等。 - 字符串类型 :如
VARCHAR
(可变长度字符串)、CHAR
(固定长度字符串)、TEXT
(大文本)等。
八、单表的约束
- 主键约束(重要)代表记录的唯一标识。
- 关键字:primary key 通过该关键字声明某一列为主键。
- 唯一 值就不能相同
- 非空 值也不能为空
- 被引用 (和外键一起来使用)
sql
create table dept(
did int primary key auto_increment, dname varchar(30)
);
create table emp(
eid int primary key auto_increment, ename varchar(30),
sal double, dno int
);
insert into dept values (1,'研发部'); insert into dept values (2,'人事部');
insert into emp values (null,'聪聪',15000,1); insert into emp values (null,'邦邦',5000,1); insert into emp values (null,'美美',6000,2);
insert into emp values (null,'小凤',8000,2);
insert into emp values (null,'如花',8000,null);
问题:
* 直接把研发部删除掉。delete from dept where did = 1; 能删除成功。
* 在现实生活中,不合理。如果你避免问题的发生,两个表之间设置关系。
1. 引入外键的约束
2. 添加外键
* 正常的情况下(一个部门有多个员工,一个员工只能属于一个部门)
* 设置员工标签的dno字段,作为外键,指向部门表的主键。
* 修改员工的表,在员工添加外键。
* alter table emp add foreign key emp (dno) references dept (did);
3. 直接添加外键
* 在创建表的时候,指定外键
create table emp(
eid int primary key auto_increment, ename varchar(30),
sal double, dno int,
foreign key emp(dno) references dept (did)
);
3.直接删除部门,这回不行了。
delete from dept where did = 1;
对于外键的设置,一对多的情况下,在多的一方增加字段作为外键指向一的那一方的主键。比如上面例子中的员工和部门。
九、删除和查看表
-
删除表:
DROP TABLE table_name;
-
查看表:
SHOW TABLES;
十、修改表
-
添加字段:
ALTER TABLE table_name ADD column_name type;
-
修改字段:
ALTER TABLE table_name MODIFY column_name new_type;
-
删除字段:
ALTER TABLE table_name DROP column_name;
十一、数据的操作(CRUD)
-
插入数据(INSERT):
INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...);
-
修改数据(UPDATE):
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
-
删除数据(DELETE):
DELETE FROM table_name WHERE condition;
-
查询数据(SELECT) :
- 基本查询:
SELECT column1, column2 FROM table_name;
-
使用运算和别名:
SELECT column1 + column2 AS sum_result FROM table_name;
-
使用 WHERE 条件过滤:
SELECT * FROM table_name WHERE column_name = value;
-
WHERE 子句中的运算 :如比较运算(
<
,>
,<=
,>=
,<>
)、逻辑运算(AND
,OR
,NOT
)等。 -
ORDER BY 排序
SELECT * FROM table_name ORDER BY column_name ASC|DESC;
十二、聚集函数
-
COUNT 记数:
SELECT COUNT(column_name) FROM table_name;
-
SUM 求和:
SELECT SUM(column_name) FROM table_name;
-
AVG 求平均值:
SELECT AVG(column_name) FROM table_name;
-
MAX 求最大值:
SELECT MAX(column_name) FROM table_name;
-
MIN 求最小值:
SELECT MIN(column_name) FROM table_name;
十三、分组(GROUP BY)
-
使用 GROUP BY 字段进行分组:
SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1;
-
HAVING 过滤分组结果:
SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1 HAVING condition;
HAVING 和 WHERE 均可实现过滤,但 HAVING 可使用聚集函数,WHERE 不能,HAVING 通常跟在 GROUP BY 之后。
十四、多表查询
-
内连接 :
- 显式内连接:
SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;
-
隐式内连接:
SELECT * FROM table1, table2 WHERE table1.column = table2.column;
-
外连接 :
- 左外连接:
SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.column = table2.column;
-
右外连接:
SELECT * FROM table1 RIGHT OUTER JOIN table2 ON table1.column = table2.column;
子查询:在一个查询中嵌套另一个查询,如:
SELECT * FROM table1 WHERE column > (SELECT AVG(column) FROM table1);
十五、表的设计
- 一对多关系:一个表中的一条记录对应另一个表中的多条记录。
- 多对多关系:两个表中的多条记录相互对应,通常通过中间表实现。
- 一对一关系:两个表中的记录一一对应,较少使用。