# 111 **Repository Path**: java-luosifen-store-manager/111 ## Basic Information - **Project Name**: 111 - **Description**: No description available - **Primary Language**: 其他 - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-27 - **Last Updated**: 2024-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: SQL ## README # MYSQL ## 第一章 ### 数据库 数据库(database,DB)是一个有组织的相关数据集合,可以通过计算机进行访问,管理和更新数据.这类数据集合通常被组织成表格,每个表情包含多个列和行,每定义了表格中的一个特定数据类型,每行则代表一个实体或一个记录。 ### 数据库管理系统 数据库管理系统(DBMS)是一种位于用户和操作系统之间的大型管理软件,他是数据库系统的核心,主要用户管理和操作数据库 ## 第二章 ### 数据模型 #### 概念模型 1. 实体:实体是指现实世界独立存在和可辨认的对象和事务。实体可以拥有一个或多个属性,用户描述实体特征。 2. 属性:用户描述实体的各种特征。属性可以是简单属性,也可以是符合属性 3. 关系:用于描述实体之间的交互和联系。一对一,一对多,多对多 4. 约束条件:约束条件是指实体,属性,关系的限制条件,用于保证数据的完整性和准确性。 #### 基本数据模型 ### 数据模型三要数 #### 数据结构 #### 数据操作 #### 条件约束 1. 实体完整性约束:实体完整性约束是指对数据库表中每条记录的唯一限制,确保表中每行数据都是唯一的,不重复的完整。常见实体完整性约束包括主键约束和唯一约束。 2. 参照完整性约束:参照完整性约束是指在一个表中的某个列指向另外一个表中的某个列时,保证引用表中的数据和操作时有效和正确定的。(外键约束) 3. 域完整性约束:域完整性约束用于保证数据表中每个属性的数据类型,取值范围和格式都符合规定。(非空约束,检查约束) ### 关系类型(基本关系,查询表,视图表) ### 使用数据库 ``` sql -- 创建数据库 CREATE DATABASE 数据库名; -- 查看数据库 SHOW DATABASE; -- 切换数据库 USE 数据库名; ``` ### 数据表 ``` sql -- 创建表语法 CREATE TABLE 表名(字段信息,字段信息,...); -- 实例 CREARE TABLE student( id INT PRIMARY KEY AUTO_INCREMNT, name VARCHAR(20), birthday DATE, age INT NOT NULL DEFAULT 18, ); -- 删除表 DROP TABLE IF EXISTS student; ``` ### 条件约束 ##### 主键约束 PRIMARY KEY #### 唯一约束 UNIQUE #### 外键约束 CONSTRAINT 外键名 FOREIGN KEY 外键名 REFERENCES 关联表(id) #### 非空约束 NOT NULL #### 自增约束 AUTO_INCREMENT #### 检查约束 CHECK(age>18) #### 默认约束 DEFAULT ## 第三章 数据的管理 ### 插入数据 ``` sql -- 插入一条数据 INSERT INTO 表名(字段1,字段2,...,字段n) VALUES(字段1的值,字段2的值,...,字段n的值); -- 插入多条数据 INSERT INTO 表名(字段1,字段2,...,字段n) VALUES (字段1的值,字段2的值,...,字段n的值), -- 第1行 (字段1的值,字段2的值,...,字段n的值), -- 第2行 (字段1的值,字段2的值,...,字段n的值), -- 第3行 ... -- 省略 (字段1的值,字段2的值,...,字段n的值), -- 第n行 ``` ### 更新数据 ``` sql -- 更新一个字段 UPDATE 表名 SET 字段=字段值; -- 更新多个字段 UPDATE 表名 SET 字段1=字段值1,...,字段n=字段值n; -- 条件更新 UPDATE 表名 SET 字段=字段值 WHERE id=1; ``` ### 删除数据 ``` sql --删除全部数据 DELETE FROM 表名; --删除部分数据 DELETE FROM 表名 WHERE 条件表达式; ``` ## 第四章 查询入门 ``` sql -- 简单查询 SELECT 字段...FROM 表名 -- 实例 select id,student_name FROM student; select * FROM student;-- 查询全字段 -- 条件查询 SELECT * FROM student WHERE id=1001; -- 字段别名和表别名 SELECT s.id AS 学号,s.student FROM student AS s; ``` ### LIMIT查询 ``` sql -- 分页查询 第一个参数+1是要开始的行 第二个参数是几行数据 select * from student LIMIT 0,5;-- 从第一行显示五条数据 select * from student LIMIT 5,5;-- 从第二行显示五条数据 ``` ### ORDER BY排序查询 `ASC`升序,`DESSC`降序 ``` sql -- 学生年龄升序 SELECT * FROM student ORDER BY age ASC; ``` ## 第五章 模糊查询与分组查询 ### 模糊查询 `%`任意数量字符 `-`单个任意字符 ``` sql -- 查询包含云字的姓名 许云 云曦 SELECT * FROM student where student_name like `%云%`; -- 查询学号 SELECT * FROM student where id like `233040105%`; ``` ### 常见函数 ### 分组函数 ``` sql -- 分组统计班级人数 select count(*)AS 人数,classID from student group by classID; ``` ## 第六章 多表连接查询 ### 交叉连接 CROSS JOIN ### 内连接 INNER JOIN ### 外连接 (左外连接,右外连接) ``` sql -- 左查询 查询学生和班级信息 select *,c.class_name FROM student AS s LEET JOIN class AS c ON s.classID=c.id; --右外查询 略 ``` ### UNLON操作符 ## 四七章 AQL高级子查询 ``` sql -- 子查询结果一个 select * from student where classID= (select classID from student where name='许名瑶'); -- classID= 限制了子查询只能查询出一个classID ``` ### 高级子查询 ``` sql -- 查询结果多个 select * from student classID IN (select classID from student where name='许名瑶'); ``` ``` sql -- 高级子查询 插入数据 insert into score_backup(exam_score,studentID,couseID) select (exam_score,studentID,courseID) from score; -- 子查询插入不写values,查询数据字段需要和插入字段对应 ``` ## 第八章 事务,索引和视图 ## 事务的概念 ### 1.基本特特性 ``` -- 事务是保证数据完整性和一致性的机制,是一种操作序列,序列中包含了一组数据库操作命令。事务这种机制把命令当作一个整体一起向数据管理系统提交或撤销。也就是说这组命令要么全部执行,要么全部不执行。全部执行则提交事务修改数据,全部不执行则数据库回滚到事务执行之前的状态。 ``` #### 2.事务操作对象 ``` -- 事务针对数据库中的DML(数据操作语言),设计增加(insert),更新(update),删除(delete)这些操作。查询语句不需要事务。 ``` #### 3.提交,回滚事务 ``` -- 将一组SQL操作的数据提交库,通知数据库按照最终的数据修改自身的数据称之为提交事务。如果将SQL操作的数据提交不提交给数据库,而是直接抛弃,就称之为回滚事务。 ``` #### 事务的四个属性 ``` 1. 原子性 -- 事务包含的所有SQL操作被视为一个整体(就像原子一样不可再分),这个整体要么全部执行成功,要么全部回滚,不会出现部分的执行情况。 2. 一致性 -- 事务操作前后,数据库中的数据应该保持一致。在一个事务中,如果对某个数据进行了修改,那么这个数据的取值就应该是修改后的值,而不是修改前的值。 3. 隔离性 -- 事务的操作应该是相互隔离的,一个事务的操作应该对其他事务的操作不产生影响。 4. 持久性 -- 事务一旦提交,其结果应该是永久的,并且对数据库的影响是持久的。后续即使系统发生崩溃或出现其他类似的灾难性事件,也不应该影响事务的持久性。 ```