数据库Mysql

1、 mysql和oracle的区别

a) Oracle是大型数据库Mysql是小型,oracle市场占有率比mysql高,mysql免费oracle价格高

b) Oracle支持大并发,大访问量

c) Mysql逐渐自增长,oracle没有自增长一般是序列

d) Mysql可以用双引号包起字符,oracle只可以单引号,在插入和修改字符前必须做单引号的替换

e)Mysql分页关键词limit
oracle分页rownum

2、 sql之链接查询

a)左连接:以左表为基准查询匹配右表,如果匹配就显示相应字段,不匹配,用null填充

b) 右链接:以右表为基准查询匹配左表,如果匹配就显示相应字段,不匹配,用null填充

c)全连接:先以左表进行左外链接,然后以右表进行右外链接

d) 内连接:显示表之间有连接匹配的所有行

3、 聚合函数

Count 统计数量、sum求和、avg求平均、max最大值、min最小值

4、 sql注入

selectadminfromuserwhereusername=‘admin’or’a’=‘a’andpasswd=’‘or’a’=‘a’
防止 SQL 注入,使用预编译语句是预防 SQL 注入的最佳方,如selectadminfromuserwhereusername=?Andpassword=? 使用预编译的 SQL 语句语义不会发生改变,在SQL 语句中,变量用问号?表示
注意:使用mybatis时mapper中#方式能够很大程度防止sql注入$方式无法防止sql注入

5、 sqlselect语句完整执行顺序

from------where------group by-----having----计算所有的表达式----order by------select输出

6、 存储引擎

对于 MySQL 5.5 及更高版本,默认的存储引擎是 InnoDB。在 5.5 版本之前,MySQL的默认存储引擎是MyISAM。

1, InnoDB 存储引擎,特点:行锁设计、支持外键、支持非锁定读

2, MyISAM 存储引擎

3, NDB 存储引擎

4, Memory 存储引擎

5, Archive 存储引擎

6, Federated 存储引擎

7, Maria 存储引擎

7、索引

1.什么是索引?
索引是 MySQL 数据库中的重要对象之一,用于快速找出某个列中有某一特定值的行。

2.为什么要使用索引
索引是 MySQL 中一种十分重要的数据库对象
3.索引的分类
B+树索引 hash索引 FULLTEXT索引 R-Tree索引从物理存储角度
1、聚集索引(clustered index)

2、非聚集索引(non-clustered index)
从逻辑角度
1、主键索引:主键索引是一种特殊的唯一索引,不允许有空值
2、普通索引或者单列索引
3、多列索引(复合索引)
4、唯一索引或者非唯一索引
5、全文索引

8、数据库三范式
数据库三范式主要是为了设计出高效率、优雅的数据库,否则可能会设计出错误的数据库
第一范式(1NF),原子性,列或者字段不能再分
第二范式(2NF),唯一性,不存在部分依赖
第三范式(3NF),直接性,不存在传递依赖

9、数据库事务
1、事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向
系统提交,要么都执行、要么都不执行,事务必须具备以下四个属性
2、事务控制语句

BEGIN 或 START TRANSACTION 显式地开启一个事务;

COMMIT 也可以使用 COMMIT WORK,不过二者是等价的。

COMMIT 会提交事务,并使已对数据库进行的所有修改成为永久性的;

ROLLBACK 也可以使用 ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个

保存点,一个事务中可以有多个 SAVEPOINT;
RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

ROLLBACK TO identifier 把事务回滚到标记点;
SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引 擎 提 供 事 务 的 隔 离 级 别 有 READ UNCOMMITTED 、 READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。

3、mysql事务处理两种方法
用 BEGIN,ROLLBACK, COMMIT 来实现
直接用 SET 来改变 MySQL 的自动提交模式:

4、事务的隔离级别

  1. Read uncommitted
    读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。

  2. Read committed
    读已提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据。

  3. Repeatable read
    可重复读,就是在开始读取数据(事务开启)时,不再允许修改操作

  4. Serializable 序列化
    Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。

在 在 MySQL 数 据 库 中 , 支 持 上 面 四 种 隔 离 级 别 , 默 认 的 为Repeatable read

10、存储过程
一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次 编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过 程是数据库中的一个重要对象。
11、触发器
触发器是一段能自动执行的程序,是一种特殊的存储过程,触发器和普通的存储过程的区别是: 触发器是当对某一个表进行操作时触发。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值