精华内容
下载资源
问答
  • 这是个人总结的,可能有缺漏,数据库原理及应用技术教程教材的总结,不是特别全面,可以作为参考,复习。
  • 数据库原理及应用课程习题 数据库原理选择题总结
  • 一,数据库绪论 数据库的起源与发展: 手工管理阶段(1.数据不保留 2应用程序管理数据 3.数据不共享 4.数据没有独立性)——> 文件系统阶段(1.数据可以长期保存 2.用文件系统管理数据 3.数据可以共享,共享性...

    一,数据库绪论

    数据库的起源与发展:

    手工管理阶段(1.数据不保留 2应用程序管理数据 3.数据不共享 4.数据没有独立性)——>

    文件系统阶段(1.数据可以长期保存 2.用文件系统管理数据 3.数据可以共享,共享性较差         4.数据和应用程序有了一定的独立性)——>

    数据库系统阶段(1.数据结构化 2.数据共享性高 3.数据独立性高 4.统一的数据管理与控制5.方便的用户接口)

    数据模型概述

    1.模型与数据模型     --->1.模型         2. 数据模型

    2.数据模型的分类     --->1  概念数据模型   2.逻辑数据模型  3.物理数据模型

    3.数据模型的组成     --->1.数据结构  2.数据操作 3.完整性约束

    层次数据模型    网状数据模型  关系数据模型  面向对象数据模型

    数据库系统:

    consist of:数据库、软件系统,硬件系统和人员组成

    数据库管理系统:

    consist of:1.数据和元数据   2.查询处理器  3.存储管理器 4.事务管理器

    function:1.数据定义  2.数据组织、存储和管理 3、数据操控 4.事务管理和运行管理

    5.数据库的维护  6.其他

    数据库体系:

    1.三级模式体系:外模式---->模式--->内模式

    外模式可以有很多个,是模式的子集,也称子模式或用户模式

    模式:也称为概念模式或逻辑模式

    内模式:也称存储模式

    2.两级映像

    外模式/模式映像:外模式与模式之间的对应关系,也就是数据的局部逻辑结构与全局逻辑结构之间的关系。

    模式/内模式映像:模式与内模式之间的对应关系,也就是数据全局逻辑结构与存储结构之间的对应关系。

    3.数据的独立性

    1.逻辑数据独立性  2。物理数据独立性.

    数据库系统包括数据库管理系统和数据库

     

    二,关系数据库基础

    关系模型:

    关系数据结构:

    define:关系:一张规范的二维表

          元组:表中的一行

     属性:表中的一列

     域:属性的取值范围

     分量:元祖中的一个属性值

     候选码:能够唯一表示一个元祖的某个属性或属性组

     主码:主键,候选码中选出来表示改关系中元组

     主属性:包含在候选码中的属性

     非主属性:不包含任何候选码中的属性

    性质:

    列的同质性   异列同域性  列的无序性  行的无序性 元祖相异性 属性值的原子性

    关系模式

    关系数据库

    关系的完整性约束

    1.实体完整性约束     ------主码中属性不能为空

    2.参照完整性约束     ------如读者借书的ISBN    取值为    书的ISBN

    3.用户定义的完整性规则   -----自定义的如      0<age<100

    关系操作

    关系操作类型   关系操作语言(SQL  structured  query language)

    关系代数

    含义

    运算符

    含义

     
     

    集合运算符

     

     

     

    ×

    笛卡尔积

     

    专门的关系运算符

    σ

    选择

     

    投影

     

    连接

     

    ÷

     

    比较运算符

    大于

     

    小于

     

    >=

    大于等于

     

    <=

    小于等于

     

    =

    等于

     

    不等于

     

    逻辑运算符

     

     

     

    1.并:R和S属性相同,合并同一数据只出现一次

    2.差:R中有S中没有

    3.交:R和S中都有

    4.笛卡尔积:

    R:

    属性X

    属性Z

    A

    B

    C

    D

    S:

    属性1

    属性2

    属性3

    1

    2

    3

    4

    5

    6

    R×S =

    属性X

    属性Z

    属性1

    属性2

    属性3

    A

    B

    1

    2

    3

    A

    B

    4

    5

    6

    C

    D

    1

    2

    3

    C

    D

    4

    5

    6

    5.选择:   σage="5"(R)         在R中age等于5的行

    6.投影:  ∏age(R)      选择age元祖显示

    7.连接:

    等值连接:会在⋈下面显示要相等的属性,将两个表中树形象等的元祖显示,相同属性会出现两次

    自然连接:⋈下面没有任何条件   在等值连接的基础上消除相同属性列

    左连接:只看左边的R表,右边的S表值在生成的新表中可以为空

    右连接:与左连接相反。

    8除:

    R:

    属性1

    属性2

    属性3

    a1

    b1

    c1

    a1

    b2

    c1

    a2

    b3

    c2

    a2

    b1

    c1

    a2

    b2

    c1

    a3

    b3

    c2

    a1在R中像集为{(b1,c1),(b2,c1)}

    a2在R中像集为{(b3,c2),(b1,c1),(b2,c1)}

    a3在R中像集为{(b3,c2)}

    S:

    属性4

    属性5

    属性6

    b1

    c1

    d1

    b2

    c1

    d2

    S在属性4,属性5上投影为:

    {(b1,c1),(b2,c1)}

     

    所以

    R÷S = a1 , a2

    关系代数表达式优化*----------*不写

    关系演算*--------*不写

    三,关系数据库标准语言SQL

    SQL概述

    SQL组成:

    数据定义语言

    对模式,基本表,视图,索引,域等的创建,修改和删除操作

    数据操控语言

    查询和更新

    数据控制语言

    对基本表和视图的授权,完整性规则的描述、事务控制

    嵌入式SQL

    SQL特点:

    综合统一

    高度非过程化

    面向集合的操作方式

    语言简洁、易学易用

    一种语法结构两种使用方式

    支持三级模式结构

    SQL基本知识

    基本概念:

    SQL中,关系被称为基本表,元祖被称为行或者记录,属性被称为列或者字段

      表有三种基本类型:基本表   视图  查询表

     数据类型:

    1.数值型

    int:长整数

    smallint;短整数

    real:单精度浮点数

    double precision:双精度浮点数

    float(n):能够设置精度的浮点数,其精度至少为n位数字

    numeric/decimal(p,d)::定点数

    2.字符型

    char(n)::长度为n的定长字符串

    varchar(n)::最大长度为n的变长字符串

    3.日期型

    date:日期,包括年月日,一般格式为“YYYY-MM-DD”

    time:时间,包括时分秒,一般格式为“HH:MM:SS”

    4.位串型

    binary(n):长度为n的二进制位串

    varbinary(n):最大长度为n的变长二进制位串

    常量

    1.数值型常量

    2.字符型常量

    3.日期型常量

    运算符与表达式

    1.比较运算符

    2.逻辑运算符

    AND    OR

    3.谓词

    BETWEEN  AND     ||||   OR   ||||  IN  ||||  NOT IN ||||| LIKE  ||| NOT  LIKE  |||| IS NULL |||| IS  NOT  NULL

    4.算术运算负

    5.运算符的优先级

    数据定义

    1.模式定义

    1.创建模式

    CREATE SCHEMA  模式名  AUTHRIZATION  用户名

    表定义子句  |   视图定义子句  |   授权定义字句

     1.在创建模式时,直接创建数据库对象

    CREATE SCHEMA  reader_borrow;

    CREATE SCHEMA  reader_borrow AUTHRIZATION  用户;

     

    CREATE SCHEMA  reader_borrow AUTHRIZATION  用户

    CREATE TABLE reader(

    rno CHAR(5) PRIMARY KEY,

    rname  CHAR(20),

    rgender  CHAR(2),

    rage  INT,

    rspecialty CHAR(20)

    );

     2.在创建模式时,直接创建数据库对象

    CREATE SCHEMA  reader_borrow.reader(

    rno CHAR(5) PRIMARY KEY,

    rname  CHAR(20),

    rgender  CHAR(2),

    rage  INT,

    rspecialty CHAR(20)

    );

     3.使用SET SCHEMA  语句指定当前模式

    SET SCHEMA read_borrow;

    2.删除模式

    DROP SCHEMA 模式名     CASCADE   |  RESTRICT

    2基本表定义:

    CREATE TABLE reader(

    rno CHAR(5) PRIMARY KEY,

    rname  CHAR(20),

    rgender  CHAR(2),

    rage  INT,

    rspecialty CHAR(20)

    );

    3.实现完整性约束:

    1.实现完整性约束

    1.列级完整性

    加 PRIMARY KEY

    2.表级完整性约束

    加 PRIMARY  KEY(属性1.属性2......)

    3.完整性约束命名子句

    CONSTRAINT  完整性约束条件名[PRIMARY  KEY 短语 | FOREIGN  KEY短语 | CHECK短语]

     

    CONSTRAINT  bookkey PRIMARY KEY(bisbn)

    2.实现实体完整性约束

    PRIMARY  KEY(属性列名)

    3.实现参照完整性约束

    FOREIGN KEY(属性列名)

    REFERENCES 被参照表名 (属性列名)

    4.实现用户定义的完整性约束

    1. NOT NULL  与  DEFAULT约束
    2. UNIQUE约束
    3. CEHCK约束

    4.更新基本表

    1.修改基本表

    1.增加属性列

    ALTER TABLE 基本表名 ADD 新属性列名  数据类型  [完整行约束]

       2.增加完整性约束

      ALTER  TABLE  基本表名 ADD 完整性约束

       3.删除属性列

      ALTER  TABLE  基本表名   DROP  COLUMN 属性列名

       4.删除完整性约束

      ALTER  TABLE  基本表名   DROP  CONSTRAINT  完整性约束名

       5.修改属性列

      ALTER  TABLE  基本表名   ALTER   COLUMN  属性列名  数据类型

    2.删除基本表

    DROP  TABLE  基本表名  [RESTRICT  |  CASCADE]

    3.简单查询

    1.查询特定列

    SELECT [ALL  |  DISTINCT] 目标列表达式 [,目标列表达式,....]

     2.查询多列

      select  rname,rno,rspecialty

    from  reader;

     3.查询所有列

      select   *  from   reader;

     4.表达式列

      secect  rname,2014 - rage

    from  reader;

      5.为列指定别名

      select rname 姓名,2014 - rage 出生年份

    from reader;

      6.除掉重复值

      select  distinct  rno  FROM  borrow;

    3.3.2条件查询

    WHERE  田间表达式

    1.用关系表达式表示的条件

     select rname  from  reader  where  rage = “15”

     2.用逻辑表达式表示的条件

      select rname  from  reader  where  rage = “15” AND/OR  rgender = “男”

     3.在指定范围内匹配值

      用 between 和 大于等符号

     4.在指定集合内匹配值

      IN关键字

    3.3.3 聚集函数

           COUNT   SUM   AVG   MAX   MIN

     

    select max(rage) age  from  borrow;

    3.3.4模糊查询

    [NOT] LIKE 匹配串 [ESCAPE 转义字符]

    3.3.5对查询的结果排序

    ORDER BY 列表 [ASC|DESC]默认为升序

    3.3.6分组查询

     GROUP BY 列名 [HAVING 条件表达式]

    select bpublisher,COUNT(bpublisher) quality 

    from book

    GROUP BY bpublisher;

    3.3.7设计空值的查询

     select bisbn,startdate  from  borrow  where enddate  IS  NULL;

    3.3.8连接查询

     1.连接的两种表示方法

    1.使用where子句进行连接 

    where A.rno = B.rno

       2.使用FROM

      FROM  表名1  JOIN  表名2  ON  表名1.列名1  比较运算符 表名2.列名2

      2.复合条件连接

      就是在WHERE子句中包含多个连接条件

      3.多表连接

    select  r.rno,r.rname,bk.name

    from reader  r,borrow  b, book  bk

    where  r.rno = b.rno AND b.isbn = bk.isbn;

      4.自身连接

    SELECT b1.rno,b1.isbn ,b2.isbn

    FROM borrow b1,borrow b2

    WHERE  b1.rno = b2.rno

    AND b1.isbn = 'xxxxxx' AND b2.isbn = 'xxxxxx'

      5.外连接

    左连接  LEFT  OUTER   右连接   RIGHT  OUTER

    FROM  reader LEFT  OUTER  JOIN  borrow ON(reader.rno = borrow.rno);

    3.3.9嵌套查询

    1.带着IN谓词的子查询

    select  rname

    from  reader

    where rno IN(

    xxxxxxxxxxxxxx

    );

     2.带有比较运算符的子查询

    带上符号如   大于等等

     3.带有ANY(SOME)或ALL谓词的子查询

     如题

     4.相关子查询

    子查询的查询条件不依赖于父查询,这类子查询成为不相关子查询

    子查询的查询条件依赖于父查询,这类子查询成为相关子查询

     5.带有EXISTS谓词的子查询

     EXIST::存在

    where  EXISTNOT  EXIST

    3.3.10集合查询

    1.并操作

    查询1

    UNION

    查询2

     2.交操作

    查询1

    INTERSECT

    查询2

     3.差操作

    查询1

    EXCEPT

    查询2

    3.4数据更新

    3.4.1插入数据

    1.插入新数据

    insert into 表名[(属性列名 1[,属性列名 2,.............])]

    values(常量1[,常量2...]);

      2.复制现有数据

    insert  into 表名[(属性列名 1[,属性列名 2,.............])]

    子查询

    3.4.2修改数据

    1.修改全部数据

    update  表名

    set 属性列名1 = 表达式1[,属性列名2 = 表达式2,....]

    [where 条件

    2.修改指数据

    在修改中使用where

    3.带有子查询的修改

    3.4.3删除数据

    DELETE FROM 表名

    [where 条件]

    1.删除全部数据

    DELETE  from  borrow;

    2.删除指定数据

    DELECT from borrow  where rno = ’xxxxx‘

    3.带子查询的删除

    DELECT from borrow  where rno = (查询)

    3.5索引

    3.5.1创建索引

    CREATE [UNIQUE | CLUSTER]  INDEX 索引名

    ON  表名(属性列名1[次序1][,属性列名2 [次序2],......])

    3.5.2删除索引

    DROP  INDEX 索引名;

    3.6视图

    3.6.1创建视图

    CREATE  VIEW  试图名[(属性列名 1[属性列名2,...])]

    AS  子查询

      [WITH  CHECK OPTION];

    3.6.2创建索引

      DROP VIEW 视图名 [CASCADE]

    3.6.3查询视图

      使用select

    3.6.4更新视图

      INSERT    INTO reader_cp VALUES(xxxxxxxxx)

    UPDATE reader_cp  SET rage = 20  WHERE rno = ‘14004’

    四,关系数据理论

    4.2基本概念

    .4.2.1函数依赖的定义及性质

    1.函数依赖的概念

    关系模式R(U,F),U是属性全集,F是U上的函数依赖集,X和Y是U的自己,如果对于R(U)的任意一个可能的关系r,对于X的每一个具体值,Y都有唯一的具体值与之对应成为,X函数决定Y,或Y的函数依赖于X,记作X→Y,我们成X为决定因素,Y为依赖因素。

           1.平凡的函数依赖与非平凡的函数依赖

    不依赖时箭头打叉,双向依赖时双向箭头。

    Y是X子集时,称为平凡的函数依赖,不是的时候称为非平凡的函数依赖

    2.函数依赖是语义范畴的概念

    3.函数依赖与属性之间的联系类型有关

    4.函数依赖关系的存在与时间无关

    5.函数依赖可以保证关系分解的无损连接性

    X的真子集可以与Y意义对应则Y部分函数依赖X   p   ,否则是完全函数依赖  f

    Y依赖于X,X不依赖于Y,Z依赖于Y,则Z对X传递依赖   t

    Y依赖于X,X依赖于Y,,Z依赖于Y,则Z对X直接依赖

    2.函数依赖的基本性质

    投影性     扩张性  合并性   分解性

    4.2.2码

    K为R(U,F)中的属性或属性组合。如果U完全依赖K,则K称为R的候选码,如果候选码多于一个,则选一个作为主码

    包含在任何一个候选码中的属性,则成为主属性,不包含在任何码中的属性成为非属性吗,或非码属性。整个属性组是码,成为全码。

    外码就是不是R中的码,但确是另一个关系模式的码。

    4.3范式

    第一范式:无法细分

    第二范式:无部分传递依赖

    第三范式:无传递依赖

    BC范式     第四范式   第五范式

    对1NF投影,消除非主属性对码部分函数依赖

    对2NF投影,消除非主属性对码传递函数依赖

    对3NF投影,消除主属性对码的部分和传递函数依赖

    对BCNF投影,消除原关系中属性间非平凡且非函数依赖的多值依赖。

    五,数据库设计

    5.1.3数据设计的基本步骤:

    需求分析

    概念结构设计

    逻辑结构设计

    物理逻辑设计

    数据库实施

    数据库运行和维护

    数据流图

    ER图

    六,事务和并发控制

    6.1事务

    6.1.1事务概念

    事务是值用户定义的一个数据库操作序列,要么全做,要么全不做。

    6.1.2事务的他正

    1.原子性

    2.一致性

    3.隔离性

    4.持续性

    6.2并发控制

    6.2.1并发执行

    1.丢失修改

    2.不可重复度

    3.读脏数据

    6.2.2可串行化调度

    多个事务的并发执行是正确的,当且仅当其结果与按某一顺序串行地执行这些事务时的结果相同,则称这种调度是可串行化调度。

    6.2.3 冲突可串行化调度

    6.3基于锁的协议

    6.3.1封锁

    封锁机制是确保事务可串行化的方法之一,封锁是使事务对它要操作的数据有一定的控制能力,实现事务对数据项的访问以互斥的方式进行。

    1.排他所

    X锁:加锁后,只允许自己对对象读取和修改,其他事务不能对对象加锁。

    2.共享锁

    S锁,允许其他事务对对象加S锁但不能加X锁。

    6.3.2封锁协议

    1.一级封锁协议

    修改数据之前加X锁,直到事务结束才释放

    2.耳机封锁协议

    在一级锁协议上加读取数据加上S锁,读完后释放

    3.三级封锁协议

    在一级锁协议上加读取数据加上S锁,事务结束后释放

    6.3.3两段锁协议

     在读,写之前加锁

    释放一个封锁后,不再获得和申请任何其他锁。

    6.4活锁和死锁

    1.活锁

    2.死锁

    1.死锁预防

    1.一次封锁法

    2.顺序封锁法

    2.死锁的诊断和解除

    1.超时法

    2.等待图法

    转载于:https://www.cnblogs.com/tjvz/p/10045010.html

    展开全文
  • 3.掌握使用SQL Server Management Studio SQL语句创建数据库和表的方法; 4.掌握数据库及表结构的修改方法; 5.掌握数据库管理的基本操作。 二、实验原理 结合上课内容,根据实验内容描述步骤操作; 整理上机步骤...

    一、实验目的

    1.熟悉SQL Server2012操作界面,了解数据库系统的逻辑组件;
    2.熟悉SQL Server的管理控制台操作环境;
    3.掌握使用SQL Server Management Studio 及SQL语句创建数据库和表的方法;
    4.掌握数据库及表结构的修改方法;
    5.掌握数据库管理的基本操作。


    二、实验步骤

    1.启动SSMS(SQL Server Management Studio)
    2.通过向导创建数据库
    3.通过T-SQL语句创建数据库
    4.通过向导创建数据库表
    5.通过T-SQL语句创建数据库表
    

    三、实验内容

    1.启动SSMS(SQL Server Management Studio)

    (1)打开 SQL Server Management Studio,将弹出如下图所示的登录窗口。
    在这里插入图片描述

    这里有两种身份验证方式: 第一种方式选择Windows身份验证登录,服务器名称为本机用户名(如:WIN-E1G5CJSSRP5)或 (local)登录; 第二种方式选择 SQL Server 身份验证登录, 用户名为 sa,密码为安装数据库时设置的密码。点击连接按钮,进行连接(注:若服务器连接不上,打开控制面板中管理工具下的服务, 检查 SQL Server 的服务是否启动)。

    (2)右击 SQL Server 服务器,弹出如下图所示菜单菜命令,点击【断开连接】,则将断开当前数据库管理工具这个应用和 SQL Server 服务器之间的连接通信。
    在这里插入图片描述
    (3)点击菜单命令中的【暂停】,可以暂停当前的 SQL Server 服务。点击菜单命令中的【停止】,可以停止当前正在运行着的 SQL Server 服务。点击菜单命令中的【重新启动】,可以重新启动当前已经停止的 SQL Server 服务。

    (4)点击菜单命令中的【属性】,则将弹出如下图所示的对话框。该对话框定义了许多SQL Server 实例级别的配置参数。从这个对话框里,也可以修改这些配置参数。
    在这里插入图片描述

    2.通过向导创建数据库

    (1)在“对象资源管理器”窗口建立数据库,数据库名为“EDUC+学号后2位”,比如EDUC01。在【数据库】节点上右击选择【新建数据库】,在弹出的对话框中根据自身需求对数据库的各项参数进行设置。
    (2)参数设置完毕后,点击【确定】 按钮,在“对象资源管理器”窗口中【数据库】节点下会出现一个以“EDUC+学号后2位”为名称的数据库。
    (3)选择新建的数据库,点击鼠标右键,通过选择不同的菜单项完成该数据库的修改、删除、重命名、扩容、附加、分离等操作。
    在这里插入图片描述

    3.通过T-SQL语句创建数据库

    (1)在SQL Server Management Studio工具栏上单击【新建查询】按钮打开查询分析器窗口。
    (2)在查询分析器窗口中输入T-SQL语句完成数据库名为“EDUC+学号后2位”的创建,关于创建数据库的各项参数根据自身需求进行设置。

    4.通过向导创建数据库表

    (1)在刚才创建的数据库中创建3个表,分别为student(学生)表、course(课程)表、sc(选课)表。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5.通过T-SQL语句创建数据库表

    //(1)根据上述的表的结构,在查询分析器窗口中输入T-SQL语句来创建各个表。
    Create table student1
    (
        Sno char(10) NOT NULL PRIMARY KEY,
        Sname varchar(10) NOT NULL ,
        Ssex char(2) NOT NULL default '男',
        Sage smallint check(Sage BETWEEN 16 AND 25),
        Sdept char(12) NULL 
    )
    Create table course1
    (
        Cno char(12) NOT NULL PRIMARY KEY,
        Cname varchar(30) NOT NULL UNIQUE(Cname),
        Cteacher varchar(10) NOT NULL,
        Csemester smallint NULL,
        Ccredit float NULL  
    )
    Create table sc1
    (
        Sno char(10) NOT NULL,
        Cno char(12) NOT NULL,
        Score decimal(3,1) NULL check(Score BETWEEN 0 AND 100),
        Constraint M PRIMARY KEY(Sno,Cno) 
    )
    //(2)根据自身需求,在查询分析器窗口中输入T-SQL语句来修改一个表的结构。
    //添加一列:
    alter table Student add1 Phone char(11)
    //删除一列:
    alter table Student1 drop column sdept
    //修改字段的数据类型:
    alter table Student1 alter column ssex char
    //(3) NOT NULL 
    

    四、实验总结

    通过本节课的学习我熟悉SQL Server2012操作界面,了解数据库系统的逻辑组件;熟悉SQL Server的管理控制台操作环境;掌握使用SQL Server Management Studio 及SQL语句创建数据库和表的方法;掌握数据库及表结构的修改方法;掌握数据库管理的基本操作。SQL语句的使用尚不娴熟。


    展开全文
  • 很好很新的课程设计指导书 1、需求分析:根据自己的选题,进行业务描述,并绘制数据流图(DFD)、数据字典(DD),并对相关的语义进行文字说明。 2、概念结构设计:...7、设计小结:总结课程设计的过程、体会建议
  • 目录《数据库原理应用》课程实验报告 数据库的组合和统计查询二、实验过程分析1.实验内容2.实验过程4.实验分析三、实验总结 使学生进一步掌握SQL Server查询的使用方法,加深对T-SQL语言查询语句的理解。熟练...
  • 目录《数据库原理应用》课程实验报告 数据库的组合和统计查询二、实验过程分析1.实验内容2.实验过程4.实验分析三、实验总结 使学生进一步掌握SQL Server查询的使用方法,加深对T-SQL语言查询语句的理解。熟练...

    《数据库原理与应用》课程实验报告 数据库的组合和统计查询

    使学生进一步掌握SQL Server查询的使用方法,加深对T-SQL语言查询语句的理解。熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

    二、实验过程及分析

    1.实验内容

    1、分组查询实验。该实验包括分组条件表达、选择组条件的表达方法。
    2、使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。
    3、组合查询实验。
    4、计算和分组计算查询的实验。

    2.实验过程

    创建图书表
    create table 图书
    (
      书号  varchar(10) primary key,
      书名 varchar(20)not null,
      类别 varchar(20),
      作者 varchar(10),
      出版社 varchar(20),
      定价   int
    )
    select *  from 图书
    drop table  图书  
    --插入数据
    insert into  图书 values ('B101','数据结构','计算机类','陈越','清华出版社',38),
                             ('j0002','操作系统','计算机类','李祥','科学出版社',35),
    						 ('j0001','数据库技术','计算机类','苗雪兰','清华出版社',25),
    						 ('W100','明朝那些事','文学类','当年明月','北京联合出版社',38),
    						 ('Y101','大学英语','英语类','李靖','机械工业出版社',20),
    						 ('Y102','专业英语','英语类','jack','机械工业出版社',30),
    						 ('Y103','科技英语','英语类','meric','机械工业出版社',150),
    						 ('B102','数据库','计算机类','kkkk','机械工业出版社',89),
    						 ('B103','计算机组成原理','计算机类','qqq','机械工业出版社',79),
    						 ('B104','计算机概论','计算机类','oo','机械工业出版社',100)
    						
    --创建读者表
    create table 读者
    (
      读者编号 int primary key,
      姓名 varchar(20)not null,
      单位 varchar(20),
      性别 varchar(10),
      电话 varchar(11)
    )
    select *  from 读者
    drop table  读者
    
    --插入数据
    insert into  读者 values(1801,'张三','生工院','男',12345678901),
                            (1802,'李白','机械院','女',12345678901),
    						(1803,'翠花','英语院','男',12345678901),
    						(1804,'狗蛋','思政院','男',12345678901)
    
    
    --创建借阅表
    create table    借阅表
    (
      书号  varchar(10),
      读者编号 int,
      借书日期  date  not null,
      还书日期   date
      primary key (书号,读者编号),
      foreign key(书号) references 图书(书号),
      foreign key(读者编号) references 读者(读者编号)
    )
    
    select *  from 借阅表
    drop table  借阅表
    --插入数据
    insert  into  借阅表  values  ('j0001',1801,'2019-01-01','2020-01-01'),
                                    ('j0001',1802,'2019-12-11','2020-01-03'),
    								('W100',1802,'2019-12-11','2020-01-03'),
    								('B102',1802,'2019-12-11','2020-01-03'),
    								 ('Y102',1803,'2019-12-30','2020-04-01'),
    								  ('j0002',1801,'2019-01-01','2019-03-03'),
    								  ('j0002',1804,'2019-04-01','2019-12-12'),
    								  ('Y103',1801,'2019-05-01','2019-10-30'),
    								  ('Y103',1802,'2018-12-30','2019-12-01'),
    								  ('B103',1802,'2019-12-30','2019-12-01'),
    								  ('Y103',1803,'2019-07-01','2019-12-18')
    

    查询操作

    --1、查找每个出版社所出版图书的最高价。
    select    出版社, max(定价) as 最高价  from   图书   group by 出版社
    
    --2、查找借阅图书超过3本的读者编号和借书册数,要求只统计2019-12-10以后的借书情况。
    select  读者编号  , count(*) 借书册数   from   借阅表 where  借书日期 > '2019-12-10' 
                             group by  读者编号 having  count(*)>3
    
    --3、查找读者的借阅情况,即读者编号、借书册数,并进行借书情况汇总。
    select  读者编号 ,  COUNT(书号) as  册数 
    from 借阅表
    group  by   读者编号 
    
    --4、求机械工业出版社出版的各类图书的平均定价,用GROUP BY表示。
    select 类别  , AVG(定价)
    from 图书 where  出版社='机械工业出版社'
    group  by   类别
    
    --5、按照年份统计每个读者的借书册数,并进行汇总。
    select  读者编号 , YEAR(借书日期) as 年份 , COUNT(书号) as  册数 
    from 借阅表
    group  by   读者编号 ,YEAR(借书日期)
    
    --6、查询借阅了书号为“j0001”或“j0002”的读者编号。
    select  读者编号 
    from  借阅表 
    where  书号= 'j0001'
    union
    select  读者编号 
    from  借阅表 
    where  书号= 'j0002'
    
    --7、查询既借阅了书号为“j0001”,又借阅了书号为“j0002”的读者编号。
    select  读者编号 
    from  借阅表 
    where  书号= 'j0001'
    intersect
    select  读者编号 
    from  借阅表 
    where  书号= 'j0002'
    
    --8查询借阅了书号为“j0001”,但没有借阅书号为“j0002”的读者编号。
    select  读者编号 
    from  借阅表 
    where  书号= 'j0001'
    except
    select  读者编号 
    from  借阅表 
    where  书号= 'j0002'
    
    --9、查找这样的图书类别:要求类别中最高的图书定价不低于按类别分组的图书平均定价的2倍。
    select 类别
    from  图书
    group by  类别 having max(定价) >= 2*AVG(定价)
    

    3.实验结果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4.实验分析

    ①分析实验结果;
    顺利的完成实验
    ②说明实验过程中遇到的问题及怎么解决。
    不能正确
    查找借阅图书超过3本的读者编号和借书册数,要求只统计2019-12-10以后的借书情况
    要正确的使用聚集函数,以及where 和 having的区别

    select  读者编号  , count(*) 借书册数   from   借阅表 where  借书日期 > '2019-12-10' 
                             group by  读者编号 having  count(*)>3
    

    ③对错误方面进行分析;
    where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
    having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件 显示特定的组,也可以使用多个分组标准进行分组。

    三、实验总结

    ①.对本次实验掌握程度如何;
    完成度8成
    ②.是否在规定的时间内完成,没完成的原因是什么;
    没有,没能熟练的使用sql语句。
    ③.总结操作错误或无法得到结果的原因)
    Where 和having 区别
    1.类型:
    “Where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”;
    “Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。

    2.使用的角度:
    where后面之所以不能使用聚合函数是因为where的执行顺序在聚合函数之前,
    如下面这个sql语句:select sum(score) from student group by student.sex where sum(student.age)>100;
    having既然是对查出来的结果进行过滤,那么就不能对没有查出来的值使用having,
    如下面这个sql语句: select student.id,student.name from student having student.score >90;

    展开全文
  • 全国自考 ,计算机及应用专业,课程号:04735,课程名:数据库系统原理,课后习题及相关答案总结
  • 前言 二面大概50分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了(呜呜呜)。回来之后把这些题目做了一个分类并整理出答案(强迫症的我狂补知识~)分为spring,jvm,并发编程等,接下来分享...

    前言

    二面大概50分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了(呜呜呜)。回来之后把这些题目做了一个分类并整理出答案(强迫症的我狂补知识~)分为spring,jvm,并发编程等,接下来分享一下我的这蚂蚁金服面试的面经+一些我的学习笔记。

    蚂蚁金服二面被血虐,spring/并发/JVM把我直接问懵,我经历了什么?

    Java如何入门?

    1、建立好开发环境

    首先建立好开发环境非常重要,工欲善其事,必先利其器。做任何开发,首先就是要把这个环境准备好,之后就可以去做各种尝试,尝试过程中就能逐渐建立信心。初学者往往在环境配置中被各种预想不到的问题弄得很沮丧。

    这里,我也把开发环境的文件包分享给大家,同时还有视频教程,安装起来非常方便,有需要的话可以私信我【开发】获取到免费下载方式!同样后续分享的学习资料都是可以免费分享的,获取方式可以阅读至文末!

    建立起来环境了,改变世界就靠你的代码了。学习一门编程语言没有太多的诀窍,你可能可以去找一本比较好的经典的入门书籍,现在网络上也有非常多的资料,图文或者视频都可以,根据个人喜好选择。最重要的练习,熟能生巧,在不断的练习中去加深自己对程序语言的理解。

    2、理清学习思路

    对于转行人员来说,为了学好找工作,那就要学到**“能完成公司工作”**的程度,就要有大量知识储备,并做几个优质的项目,获得项目经验!

    这样的话,就比较难了……

    如果自学的话,没有“有深度且前沿”的学习路线、学习资源,自己学也需要花费大量的时间。因此,我也为大家提供了一份自学路线,具体的东西还是需要自己按照这个路线去摸索的。

    可以想到,自学需要学习多么庞大的知识储备,对于一个没有任何资源和学习思路的小白来说多难。

    3、掌握212个基础Java常用英语单词

    上面的学习路线大致浏览即可,因为你只需要按照这份学习路线去学习这里面的知识点即可,但是这些基础的Java常用英语单词掌握好后也有利于后面的学习,不会读直接百度即可!

    4、牢记Java基础以及基础进阶语法

    所有的Java基础语法以及Java基础进阶语法我都整理成了一份Xmind脑图,思维导图能够帮你形成一个系统的学习过程,思路清晰,让自己有全局观,同样有需要的朋友可以查看文末下载方式!

    Java基础语法

    Java基础进阶语法(部分)

    最后

    现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

    所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

    资料获取方式:戳这里免费下载

    资料获取方式:戳这里免费下载*

    展开全文
  • 前言 ...这不,今天我总结了饿了么4面(Java岗)面经,问题如下,都是真真的经历,准备面试找工作的朋友可自行检测一下。 RPC概述 RPC(Remote Procedure Call)即远程过程调用,允许一台计算机调用另一
  • 1、数据库课程设计要求见 文档”数据库原理及应用课程设计要求“ 2、该压缩包里含参考资料、部分源文件、成品3个文件夹 3、参考资料文件夹里含学习课件、相关CDM图、业务流程图、数据字典、流程图 应该怎样做的...
  • 实验六 数据库原理综合实验 1 实验目的 (1) 运用所学的数据库设计技术,针对一个具体的应用系统,完成系统数据库的概念模型、逻辑模型和物理模型的设计。以巩固理论课程上所学的知识,更好地掌握数据库设计技术...
  • 最后阐述对国内分布式事务数据库的发展历程和发展格局趋势预测,做到听众深入浅出掌握分布式事务数据库的技术架构、分布式事务原理及功能特性、分布式事务的测试验证方法,从分布式事务数据库的发展历程感知行业变化...
  • #新建数据库: create database test#主文件 no(name='book_m', ...filename='E:\数据库原理及应用\book_m.ndf', size=2MB, filengrowth=1MB, maxsize=5MB)#最下存蓄限制为5MB #事务日志文件 log on(n
  • 数据库系统原理课后题基本感念总结1 .试述数据、数据库数据库系统、数据库管理系统的概念。 ( l )数据( Data ) :描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。数据与其...
  • 数据库系统与原理设计>书中知识点名词解释用于考研备考,按章划分,较难易混知识点以二级标题特别标注,方便在目录中查找到。 文章目录说明第一章-第三章知识点详解第四章 数据库建模ER模型基本概念表示第五...
  • 题目1:Hibernate工作原理及为什么要用? 原理: hibernate,通过对jdbc进行封装,对 java类和 关系数据库进行mapping,实现了对关系数据库的面向对象方式的操作,改变了传统的jdbc + sql操作数据的方式,从而使...
  • 本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。版权声明:禁止转载,欢迎学习。QQ邮箱...
  • 他的主要研究方向是工程设计、生物(特别是人类基因组)数据库、文档文本数据库等新兴应用中的数据库建模。设计和集成,此外,他对知识表示、数据挖掘和知识发现等也非常感兴趣。 目录 封面 -17 封底 -16 扉页 -15 ...
  • JDBC(Java Data Base Connectivity)是Java语言访问数据库的一套API应用程序编程接口。 本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议。 jDBC的实现由数据库厂商以驱动程序的形式提供。 JDBC API可以...
  • 数据库上机考试重点、数据库原理应用课程总结、复习补充、考试说明、归纳的重点知识和实验6_游标、存储过程和触发器报告等。
  • Informix的HDR(High-AvailabilityDataReplication)为应用提供了高可靠性的数据库服务,其实现的方法就是在单个InformixServer基础之上添加一套备用的Server,冗余的...
  • 入门Redis,从底层数据结构及应用原理开始

    千次阅读 多人点赞 2021-03-08 19:53:17
    最近入门学习Redis数据库,从最简单的内容学习,然后总结记录于此,以备忘记,也与大家共享!作为一款高性能、开源的NoSQL数据库,Redis主要采用键值对形式存储数据,用C语言开发,采用BSD协议,功能强大、支持多种...
  •  数据库连接池的实现及原理   内容摘要: 对于一个复杂的数据库应用,频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。  有一个很著名的设计模式:资源池。该模式正是...
  • 索引一、索引简介二、索引原理1.HashHash缺陷及应用场景2.B+什么是B树?什么是B+树?B树和B+树的区别?B+树的相对于B树的优势?三、总结1.创建索引的好处2.创建索引的坏处3.应该在哪些列上创建索引呢4.不应该在哪些...
  • 黄玮(第8、9、11 章创作者) 1999 年开始从事DBA 工作,具有多年的水利、军工、电信航运行业大型数据库开发、设计和维护经验。2005 年创建个人网站HelloDBA.com,并致力于数据库方面的基础性技术研究。开发了多...
  • 数据库索引的理解适合建立索引的字段

    万次阅读 多人点赞 2018-03-06 13:17:43
    转载深入浅出数据库索引原理,哪些字段适合建立索引 问题 为什么要给表加上主键? 为什么加索引后会使查询变快? 为什么加索引后会使写入、修改、删除变慢? 什么情况下要同时在两个字段上建索引? 这些问题...
  • 数据库系统概论

    2017-11-04 12:14:14
    数据库系统概论》围绕数据库的设计、编程与实现,系统、全面地介绍了数据库系统的基本概念、基本原理、基本方法以及应用技术。主要内容包括数据库建模、关系模型和关系运算、数据库语言SQL(包括最新标准SQL2和SQL...
  • 2.2 Visual Studio 2005简介实现原理 9 2.3 ADO.Net数据库组件介绍 9 2.4 Microsoft SQL 2000简述 10 2.5 XML简述 10 第三章 体检结果在线查询系统设计分析 11 3.1需求分析 11 3.2系统流程图 12 3.3数据库设计 13 ...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 375
精华内容 150
热门标签
关键字:

数据库原理及应用总结