数据库系统-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
);

表完整性

在这里插入图片描述

相关内容

热门资讯

cad打印线条粗细设置 cad... 004-线型(下)打印样式设置和线型文件使用一、线宽设置方法制图规范里边的线宽要求,我们已经定义好,...
荼蘼什么意思 岁月缱绻葳蕤生香... 感谢作者【辰夕】的原创独家授权分享编辑整理:【多肉植物百科】百科君坐标:云南 曲靖春而至,季节流转,...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...