• 数据库小记


    1、关于视图

    1. 视图是一个虚拟表,其内容由查询定义。同真实表一样,视图包含带有一系列带有名称的列和行数据。但是视图并不在数据库中以存储数据值集的形式存在

    create view 视图名称 as select…
    select *(列名…) from 视图名称
    drop view 视图名称

    1. 视图一经定义就无法修改
    2. 一个用户可以定义若干个视图
    3. 视图可以用来定义新的视图

    在这里插入图片描述

    2、关于数据表中的时间

    MySQL中的时间函数
    now()得到当前时间
    date_add(data, interval expr type)data是标准格式的时间,interval 是固定的关键字, expr是时间间隔,type表示间隔的类型(常见的 year、month、day、hour、second)

    在这里插入图片描述

    SQL serve中的时间函数
    getdate()得到当前时间
    dateadd(datepart, num, date)datepart是参数类型(yy、mm、dd等), num 是时间间隔, date 是标准格式的时间

    3、数据库语言分类

    1. 数据库定义语言DDL,用于创建数据库中各种对象,如表、视图、索引、同义词、聚簇

    create table/view/index/syn/cluster
    DDL操作是隐形提交的,不能rollback

    1. 数据库操作语言DML,用于对数据的增删改查
    2. 数据库控制语言DCL,用于授权或回收 访问数据库的某种特权,并控制数据库操纵事务发生的时间和效果,对数据库进行监视等
    1. grant:授权
    2. rollback [work] to [savepoint]:回退到某一点,rollback(回滚命令)使数据库状态回退到上次提交的最后状态
    3. commit [work]:提交

    4、关于interval

    1. interval作为函数的时候,interval(6,2,4,6,8,10),第一个数6与后面的数比较,返回小于等于6的 数的个数,返回3;只有将6后面的数从小到大排列,interval()函数才能正常使用;如果6后面的数乱序,interval()函数可以使用,但结果不准确
    2. interval作为关键字,表示时间的间隔,用于 date_add() 或 date_sub(),用时间的加减法

    、数据库系统的特点
    数据库系统的特点:高共享、低冗余、高独立、完整性
    数据共享性高,冗余度低
    数据具有高度的物理独立性;在逻辑上,有一定的独立性、关联性
    数据具有完整性

    5、E-R图

    实体联系模型,也叫E-R图,是一种以直观的图示方式描述实体(集)及其之间关系的模型

    E-R图的四个基本成分:

    1. 矩形框,表示实体类型,框中写实体名
    2. 菱形框,表示联系类型
    3. 椭圆形框,表示实体类型和联系类型的属性,框中写属性名,联系也是有属性的
    4. 直线,实体类型与联系类型用直线连接,表示它们之间的联系,直线上标注联系的类型(1 : 1 或 1 : N 或 M : N)(一对一、一对多、多对多)
      在这里插入图片描述

    关系模型,就是数据表
    实体联系模型转为关系模型,实体之间多对多联系转为关系模型的实现方式是建立新的关系

    假设某个专业设置多门课程,某个课程可以被多个专业设置,专业实体集和课程实体集在E-R图中的联系表现为多对多
    在关系模型中,要使用中间表来描述它们之间的关系

    6、数据表的运算

    1. 自然连接:两个结果集(数据表)求笛卡尔积,保留 同名属性 值相同 的元组,然后 去除重复的属性
      在这里插入图片描述
    2. 交运算:两个结果集中相同的元组,构成结果集
    3. 并运算:两个结果集中元组合并,删除重复元组,构成结果集

    注意:两个结果集进行交运算或并运算的前提是:属性数目、属性名相同

    1. 除运算:
      在这里插入图片描述

    7、
    在使用 limit 时,如果没有足够的行,那么 MySQL 将只返回它能返回的行

    8、if()

    if(expr1,expr2,expr3)

    1. 如果 expr1 为真,返回 expr2,否则返回 expr3
    2. expr1为true或不为0时,为真;expr2为false或为0时,不为真

    在这里插入图片描述

    9、all()

    数据库中存在学生表S、课程表C和学生选课表SC三个表,它们的结构如下:S(S&,SN,SEX,AGE,DEPT),C(C&,CN),SC(S&,C&,GRADE)其中:S&为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C&为课程号,CN为课程名,GRADE为成绩。请检索选修课程号为C2的学生中成绩最高的学号

    select S& from SC where C& = "C2" and grade >= all(select grade from SC where C& = 2)
    
    • 1

    10、事务冲突类型

    1. 修改丢失

    在这里插入图片描述

    1. 脏读:一个事务对数据项进行了修改,这个修改还没有提交到数据库中,另一个事务读到了这个数据项,因为数据是还未提交的数据,所以另一个事务读到了脏数据
      即事务 T1 修改了数据项A,事务 T2 读到了这个修改的数据项A,但是后面由于某种原因,事务 T1 发生回滚,数据项A恢复原来的值,事务 T2 读到了“脏”数据

    在这里插入图片描述

    1. 不可重复读
      事务 A 第一次读数据项后,事务 B 修改了这个数据项并提交给数据库,事务 A 再次读这个数据项,发现两次读到的结果不一样,在一个事务中多次读同一个数据项结果不一致,即不可重复读

    在这里插入图片描述

    1. 幻读
      事务 A 修改了一个数据表中的所有的数据行,事务 B 又往这个数据表中添加了一个新的数据行,事务 A 结束后,发现有 未修改的数据行,好似产生了幻觉,即幻读

    11、数据库锁

    1. 排它锁
      排它锁又称为写锁( X锁),若 事务 T对 数据对象 A 加上 X 锁,则只允许 T 读取和修改 A ,其它任何事务都不能再对 A 加任何类型的锁,直到 T 释放 A 上的锁
    2. 共享锁
      共享锁(S锁),若事务 T 对数据对象 A 加上 S 锁,则事务 T 及 其他事务只能读 A,不能修改;其他事务只能再对 A 加 S 锁,而不能加X锁,直到 T 释放 A 上的 S 锁

    12、in()

    字段 in(子查询)
    前面字段和子查询结果集中的字段数目、顺序要相同

    13、concat()

    字符串拼接,当其中一个值是NULL时,直接返回NULL
    在这里插入图片描述

    在这里插入图片描述

    14、关于外键

    1. 默认设置的外键都是严格模式的,即外键的值必须在其关联的另一个表的主键或唯一键中出现
    2. 其他模式外键可以是空

    太行泉城,人文邢台

    河北邢台
    在这里插入图片描述

  • 相关阅读:
    Go和Java实现命令模式
    c++智能指针(raii)
    zookeper&kafka学习
    CUDA02 - 访存优化和Unified Memory
    DAY17-深度学习100例-卷积神经网络(CNN)识别眼睛状态
    SAP EWM Cross Docking (CD) 越库操作
    m1 安装 cocoapods
    【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的巡演(100分) - 三语言AC题解(Python/Java/Cpp)
    【Arduino+ESP32专题】案例:SPI控制74HC595扩展IO
    开了挂似的,直接涨薪25K,跪谢这份Java性能调优实战宝典
  • 原文地址:https://blog.csdn.net/gjwloveforever/article/details/126048743