数据库系统-SQL
创始人
2025-05-28 10:18:03

文章目录

  • 一、历史
    • 1.2 功能概述
  • 二 、表定义
    • 2.1 数据类型
    • 2.2 约束
  • 三、修正表
    • 3.1 修改表的定义
    • 3.2 撤销:
  • 四、 SQLServer
    • 4.1 系统数据库文件
    • 4.2 数据库维护
      • 备份数据库
      • 恢复数据库
      • Oracle 数据库授权
    • 4.3 创建约束
    • 五、复杂查询
    • 5.2 空值处理
    • 5.3 视图
  • 五、数据库完整性
        • 完整性的分类
        • 约束来源分类
        • 约束状态分类
    • 5.1 SQL实现静态完整性
      • 5.1.1 静态约束
        • 列完整性
        • 表完整性

一、历史

1974年,Boyce&Chamber提出
1975-1979年,IBM的San Jose再System R上首次实现,称为Sequel(Structured Engligsh Query Language) --> SQL
1986,ANSI/ISO 推迟标准:SQL-86
1989,SQL-98
1992,SQL92(SQL2)(标准的关系数据库语言)
1999,SQL99(SQL3)(面向对象数据库&对象关系数据库)
SQL2003,SQL2006,SQL2008(数据库应用程序)

1.2 功能概述

SQL= DDL + DML + DCL

  • DDL(Data Definition Language)数据库定义语言:Create Alter Drop
  • DML(Data Manipulation Language)数据操纵语言:Insert Delete Update
  • DCL(Data Control Language)数据库控制语言 :Grant、Revoke
  • TCL(Transaction Control Language)事务控制语言

二 、表定义

在这里插入图片描述

2.1 数据类型

  • char(n):固定长度的字符串
  • varchar(n):可变长度的字符串
  • int(integer):整数
  • numeric(p,q):固定精度数字,小数点左边p位,右边p-q位
  • float(n):有的也写作real,浮点精度数字,小数点后保留n位
  • date:日期
  • time:时间

2.2 约束

  • Primary Key:主键约束,表中只能有一个
  • Unique:唯一性约束,表中可以有多个
  • Not null:不为空

三、修正表

3.1 修改表的定义

在这里插入图片描述
示例:

Student表上,增加列 Saddr char[40], PID char[18]
Alter Table Student add Saddr char(40),PID char(18);Student表上,修改 Sname的类型为 char(10)
Alter Table Student modify Sname char(10);Student表上,删除学生姓名必须取唯一值的约束
Alter  Table Student drop unique(Sname);删除主键
Alter Table Student  drop primary key;

3.2 撤销:

delete 只会删除行数据,撤销会删除表定义

Drop Table Student;--撤销数据库
Drop database 数据库名;

四、 SQLServer

4.1 系统数据库文件

在这里插入图片描述
每一个数据库 在硬盘中就是一组大文件
文件

  • .mdf(主数据库文件): 存储数据库的启动信息和部分或全部数据,只能有一个
  • .ndf(辅助数据文件):主数据外的数据,可以多个
  • .ldf(日志文件): 每个DB至少有一个log文件

页面
最小存储单位,一页为8k or 8192字节

空间extent
连续8个页面,64k,是分配数据表存储空间的一种单位

4.2 数据库维护

备份数据库

  • 完全备份:完全备份数据文件& 日志文件
  • 差异(增量)备份:在完全备份的基础上,进行增量的备份,速度快
  • 事务日志备份:所发生事务进行备份
  • 数据库文件和文件组备份:数据库相当大的情况

恢复数据库

将备份加载到系统中的过程,静态的单用户模式(不让其他用户操作)

Oracle 数据库授权

  1. 进入orcale控制台
输入命令:sqlplus /nolog  进入oracle的控制台
  1. 以DBA角色进入
输入命令:conn /as sysdba;其他角色还有:
sys:系统管理员
system:本地管理员
scott:普通用户

select ,update,insert,delete,exec,dir

grant 权限 on 表明 to 用户名
管理用户:
create user zhangsan;//在管理员用户下创建zhangshan
alter suer scott identified by tiger;//修改密码

4.3 创建约束

约束是SQL提供的总保持数据库完整性的一种方法,有一下五中

  • primary key constraint(主键值)
  • unique constarint(唯一值)
  • check constraint(检查性)
  • default constraint(默认)
  • foreign key constraint(外键)
