- 📢博客主页:盾山狂热粉的博客_CSDN博客-C、C++语言,机器视觉领域博主
- 📢努力努力再努力嗷~~~✨
💡大纲
⭕SQL是一种通用的、功能强大的标准查询语言,已经在众多DBMS(数据库管理系统)中广泛使用
一、SQL概述
⭕三个标准:ANSI SQL ---> SQL-92或SQL2 ---> SQL-99标准(或SQL3标准)
(一)特点
- 综合统一。SQL集数据定义、数据操纵和数据控制功能于一身,可独立完成数据库生命周期的所有活动
- 高度非过程化。在进行数据操作时,只要指出“做什么”,不需要指出“怎么做”,数据的存储路径对用户来说是透明的,提高了数据的独立性
- 面向集合的操作方式。操作对象是二维表格
- 两种使用方式。用户可以在终端键盘上输入SQL命令,对数据库进行操作,称为自含式语言;将SQL语言嵌入到高级语言程序中使用,称为嵌入式语言
(二)SQL是数据化查询语言
1、它能做什么?
可创建新数据库、新数据表、视图
可实现对数据库中数据的增、删、查、改等操作
在数据库中创建存储过程和函数
可以设置用户、数据库、数据表、存储过程和视图的访问权限
2、分类
- 数据定义语⾔DDL:⽤于操作数据库中的各种对象---数据表、视图、 索引等。create(新建)、drop(删除)、alter(修改)
- 数据操纵语⾔DML:实现对表数据的插入、更新和删除等操作。插⼊(insert)、更新(update)、删除(delete)
数据查询语⾔DQL:实现对数据表中数据的查询操作。基本结构:select<字段列表> from<表名> where<查询条件>
数据控制语⾔DCL:实现事务处理和权限管理等。提交(commit)、回滚(rollback)、授权(grant)、收权(revoke)
(三)SQL支持三级模式结构
💡视图对应外模式、基本表对应模式、存储文件对应内模式
⭕视图是面向用户的,对应外模式;基本表是数据的逻辑内容,对应模式;存储文件是数据库用来存储数据的,对应内模式
二、数据定义语言DDL
💡DDL提供定义关系模式和视图、删除关系和视图、修改关系和视图、修改关系模式的命令
(一)创建表---create table、修改表---alter table、删除表---drop table
1、创建表
⭕create table 表名 (列名 数据类型 约束条件,列名 数据类型 约束条件, 列名 数据类型 约束条件,……);
💡列级完整性约束条件
- null 空
- not null 不为空
- unique 取值为一
- not null unique 非空且唯一
📑建立一个课程系统数据库。其中,学生表S(Sno,Sname,Sage,Ssex)分别表示学号、学生姓名、学生年龄和学生性别;课程表C(Cno,Cname,CT)分别表示课程编号、课程名称、主讲老师;老师表T(Tno,Tname,Tage,Tsex)分别表示教师编号、教师姓名、教师年龄、教师性别)。
数据库应该满足如下要求:
(1)学生学号不能为空,且值是唯一的;学生姓名不能为空。
(2)课程编号和课程名称不能为空,且值是唯一的。
(3)教师编号不能为空,且值是唯一的;教师姓名不能为空。
(4)教师和课程有着多对多的联系,必须生成一个关系模式。
-- 学生
create table S( -- 创建 表格 名称为S
Sno int primary key, -- not null unique -- 非空且唯一
Sname varchar(30) not null, -- varchar 变长字符段 char 定长字符段
Sage int,
Ssex char(2)
);
-- 课程
create table C(
Cno primary key, -- 主键
Cname not null unique
)
-- 教师
create table T(
Tno int primary key,
Tname varchar(30) not null,
Tage int,
Tsex char(2)
)
-- 教师与课程联系
create table TC(
Tno int,
Cno int,
foreign key Tno,Cno references T(Tno),C(Cno) -- 把这两个键定义为外键
)
2、修改表---alter table、删除表---drop table
⭕修改表---add、modify、drop
alter table C add Cscore int; -- 添加列 列名 数据类型
alter table C modify Cscore char(1) not null; -- 修改列数据类型/约束
alter table C drop Cscore; -- 删除列
⭕删除表
drop table TC; -- 删除表格TC
(二)定义、删除索引
1、建立索引---提高查询效率
⭕create [UNIQUE][CLUSTER] index 索引名 on 表名(列名 次序, 列名 次序,……);
👉次序:可选ASC(升序)或DSC(降序),默认值为ASC
👉UNIQUE:表明此索引的每一个索引值只对应唯一的数据记录
👉CLUSTER:表明要建立的索引是聚集索引,索引项的顺序是与表中记录的物理顺序一致的索引组织
2、删除索引
⭕drop index 索引名
create index S_age on S(Sage);
drop index S_age; -- 删除表格TC
(三)定义、删除、更新视图
create view V_S as select * from S; -- 创建视图 as表示代替某个视图
select * from V_S; -- 查询视图
drop view V_S; -- 删除视图
三、数据操纵语言DML
(一)数据的插入
insert into S(Sno,Sname,Sage) values(1,'张三',10),(2,'李四',11),(3,'王五',9);
-- 向学生表S中的(Sno,Sname,Sage)属性插入数据(1,'张三',10),(2,'李四',11),(3,'王五',9)
insert into S values(1,'张三',10,'男'),(2,'李四',11,'男'),(3,'王五',9,'男');
-- 向学生表S中的所有属性插入数据
(二)数据的删除
delete from S; -- 删除学生表S中的所有数据
delete from S where Sname = '张三'; -- 删除学生表S中姓名为'张三'的学生信息
(三)数据的修改
update S set Sage = 18 where Sno = 3;
-- 将学生表S中学号为3的学生年龄修改为18
四、数据查询语言DQL
💡数据库查询是数据库的核心操作,select语句是用于查询的SQL语句
1、基本结构
select <属性> from <表名> [where <查询条件>];
select * from T; -- 查询教师表中的所有数据(*星号代表所有字段)
select Tno,Tname from T; -- 查询教师表中的教师编号和名称
select Sname,Sage,Ssex from S where Sno = 100; -- 查询学生表中学号为100的学生姓名、年龄和性别
select Sname,Sage,Ssex from S where Sno > 10; -- 查询学生表中学号大于10的学生姓名、年龄和性别
-- 查询条件运算符可以有多种:>,<,=,<>(!=),>=,<=
select * from S where Sname in("张三","李四",'王五'); -- 查询名称在("张三","李四",'王五')集合中的学生的所有信息
select * from C where Cno>3 and Cname = '计算机科学'; -- 查询课程编号为大于3且名称为计算机科学的课程信息
-- and/&&/AND 表示条件同时满足
-- or/||//OR 表示多个条件满足其中一个即可
2、字符串模糊匹配like
👉通配符"_":代表任意一个字符
select * from S where Sname like "张_";
-- 查询学生中名字以"张"字开头,以任意一个字结尾的学员信息,如:'张三','张四','张文','张*','张A'
-- 查询姓"张"的且名字为两个字的同学的信息
👉通配符"%":代表任意多个字符
select * from S where Sname like "张%";
-- 查询以'张'字开头,以任意多个字符结尾,如:'张三',"张长弓",“张1234”
-- 查询姓张的学生的相关信息
👉通配符"%"和通配符"_"结合使用
select * from S where Sname like "张_%";
-- 查询以张字开头且名称中至少会有2个字的学生信息
五、数据库设计(流程+过程)
💡数据库的设计过程参照软件系统生命周期的划分方式,把数据库应用系统的生命周期分为数据库规划、需求描述与分析、数据库设计与应用程序设计、实现、测试、运行维护,共6个阶段
👉数据库规划
- 是创建数据库应用系统的开始,用来确定数据库应用系统需要完成什么功能,主要目标是什么,还要对工作量、使用的资源和需要的经费的估计等
👉需求描述和分析
- 从用户的角度来分析,收集和整理用户的信息,以特定的方式加以描述,为下一步的工作做好铺垫
👉数据库设计与应用程序设计
- 数据库设计是对用户数据的组织和存储设计
- 应用程序设计是在数据库设计基础上对数据库操作及业务实现的设计,包括事务设计和用户界面设计
👉数据库系统实现
- 按照数据库设计提出的方案,使用DBMS支持的数据定义语言实现数据库的建立,用高级语言实现应用程序的编写
👉测试阶段
- 在系统制作完成后,和数据系统投入使用前,通过精心制定的测试计划和测试数据来测试系统的性能是否满足设计要求,发现存在的问题
👉运行维护
- 数据库应用系统经过测试、试运行后,在正式投入使用中,可能会发现一些隐藏得比较深的BUG,这时候就需要及时的进行调整与修改来确保系统能正常运行了
⭕在任何阶段,一旦发现不能满足用户的需求,就要返回到前面适当的阶段进行修正。每一个阶段设计的成果都要经过审批,确定任务是否全部完成
(一)数据库设计的基本步骤
💡目前得到公认的,较为完善的数据库设计方法为“新奥尔良法”,它把数据库设计分为以下4个主要阶段
1、用户需求分析(了解)
👉是指数据库设计人员采用一定的辅助工具对应用对象的功能、性能和限制等要求所进行科学分析
👉主要包括数据和处理两方面
- 数据:数据字典、系统的数据项、数据流和数据存储的描述
- 处理:数据流图和判定表、数据字典中处理过程的描述
2、概念结构设计---概念模型
👉对信息分析和定义(信息可视化),然后将应用对象抽象为概念模型
👉描述概念模型常用的工具就是E-R图
3、逻辑结构设计---逻辑模型
👉概念模型(E-R图)转换为逻辑模型
👉是物理设计的基础,包括模式初始设计、子模式设计、应用程序设计、模式评价以及模式求精
👉逻辑设计可分为以下3步
将概念模型(E-R图)转换成一般的关系、网状、层次模型
将关系、网状、层次模型向特定的DBMS支持下的数据模型转换
对数据模型进行优化
4、关系数据库物理结构设计
👉逻辑模型在计算机中的具体实现方案
👉主要内容:关系模式选择存取方法、设计关系、索引等数据库文件的物理结构
(二)数据库的实施与维护(了解)
👉数据库实现阶段的工作:建立实际数据库结构、试运行、装入数据
👉其他有关的设计工作:数据库的重新组织设计、故障恢复方案设计、安全性考虑、事务控制
👉运行于维护阶段的工作:数据库的日常维护(安全性、完整性控制、数据库的转储和恢复)、性能的监督、分析与改进、扩充新功能、修改错误
⭕嵌入式SQL
- 将SQL语句内嵌到其他高级语言中使用,那么这种SQL的使用方式称为嵌入式SQL
- 其中的SQL语句为嵌入式语句,其他高级语言称为“宿主语言”
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!