1、关系型数据库的典型概念
数据库 databse:数据的仓库
![c263884a87a123cf909252de842672a6.png](https://i-blog.csdnimg.cn/blog_migrate/7cef908ff0b5b364dd78cba7361aa247.jpeg)
表 table:数据是保存在表内,保存在一个表内的数据,应该具有相同的数据格式 行:行用于记录数据 记录:行内的数据 列:列用于规定数据格式 字段:数据的某个列
![92526139f0ce6a1a23bc596e92b334c3.png](https://i-blog.csdnimg.cn/blog_migrate/ca566a4645a604588a765fd0a5f7d4a9.jpeg)
SQL:用来管理数据的语言。结构化查询语言(SQL,Structured Query Language)
![da4619a2e42dd00b50a4d1692c38c2ef.png](https://i-blog.csdnimg.cn/blog_migrate/d1ea090640cc6807b41234fd3f7711c4.jpeg)
主键:唯一地标识表中的某一条记录,不能空,不能重复
2、登录数据库
![403069cbe27e0c1457ccfab2f3ab258d.png](https://i-blog.csdnimg.cn/blog_migrate/ca659932679babd26ed23e4f6cf25aad.jpeg)
*连接本地数据库时需要启动服务
![6c4492f92d051492889533585a73057b.png](https://i-blog.csdnimg.cn/blog_migrate/39afe3e80c8723e2a77be41c00d1e24b.jpeg)
3、创建数据库
![63a1f1fd338f997d3ef029f2fe7751c3.png](https://i-blog.csdnimg.cn/blog_migrate/60b5248608f2a2d20f79ce5ecdf17800.jpeg)
![4bb9bd31739571804c2cf93de1bc4988.png](https://i-blog.csdnimg.cn/blog_migrate/4b247e95f70114f1ac0cdc313e3691c0.jpeg)
4、创建表
![060b07eb2f2b0a3a98acea3eecf035d8.png](https://i-blog.csdnimg.cn/blog_migrate/0033a78dab52885f4908297d45f602b9.jpeg)
![6290b37e726f409938fa9616b0afbb9e.png](https://i-blog.csdnimg.cn/blog_migrate/91b8751a44c2eb1dd453ecd8fe611063.jpeg)
列的类型:
![4694e92e8d7033d5350010909d367233.png](https://i-blog.csdnimg.cn/blog_migrate/92bf32edeee805fa0ec8e7251b0044ae.jpeg)
数字类型
整数: tinyint、smallint、mediumint、int、bigint浮点数: float、double、real、decimal日期和时间: date、time、datetime、timestamp、year 字符串类型字符串: char、varchar文本: tinytext、text、mediumtext、longtext
二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob
列的约束:
![4a31cfb24bfd28cda8aaea597cbc7e1d.png](https://i-blog.csdnimg.cn/blog_migrate/a8716da819ec72bab62fe18af7fb8a31.jpeg)
5、管理数据
5.1、添加数据
双击新建好的表名,打开表,就可以添加数据了。
![fce87f96c885c5d653dc932689f5a896.png](https://i-blog.csdnimg.cn/blog_migrate/d3efa369c222e4eb30b729b5167673e2.jpeg)
5.2、删除数据
![d1faf939fb545dc2c87457f5a5af12aa.png](https://i-blog.csdnimg.cn/blog_migrate/d6b5b47b6ab66591503a15b00abf9767.jpeg)
5.3、修改表结构
如果想向现有的表中添加一列,则可以修改表结构:
![98bf8d5348d6304c9ec6217c79c8f637.png](https://i-blog.csdnimg.cn/blog_migrate/a7fec630e08040c6eda584962e9c7863.jpeg)
5.4、外键
![3355cad66d45d5ff26cc3f64b79c6308.png](https://i-blog.csdnimg.cn/blog_migrate/2fc1f5aa23ddf90c8c4a884a19ce310c.jpeg)
上面这个学生表是有些问题的:
a)、不便于修改,比如教室换成了305教室,则每个学员都要修改
b)、数据冗余,大量的重复数据
将表拆分成两个,分解后问题解决,如下图所示:
![ca516dc2392ee992c9b4514f5aef3dd8.png](https://i-blog.csdnimg.cn/blog_migrate/de298d1a2655904b4835cdb63fb566e4.jpeg)
这里的班级编号就是外键,可以空,但不为空时他的值一定在要引用表中存在。如果学生表中的编号是主键这里就不应该重复,外键则可以重复也允许为空。
添加外键:
班级表:
![f61ae59479289c83b1c9dfc011efabee.png](https://i-blog.csdnimg.cn/blog_migrate/15dd83b1ada02c5c8a1c4cb6f68ca765.jpeg)
学生表:
![f65fcfaaab97f88b2fc5970d01329b83.png](https://i-blog.csdnimg.cn/blog_migrate/8018c002f32cf960c97bc31426300a7a.jpeg)
添加外键:
![e5c29dc16c52d11c06540313f4b41755.png](https://i-blog.csdnimg.cn/blog_migrate/a85973856e74eaef0a34b253f6a930c7.jpeg)
删除与更新时可以实现级联更新与删除,当更新设置为CASCADE时主键变化引用主键的表也会一起变化,当删除设置为CASCADE时删除主键表,引用的记录都将被删除。
4.5.5、唯一键
唯一键,也称(唯一约束),和主键的区别是可以为有多个唯一键并且值可以为NULL,但NULL也不能重复,也就是说只能有一行的值为NULL。它会隐式的创建唯一索引。
设置方法:索引 --> 添加索引 --> 栏位名 添加你想设置唯一约束的列 --> 索引类型选择 Unique
![26aed1ba35a4d98e80615859d195f1fd.png](https://i-blog.csdnimg.cn/blog_migrate/03468cc09937383218b73a25d73d4cb0.jpeg)
6、上机练习
1、请创建一个新的数据库叫HR,在HR数据库中添加EMP表,EMP表的表结构如下所示
EMP表,员工信息
![c70849a4d3c3ad624ac31781303c20e0.png](https://i-blog.csdnimg.cn/blog_migrate/9a6f1926282f146f7a37170f7c97ed8a.jpeg)
Dept,部门表
![8ade4ffbc9f080f78f8d72bb892b6f42.png](https://i-blog.csdnimg.cn/blog_migrate/ac10a7583ce5992dcc1189fe8e33a0c6.jpeg)
2、根据上面的表结构完成表的创建,表名为emp
3、在表中添加5条以上的数据
4、完成下列查询要求
4.1查询所有员工信息4.2查询所有工资介于2000-5000间的员工姓名、职位与工资4.3查询所有姓“张”的员工4.4 按工资降序查询出2014年到2015年间入职的员工4.5、将工资普遍上调20%4.6、将工资低于3000元的员工奖金修改为工资的2.8倍4.7、删除编号为5或者姓“王”的员工