数据库

作者: MisAutumn | 来源:发表于2018-08-09 11:41 被阅读11次

数据库包含哪几种类型的语言?每种语言包含哪几种语句
DDL数据定义语言: 创建/修改/删除数据库对象 创建索引

CREATE
UPDATE
DROP
DELETE

DML数据操纵语言: 增删改查

SELECT - 查
UPDATE - 改
DELETE - 删
INSERT INTO - 增

DCL数据控制语言:修改数据库结构的操作权限

GRANT - 授权
REVOKE - 撤销授权
DENY - 拒绝授权

TCL事物控制语言:

SAVEPOINT - 设置保存点
ROLLBACK - 回滚
COMMIT - 提交

JOIN 连接查询
INNER JOIN : 两个表相应的查询内容存在时呈现
LEFT JOIN:以左表为基准,只要所查询的数据在左表中有就一定会显示
RIGHT JOIN:
FULL OUTER JOIN

什么是存储过程?用什么来调用?
存储过程是预先写好的sql语句,包括增删改查,条件语句,循环语句等,是为了实现数据库的某个功能而编写,可重复调用。如果需要调用多次同一个语句,写进存储过程执行会比在sql语句中执行更快。用call调用。

触发器
另一种形式的存储过程,只不过是特定指令自动触发。维护数据库的一致性和完整性

索引的作用,优缺点
索引是一种数据结构,排好序的快速查找数据结构,这些数据结构以某种方式指向数据,数据库可以在这种数据结构上实现高级查找算法
优点:提高数据检索效率,降低数据库io成本
降低排序成本,减少cpu损耗
缺点:占用空间,增加数据库尺寸,减慢数据增删改速度

什么是内存泄漏
堆内存泄漏,程序在新建对象时为其分配一块内存,对象使用结束之后如果没有即时释放内存(free delete)否则该内存就不能被使用,产生内存泄漏。

如何维护数据库的完整性和一致性

  1. 设置约束,主键,外键和非空字段的约束
  2. 设置触发器

什么是事务
事务是一组sql语句,上面有一个节点,如果事务中有一个语句执行不成,整个操作回滚至原来节点。要么整个执行,要么整个不执行。事务中的sql语句需要遵循ACID:原子性,一致性,隔离性,永久性。

造成事务失败的原因

  1. 磁盘已满
  2. 事务用光cpu分配给它的时间片

什么是锁
锁可以保证事务的完整性和并发性
对有限资源进行保护,解决并发和隔离的冲突
读锁(共享锁):多个read操作可以同事进行
写锁(排他锁):一个write操作没有完成时,禁止其他write和read操作
读锁会阻塞写,写锁会阻塞读和写

事务隔离级别
原子性:事务中的数据操作要么全部被执行,要么全部不被执行
一致性:数据库会从一个一致状态跳到另一个一致状态,数据库中的数据满足完整性约束。
隔离性:多个事务并发执行时,不会互相影响。
永久性:一旦一个事务被提交后,其对数据库的改变和结果将永远留存在数据库中。

什么是主键,外键
主键是表中一个或多个字段,其值非空唯一,是确定行的唯一标识
外键是其他表的主键,和其他表建立联系

可以用什么来确保表格里的字段只接受特定范围里的值
建表时用check对数据库进行限制

什么是相关子查询?如何使用这些查询?
当一个查询是另一个查询的条件时,成为子查询
相关子查询:依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。
非相关子查询:独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。

使用索引查询一定能提高查询的性能吗?为什么?
不一定

  1. 当查询内容占整个数据库的30%以上时,进行全表查询的效率更高。
  2. 作为查询条件的字段不是建立索引的字段。
  3. 索引的类型不适用于本次查询,比如索引的类型如果是hash

如何优化数据库,如何提高数据库的性能?

  1. 建立合理的索引
  2. 优化sql语句
  3. 如果有需要重复调用的sql语句,尽量使用存储过程
  4. 外键约束会影响数据库性能,在保证数据库完整性的条件下减少外键的使用
  5. 适当保留冗余(高级冗余/派生冗余)
    数据库系统级优化,数据库设计优化,程序实现级优化

数据库设计的三范式
第一范式:每个行与列的交叉点都只有一个值而不是一组值 (原子性)
第二范式:在符合第一范式的基础上,每一行都有唯一标识 (唯一性)
第三范式:在符合第二范式的基础上,非主键属性依赖于其他任何一个非主键属性 (减少冗余)

相关文章

  • MySQL数据库day01

    系统数据库 ​​​ 创建数据库 ​​​ ​​​ ​​​ ​​​ 查看所有数据库 使用数据库 修改数据库 删除数据库...

  • 数据库操作

    创建数据库: 选择数据库: 查看数据库: 修改数据库: 删除数据库:

  • Ubuntu操作mysql数据库命令

    一、连接数据库 连接本地数据库 退出数据库 二、操作数据库 创建数据库 显示数据库 删除数据库 连接数据库 查看状...

  • 4-14

    创建数据库 createdatabase数据库名称; 删除数据库 dropdatabase数据库名称; 查看数据库...

  • [后端开发] Mysql学习笔记

    1.0 数据库 创建数据库 查看所有数据库 删除数据库 切换数据库名 查看正在使用的数据库 2.0 数据库表 创...

  • 2020最新最全数据库系统安全

    数据库标识与鉴别 数据库访问控制 数据库安全审计 数据库备份与恢复 数据库加密 资源限制 数据库安全加固 数据库安...

  • 2020-01-05 sql基本概念

    数据库用来储存数据。 数据库的种类大致有:层次数据库、关系数据库、面向对象数据库、XML数据库、键值数据库。 关系...

  • Mysql数据库基本操作

    连接数据库 退出数据库 查看数据库版本 显示数据库时间 查看当前使用的数据库 查看所有数据库 数据库备份 导入数据...

  • mysql命令行操作

    准备 登陆 数据库操作 查看现有数据库 创建数据库 删除数据库 查看数据库 使用数据库 查看当前数据库 表操作 新...

  • 1.7.1 MySQL数据库学习

    1. 数据库命令行学习 进入数据库 创建数据库 查看数据库列表 删除数据库 使用数据库 查看当前数据库 2. 表 ...

网友评论

      本文标题:数据库

      本文链接:https://www.haomeiwen.com/subject/uahzvftx.html