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