A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fanLey 初级黑马   /  2019-7-14 14:59  /  933 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数据库基础
一 . SQL分类
                1) DDL(Data Definition Language)数据定义语言
                        用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
                2) DML(Data Manipulation Language)数据操作语言
                        用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
                3) DQL(Data Query Language)数据查询语言
                        用来查询数据库中表的记录(数据)。关键字:select, where 等
                4) DCL(Data Control Language)数据控制语言(了解)
                        用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
二. CRUD
        1. 添加数据:
                * 语法:
                        * insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
                * 注意:
                        1. 列名和值要一一对应。
                        2. 如果表名后,不定义列名,则默认给所有列添加值
                                insert into 表名 values(值1,值2,...值n);
                        3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来
        2. 删除数据:
                * 语法:
                        * delete from 表名 [where 条件]
                * 注意:
                        1. 如果不加条件,则删除表中所有记录。
                        2. 如果要删除所有记录
                                1. delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
                                2. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
        3. 修改数据:
                * 语法:
                        * update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
                * 注意:
                        1. 如果不加任何条件,则会将表中所有记录全部修改。
4. 查询数据
        1. 语法:
                select
                        字段列表
                from
                        表名列表
                where
                        条件列表
                group by
                        分组字段
                having
                        分组之后的条件
                order by
                        排序
                limit
                        分页限定

2.  分页查询
                1. 语法:limit 开始的索引,每页查询的条数;
                2. 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数
三.  表与表关系
1. 多表之间的关系
                1. 分类:
                        1. 一对一(了解):
                                * 如:人和身份证
                                * 分析:一个人只有一个身份证,一个身份证只能对应一个人
                        2. 一对多(多对一):
                                * 如:部门和员工
                                * 分析:一个部门有多个员工,一个员工只能对应一个部门
                        3. 多对多:
                                * 如:学生和课程
                                * 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择
                2. 实现关系:
                        1. 一对多(多对一):
                                * 如:部门和员工
                                * 实现方式:在多的一方建立外键,指向一的一方的主键。
                        2. 多对多:
                                * 如:学生和课程
                                * 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键
                        3. 一对一(了解):
                                * 如:人和身份证
                                * 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。
四. 事务
1. 概念:
                如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
2. 事务的四大特征:
                1. 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
                2. 持久性:当事务提交或回滚后,数据库会持久化的保存数据。
                3. 隔离性:多个事务之间。相互独立。
                4. 一致性:事务操作前后,数据总量不变
3. 事务的隔离级别(了解)
                * 概念:多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
                * 存在问题:
                        1. 脏读:一个事务,读取到另一个事务中没有提交的数据
                        2. 不可重复读(虚读):在同一个事务中,两次读取到的数据不一样。
                        3. 幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。
                * 隔离级别:
                        1. read uncommitted:读未提交
                                * 产生的问题:脏读、不可重复读、幻读
                        2. read committed:读已提交 (Oracle)
                                * 产生的问题:不可重复读、幻读
                        3. repeatable read:可重复读 (MySQL默认)
                                * 产生的问题:幻读
                        4. serializable:串行化
                                * 可以解决所有的问题

                        * 注意:隔离级别从小到大安全性越来越高,但是效率越来越低

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马