nodejs学习笔记(11)-Mysql数据库快速入门(1)
MySQL
数据库的快速入门
- 因为要学习
nodejs
所以这里简单的入门学习一下数据库,而为什么选择MySQL
呢? 因为它是目前网上最火的数据库,同时页是免费开源的 - 这里我并没有选择安装
MySQL server
,而是选择了使用wamp
集成环境来开发,因为它相对于前者,里面已经集成了图形化处理,不再需要另外安装数据库图形化处理软件
创建数据库
SQL
的基本语法
- 插入数据
INSERT INTO `students`(`name`, `score`, `gender`) VALUES ('lam',100,1) |
- 更新数据
UPDATE `students` SET `name`='张三',`score`=20 WHERE id=2; |
- 删除数据
DELETE FROM `students` WHERE id=2; |
- 查询数据
-- 查所有的数据所有的字段(*表示选取所有的列) |
多表查询(不常用)
- 多表查询又称笛卡尔查询,使用笛卡尔查询时要非常小心,由于结果集是目标表的行数乘积,对两个各自有100行记录的表进行笛卡尔查询将返回1万条记录,对两个各自有1万行记录的表进行笛卡尔查询将返回1亿条记录
代码展示:
SELECT * FROM student , class |
结果展示:
联表查询(重点常用开发)
- 相较于上面的多表查询,联表查询就非常的重要了,它将多个表格通过
on
关键字连接起来,实现联合查询
联表查询重点分为以下三种情况:
join | a是左表,b是右表 |
---|---|
a inner join b | 表中若至少一个字段匹配,就返回 |
a left join b | 从左表中返回所有的值,即使右表中没匹配到 |
a right join b | 从右表中返回所有的值,即使左表中没匹配到 |
inner join
(交集)查询两个表格中共有的
-- inner join(交集查询) |
- 结果展示:
left join
(查询两个表格中共有的之外并包括上左表格中存在的)
-- left join(左并集查询) |
- 结果展示
right join
(查询两个表格中共有的之外并包括上坐标右表格中存在的)
-- right join(右并集查询) |
- 结果展示:
full join
(这就是上面多表查询)
外键约束(重点,结合连表查询)
什么是外键约束? 为什么需要外键约束
外键约束(
Foreign Key
)即数据库中两个数据表之间的某个列建立的一种联系。这种联系通常是以实际场景中含义完全相同的字段所造成的。MySQL
通过外键约束的引入,可以使得数据表中的数据完整性更强,也更符合显示情况。下面,我举一个例子来说明MySQL
外键约束的作用。假如我们对大学学生成绩管理系统建立数据库,有两张表,一张表是学生表,存储了学生的学号、姓名、性别、院系等信息,还有一张表是成绩表,存储了学生学号、课程编号、考试成绩等信息。这样,这两张表之间就会通过学生学号建立
外键约束
。很自然的我们想到,成绩表的学生学号依赖于学生表的学生学号存在,如果一个学生毕业、或者退学,从学生表中删除时,那么他的相关成绩也就没有必要在成绩表中存在了。在没有创建外键关系之前,这两张表完全是独立存在的,我们可以强行在成绩表中插入一个不存在学生的相关成绩,也可以强行删除学生表中的一个学生,并且不管其成绩信息是否在成绩表中存在。但是,在建立外键关系后,MySQL
数据库会约束上述两种行为,每次对数据进行插入
或者删除
时,都会检查数据完整性,使得我们的操作必须符合实际情况。
使用wamp
设置表间的外键约束
首先将关联的两个表格的存储引擎设置成
InnoDB
模式随后跳转到机构页面进行属性的关联
关联的模式如下:
CASCADE
: 在父表上update/delete记录时,同步update/delete掉子表的匹配记录SET NULL
: 在父表上update/delete记录时,将子表上匹配记录的列设为null (要注意子表的外键列不能为not null)NO ACTION
: 如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作RESTRICT
: 同no action, 都是立即检查外键约束
使用RESTRICT
(限制模式)
- 我们无法给不存在的班级添加学生,也不能更改不存在班级的学生,两者是一一对应的
使用CASCADE
- 这样我们在删除或更改班级的时候会连带班级里面的学生一起删掉或更改掉(3班的坤坤消失了,连同3版一起消失的)
使用SET NULL
(无意义)
- 改动过后该属性就会变成
null
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库