当前位置: 首页 > news >正文

MySQL 学习笔记:从基础到进阶

一、数据库简介

数据库是按照数据结构来组织、存储和管理数据的仓库,MySQL 是一种常用的关系型数据库管理系统,以其开源、高效、可靠等特点广泛应用于各种 Web 应用开发中。

二、MySQL 数据库的安装与卸载

安装 MySQL 需注意选择合适的版本,安装过程中配置好相关参数,如端口号、字符集等。卸载时要确保彻底删除相关文件和注册表信息,避免残留数据影响后续安装。

三、MySQL 数据库概念

  1. 数据库:存放数据的集合,可包含多个表。
  2. :由行(记录)和列(字段)组成,用于存储具体的数据。
  3. 字段:表中的列,定义数据的类型和约束。
  4. 记录:表中的行,包含一组相关的数据值。

四、SQL 语言

SQL(Structured Query Language)即结构化查询语言,用于数据库的通信和操作。

  1. 分类
    • 数据定义语言(DDL):用于创建、修改和删除数据库对象,如数据库、表等。
    • 数据操作语言(DML):用于对数据库中的数据进行增、删、改、查操作。
    • 数据控制语言(DCL):用于控制数据库的访问权限等。

五、数据库的操作(CURD)

  1. 创建数据库
CREATE DATABASE database_name;
  1. 查看数据库
SHOW DATABASES;
  1. 删除数据库
DROP DATABASE database_name;
  1. 修改数据库:较少直接修改数据库,通常通过修改数据库配置文件实现。

六、表结构操作(CURD)

  1. 创建表
CREATE TABLE table_name (
    field1 type(length) constraint,
    field2 type(length) constraint,
    field3 type(length) constraint
);

注意事项:

  • 表定义用小括号,结尾加分号。
  • 字段间用逗号分隔,最后一个字段后无逗号。
  • 字符串类型需指定长度,int 默认长度 11。
  1. 执行 SQL 语句
    • SELECT DATABASE();:查询当前使用的数据库。
    • USE database_name;:选择要使用的数据库。
    • 执行创建表语句。
  2. 查看表信息
DESC table_name;

七、数据库的数据类型

  1. 数值类型:如INT(整数)、DOUBLE(浮点数)等。
  2. 日期和时间类型:如DATE(日期)、DATETIME(日期时间)等。
  3. 字符串类型:如VARCHAR(可变长度字符串)、CHAR(固定长度字符串)、TEXT(大文本)等。

八、单表的约束

  1. 主键约束(重要)代表记录的唯一标识。
    • 关键字:primary key 通过该关键字声明某一列为主键。
    • 唯一                      值就不能相同
    • 非空                      值也不能为空
    • 被引用                (和外键一起来使用)
  2. 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;
    
    

    对于外键的设置,一对多的情况下,在多的一方增加字段作为外键指向一的那一方的主键。比如上面例子中的员工和部门。

九、删除和查看表

  1. 删除表
DROP TABLE table_name;
  1. 查看表
SHOW TABLES;

十、修改表

  1. 添加字段
ALTER TABLE table_name ADD column_name type;
  1. 修改字段
ALTER TABLE table_name MODIFY column_name new_type;
  1. 删除字段
ALTER TABLE table_name DROP column_name;

十一、数据的操作(CRUD)

  1. 插入数据(INSERT)
INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...);
  1. 修改数据(UPDATE)
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
  1. 删除数据(DELETE)
DELETE FROM table_name WHERE condition;
  1. 查询数据(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 子句中的运算:如比较运算(<><=>=<>)、逻辑运算(ANDORNOT)等。
  • ORDER BY 排序
SELECT * FROM table_name ORDER BY column_name ASC|DESC;

十二、聚集函数

  1. COUNT 记数
SELECT COUNT(column_name) FROM table_name;
  1. SUM 求和
SELECT SUM(column_name) FROM table_name;
  1. AVG 求平均值
SELECT AVG(column_name) FROM table_name;
  1. MAX 求最大值
SELECT MAX(column_name) FROM table_name;
  1. MIN 求最小值
SELECT MIN(column_name) FROM table_name;

十三、分组(GROUP BY)

  1. 使用 GROUP BY 字段进行分组
SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1;
  1. HAVING 过滤分组结果
SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1 HAVING condition;

HAVING 和 WHERE 均可实现过滤,但 HAVING 可使用聚集函数,WHERE 不能,HAVING 通常跟在 GROUP BY 之后。

十四、多表查询

  1. 内连接
    • 显式内连接
SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;
  • 隐式内连接
SELECT * FROM table1, table2 WHERE table1.column = table2.column;
  1. 外连接
    • 左外连接
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);

十五、表的设计

  1. 一对多关系:一个表中的一条记录对应另一个表中的多条记录。
  2. 多对多关系:两个表中的多条记录相互对应,通常通过中间表实现。
  3. 一对一关系:两个表中的记录一一对应,较少使用。

相关文章:

  • 格瑞普推出革命性半固态电池,为行业无人机续航注入未来动力
  • ib网络状态探测
  • 低代码系统-产品架构案例介绍、某PaaS(十四)
  • 如何简单的去使用jconsloe 查看线程 (多线程编程篇1)
  • 深度学习和机器学习的本质区别(白话版)
  • 基于FPGA的制冷型红外成像电路设计(论文+图纸)
  • 基于SpringBoot+vue+uniapp的投票小程序+LW示例参考
  • docker删除镜像详细教程
  • DeepSeek的本地化部署
  • 【达梦数据库】dblink连接[SqlServer/Mysql]报错处理
  • 百度搜索融合 DeepSeek 满血版,开启智能搜索新篇
  • SVM对偶问题
  • Redis 监视器:深入解析与实战指南
  • HomeAssistant 发现MQTT设备(温度,湿度,开关)
  • DelayQueue实现原理
  • 基于Vulhub靶场 | CVE-2017-12615 Tomcat文件上传漏洞
  • resultType与resultMap的区别
  • C++基础:引用,内联函数,auto,类的两种定义方式
  • 【含文档+PPT+源码】基于微信小程序的校园志愿者管理系统的设计与实现
  • CSS3 面试题 超基础 一
  • 国家林业和草原局原党组成员、副局长李春良接受审查调查
  • 脑血管支架:救命神器还是定时炸弹?听听医生的大实话
  • 人民日报钟声:通过平等对话协商解决分歧的重要一步
  • 国产水陆两栖大飞机AG600批产首架机完成总装下线
  • 美国三大指数全线高开:纳指涨逾4%,大型科技股、中概股大涨
  • 刘国中:持续加强护士队伍建设,更好保障人民身体健康