constarint 约束名 约束类型(列名)Create Table Course (C# char(3),Cname char(12),Chourse integer,Credit float(1),T# char(3)) constraint pk primary key (C#)

五、复杂查询

在这里插入图片描述
其实也有any,但是any有歧义 (任意 还是 所有?)所以被some代替了
在这里插入图片描述

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

  • intersect :只返回交集 ,自动去重

在这里插入图片描述

  • union 返回并集,自动去重
    在这里插入图片描述

  • except :T1和T2差集结果将返回1,它是在T1结果集中,并T2结果集中没有出现的行,自动去重
    在这里插入图片描述

所有操作 都可以 + all ,代表不去重

5.2 空值处理

  • 空值:不知道、不确定、不存在的值
  • 空值,会影响许多方面:聚集函数运算的正确性,不能参加算数、比价、逻辑运算
    在这里插入图片描述
    现行DBMS的处理小结
  • 除了is null 之外,空值不满足任何查询条件
  • 如果null参与算数运算,该算数运算表达式的值为null
  • 如果null参与比较运算,结果为false
  • null参与聚集运算,count(*)会包含null,其他聚集函数都会忽略null

5.3 视图

create view stu_view as(select sname,sage from student;
);

视图的更新
view不一定能更新的,比如

create view s_g(s#,savg) as (select S#, avg(age) from student group by s#
)
如果更新 savg :
update s_g set savg = 85 where s# = '202012'
那么就不能直接更新insert into stu_view Values('zhangsan',20)
但是 student 表中#sid 是主键,那么就不能更新
  • view中有聚集函数,不能update
  • unique distinct ,不能
  • group by 不能
  • 有算数表达式算出来的列,不能
  • view不包含主键,不能
drop view s_g; 撤销视图 

五、数据库完整性

DB integrity :DBMS应该保证DB的一种特性,任何情况下的 正确性、有效性、一致性

广义完整性:语义~、并发控制、安全控制、DB故障恢复…
狭义完整性:专指语义完整性

关系模型中的完整性:

  1. 实体完整性
  2. 参照完整性
  3. 用户自定义

在这里插入图片描述

完整性的分类

约束对象来分

  • 域完整性
  • 关系完整性

约束来源分类

  • 结构约束
  • 内容约束

约束状态分类

  • 静态约束
  • 动态约束:标准是动的,例如工资只升不降

5.1 SQL实现静态完整性

5.1.1 静态约束

列完整性
表完整性

列完整性

Create Table(S# char(8) not null unique,Sname char(10),Ssex char(2) constraint ctssex check(Ssex='男' or Ssex = ’女‘),Sage integer check(Sage >= 1 and Sage < 150),D# char(2) references Dept(D#) on delete cascade,Sclass char(6);
)

在这里插入图片描述

Create Table Course (C# char(3),Cname char(12),Course integer,Credit float constraint ctcredit check (Credit >= 0.0 and Credit <= 5.0),T# char(3) references Teacher(T#) on delete cascade
);

表完整性

在这里插入图片描述

相关内容

热门资讯

【Java闭关修炼】Sprin... # 配置Mysql与注册登录模块应用服务模型IDEA 连接数据库点击IDEA右侧的database ...
Oracle 常见报错问题汇总 Oracle 常见报错问题汇总 报错:ORA-01017: invalid username/pas...
计算不规则区域的周长和面积——... 1.题目描述 设计求不规则区域周长和面积计算的算法。 测试数据的获得: 输入样例&#x...
STM32之IIC IIC协议IIC全称Inter-Integrated Circuit (集成电路总线),...
Vue3 使用MD5加密(清晰... 概述 最近在想做个cloud项目,gitee上找了个模板项目,前端使用到vue3 &#...
使用Idea编译Nacos源码... 其实nacos下载下来启动就可以了,但是为了方便一些,而且Nacos在GitHub上下载是真的慢,可...
【abp Vnext】下载并运... 软件环境:电脑需要基础软件环境node.js、npm,这些网上教程很多&...
一文了解|氢燃料电池行业痛点问... 早在1839年的英国,一位名叫威廉格罗夫的科学家,就已发明了一款通过氢气...
华秋工艺分享:第八道主流程之丝... 如图,第八道主流程为 文字 。 文字的目的:文字又名字符。是线路板上白色...
Redis10大数据类型 Redis10大数据类型Redis键(key)一、Redis字符串&#x...
MySQL变量的使用 文章目录1、系统变量1.1 查看系统变量1.2 设置系统变量2、用户变量2.1 定义用户变量2.2 ...
IntelliJ IDEA创建... 目录 ——————————————————————————————— 一、创建Java项目 1、创建...
Qt学习_08_用独立的文件存... 0 前言 上一篇笔记对样式表进行了初步学习,QT学习_07_样式表的初步学习_江湖上都...
小黑子—多媒体技术与运用基础知... 多媒体技术与运用1.0多媒体系列第一章1. 计算机媒体概述1.1 媒体的分类1.2 小结2. 多媒体...
自主移动机器人AMR控制器设计... 近年来,随着社会和技术发展,自主移动已经成为了仓储物流[1]、无人驾驶[...
Java Web应用开发——第... 第二章:JSP基本语法测验 一.单项选择题(共15题,49.5分...
代码自动生成工具实战-Curs... 文章目录Cursor code generate介绍Cursor 代码生成实战prompt1prom...
普通Java工程师 VS 优秀... 1 核心能力 1.1 要成为一名优秀的Java架构师 只懂技术还远远不够,懂技术/懂业...
【爬虫】一、前置知识 一、Web请求过程解析 1.服务器渲染:在服务器端把数据和html整合在一起ÿ...
文心一言话题的思考 ⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。...
react-native an... 1. 配置环境 必须安装的依赖有:Node、JDK 和 Android Studio。...
若依分离版选择弹窗数据回读 最近学习若依框架过程中想要实现点击按钮显示弹窗,在弹窗选择信息后回读到父组件中显示&#...
板边器件距离不够,导致元器件无... 电子元器件在PCB板上的 合理布局 ,是减少焊接缺点的极重要一环!元器件...
sdbusplus:通过con... sdbusplus:通过new_method_call同步调用service的meth...
骷髅病毒分析 一、病毒信息病毒名称:骷髅病毒文件名称:d5dac2456fa67584...
使用CRT调式库调式运行时堆 #include#include#define CRTDBG_MAP_ALLOC#include #...
Hive的UDF实现两种简单方... Hive的UDF实现两种简单方法+通过编译源码添加UDF 一、实现简单的say_hello ...
211本科生就业难,绝不是个例... 曾几何时,我们在高中时期日以继夜地努力学习,只为在高考中获得更高的分数&...
Java【多线程基础2】 Th... 文章目录前言一、Thread类1, 构造方法2, 常用成员属性3, 常用成员方法3.1, start...
MySQL分区 一张表的数据在物理层面都是存放在一起的。随着业务增长,当一张表的数据量过大时ÿ...