数据库基础知识

索引是什么?有什么作用以及优缺点?

索引是对数据库表中一或多个列的值进行排序的结构,是帮助MySQL高效获取数据的数据结构

你也可以这样理解:索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

MySQL数据库几个基本的索引类型:普通索引、唯一索引、主键索引、全文索引

  • 索引加快数据库的检索速度
  • 索引降低了插入、删除、修改等维护任务的速度
  • 唯一索引可以确保每一行数据的唯一性
  • 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能
  • 索引需要占物理和数据空间 

事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。

乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。

  • 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
  • 乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

通常,通过索引查询数据比全表扫描要快.但是我们也必须注意到它的代价.

索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,索引本身也会被修改. 这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O. 因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.使用索引查询不一定能提高查询性能,索引范围查询(INDEX RANGE SCAN)适用于两种情况:

  • 基于一个范围的检索,一般查询返回结果集小于表中记录数的30%
  • 基于非唯一性索引的检索

drop、deletetruncate分别在什么场景之下使用?

  • 不再需要一张表的时候,用drop
  • 想删除部分数据行时候,用delete,并且带上where子句
  • 保留表而删除所有数据的时候用truncate

主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。

外键:在一个表中存在的另一个表的主键称此表的外键。

视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

  • 只暴露部分字段给访问者,所以就建一个虚表,就是视图。
  • 查询的数据来源于不同的表,而查询者希望以统一的方式查询,这样也可以建立一个视图,把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,不必考虑数据来源于不同表所带来的差异
内联接,外联接区别?
内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。
在外连接中,某些不满条件的列也会显示出来,也就是说,只限制其中一个表的行,而不限制另一个表的行。分左连接、右连接、全连接三种

 
  
事务具有四大特性:一致性、原子性、隔离性、持久性。数据库事务是指:几个SQL语句,要么全部执行成功,要么全部执行失败。比如银行转账就是事务的典型场景。数据库事务的三个常用命令:Begin Transaction、Commit Transaction、RollBack Transaction。
锁:在所以的 DBMS 中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。
 
  
作者:帝Bug链接:https://www.jianshu.com/p/7f261a6b11ea來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
  
 
  
什么是存储过程?存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。什么是触发器?触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
作者:帝Bug链接:https://www.jianshu.com/p/7f261a6b11ea來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  1. 列举几种常用的聚合函数?
    Sum:求和\ Avg:求平均数\ Max:求最大值\ Min:求最小值\ Count:求记录数






、数据库事务的四个特性及含义


原子性:

  • Atomicity.
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。


一致性

  • Consistency.
:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

隔离性:

  • Isolation.
隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。


持久性:

  • Durability.
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。


一般来说,应该在这些列上创建索引:


(1)在经常需要搜索的列上,可以加快搜索的速度;

(2)在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;

(3)在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;

(4)在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;

(5)在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;

(6)在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。

同样,对于有些列不应该创建索引:


事务隔离的实现——锁

  1. 共享锁(S锁)

    用于只读操作(SELECT),锁定共享的资源。共享锁不会阻止其他用户读,但是阻止其他的用户写和修改。

  2. 更新锁(U锁)

    用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。

  3. 独占锁(X锁,也叫排他锁)

    一次只能有一个独占锁用在一个资源上,并且阻止其他所有的锁包括共享缩。写是独占锁,可以有效的防止“脏读”。




sql:
SELECT 列名称 FROM 表名称//SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....
updata table set 列1=value
DELETE FROM 表名称 WHERE 列名称 = 值
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern


SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

join . from 后的一个表1 join 另一个表2 on 表1.x=表2.x (或者其他的关系。<>不等于)

当进行有条件判断的 用case  -》 case when 列=value1 then 返回值 else when 列=value 2 then 返回值。。。。。 end.

判断是否为NULL时 用 列 is NULL 不能用‘=’

用in 或者是not in 时,就是在一个列的值列= in( mysql语句),要由子语句得出。(一般里面为select)

desc 降序 asc

group by(列) 把相同的列值合并,但是对于重复的 如果没有count 会省掉后面的 用了count(列),会统计group by的列重复出现的次数

用 count 等函数作为条件判断时,不能用where 要用having
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL(Structured Query Language)是一种用于管理关系型数据库的语言。它可以用于创建、修改和查询数据库中的表和数据。 以下是一些 SQL 数据库基础知识: 1. 数据库数据库是一个组织和存储数据的集合。它可以包含多个表和其他对象,例如视图、存储过程和触发器。 2. 表:表是数据在数据库中的结构化表示。每个表由一系列列组成,每列定义了表中存储的数据类型。 3. 列:列是表中的一个字段,它定义了数据的类型。例如,可以有一个名为“ID”的列,用于存储唯一的标识符。 4. 行:行是表中的一个记录,它包含了一组相关的数据。每行的数据对应每个列。 5. 主键:主键是表中唯一标识每行的一列或一组列。它用于确保表中的每个行都有一个唯一标识符。 6. 外键:外键是表中的一列,它与另一个表的主键相关联。外键用于在多个表之间建立关系。 7. 查询:查询是使用 SQL 语句从数据库中检索数据的过程。常见的查询操作包括 SELECT、INSERT、UPDATE 和 DELETE。 8. SELECT 语句:SELECT 语句用于从表中检索数据。它允许你指定要检索的列和筛选条件,还可以用于排序和分组数据。 9. INSERT 语句:INSERT 语句用于向表中插入新的行。 10. UPDATE 语句:UPDATE 语句用于更新表中的数据。 11. DELETE 语句:DELETE 语句用于从表中删除行。 这些是 SQL 数据库的一些基本概念和操作。在实际应用中,SQL 还有许多其他功能和高级用法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值