**数据库基础概念:
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
数据库复习知识
- 数据库基本概念
- 一、第一章概念知识复习
- 二、数据库创建,数据库及数据库对象
数据库基本概念
一、第一章概念知识复习
1.数据库。数据库(DB)database 是存放数据的仓库,这些数据存在一定的关联,并按照一定的格式存放在计算机内。
2.数据库管理系统:简单的来说数据库管理系统(DBMS,软件 SQL server,My Sql),数据库系统管理人员通过对DBMS对数据库进行管理。
3.数据库系统:由数据库,数据库管理系统,应用程序,数据库管理成员组成*,即 DBS=DB+DBMS+应用程序+DBA
4.数据库系统的三层模式结构:外模式,模式,内模式
模式:也称为逻辑模式,是数据库中全体数据的逻辑结构和特征的描述。
外模式:子模式/用户模式,一个数据库可以由多个外模式,数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述。
内模式:存储模式,一个数据库只有一个内模式,是数据物理结构和存储方式的描述。
域是一组具有相应数据类型的值的集合(我个人理解有点像我们之前学过的编程语言的数组一样)。
候选码某一属性的值能唯一标识一个元组,其子集不能。
主码在候选码中选定一个作为主码(只允许有一个主码)。
主属性候选码的属性叫做主属性,非主属性就是不是候选码的属性,也叫非码属性。
全码:关系模式中,所有属性都是候选码,都是主属性。
二、数据库创建,数据库及数据库对象
数据库是一个容器,里面包含了许多数据库对象。
表:表是存放数据及表示关系的主要形式,是最主要的数据库对象。
视图:视图由一个或多个视图和基本表生成的引用表(虚表)。视图所对应的数据不进行实际存储,是一个虚表,视图一经定义就可以像表一样被查询,修改,输出和更新。
视图的优点:
1.为用户集中数据,简化用的数据查询和处理,视图可将分散在多个表中的数据集中在一起。
2.屏蔽数据库的复杂性
3.简化用户权限的管理,只需要授予用户使用视图的权限。
4.便于数据共享
5.可以重新组织数据以便输出到其他应用程序中。
!!!!需注意的:
(1):只能在当前数据库中创建视图,视图的命名规则必须遵循标识符命名规则,不能与表同名。
(2).不能把规则,默认值,或触发器与视图相关联。
SQL功能 | 关键字 |
---|---|
数据查询 | select |
数据定义 | create,drop,alter |
数据操纵 | insert,update,delete |
数据控制 | create,remove |
创建模式
要求是在一个数据库名下创建,默认模式名是 dbo。
create schema 模式名 authorization 用户名—>模式下还可以定义
删除模式
drop schema 模式名 cascade|restrict
创建表:
create table 表名
(列名,数据类型,列级完整性约束,…)
修改表(添加新元素):
alter table 表名
add 新列名 数据类型 约束条件。
(add 添加的是表记完整性约束。)
drop 列名
alter column 列名 数据类型 ------>修改列属性
删除表:drop table 表名
建立索引:create unique|cluster index 索引名
unique:每一个索引值对应一个唯一的数据记录。
cluster:聚簇索引。
修改索引:alter index 旧索引名 rename to 新索引名
删除索引:drop index 索引名
创建约束(列级约束 and 表级约束)
下面根据课本上的三个表脚本创建的,sc,sno,cno。
1.列级约束创建
create table sc(
sno varchar(10) references s.test .student(sno),
constraint PK(约束名) primary key(sno)
)
2表级约束
create table sc(
sno varchar(10),
cno varchar(3),
grade int,
constraint PK_2 primary key(sno,cno),
constraint Fk_1 foreign key(sno) references s.test.student(sno),
constraint FK_2 foreign key(cno) references s.test.course(cno)
)
数据查询:
select <all|distinct> 目标列 from 表名 distinct去重。
select * from 表明,查询全部表的全部列信息
查询满足条件的元组:用到where 子句
select * from 表名 where 查询条件
例如:查询男生学生的姓名
字符匹配:like
查询姓孙的学生信息
查询姓王,且名字为2位的学生的信息:
这里单引号里面,如果数据库为ASCII编码则需要俩个_,GBK编码只需要一个_。
![在这里插入图片描述](https://img-blog.csdnimg/5656793c1535476ba743e939129b1d35.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU1FuYW5hbmFuYQ==,size_20,color_FFFFFF,t_70,g_se,x_16
查询备注为空的学生信息:
AND表并且,OR表或者,可以用来连接多个条件。
排序:ORDER BY:按照某列属性的值对数据进行排序,默认是升序(ASC),ASC升序,DESC为降序。
按照总学分进行降序排列:
order by 和where 和group by 之间可以联合使用,
select * from 表名 where 条件 group by 列名 order by 列名。
分组:group by
将查询到的结果按照一列或者多列的值分组,值相等为一组。
查询课程号及选课人数。
嵌套查询:在查询中不能增加order by 语句
exists:带有exists谓词的子查询不返回任何数据,只产生逻辑真值ture和逻辑假值false
–查询所有选修了课程号10开头的学生的姓名
集合查询:
集合操作主要包括并操作union,交叫做intersect,差操作except
**数据更新:数据更新包括数据的插入,修改,删除
数据的插入:数据的插入通常有俩种形式,一种是插入元组,另一种是插入子查询结果。
1.insert into 表名 [插入的属性] values <插入对应属性列数值>;不写属性列默认为全部属性。
2.insert into <表名>[属性列]子查询
**
例子:将xsb中年龄大于18的插入到students表中
insert into xsb(name,age) select name,age from xsb where age>18;
数据修改:
update 表名 set<列名>=<表达式值>[where <条件>]
修改一个元组的值:
将姓名为程明的出生日期改为2000年01,01
例子:修改多个元组的值:将所有学生的成绩加5分
通过子查询进行数据的修改:
将所有男生的成绩全部置0
数据删除
delete from <表名> where <条件>。
删除多个元组的值
delete from <表名>删除表中的所有数据,清空表带子查询的删除语句。
视图操作:
视图:
1.可以用来简化用户的操作
2.让用户以多种角度看待同一数据
3.对重构数据库提供了一些逻辑独立性
4.能够对机密数据提供安全保护
5.更清晰的表达查询
创建视图:
create view <视图名>[<列名>] as<子查询>[with check option]
子查询可以是任意的select语句。
with check option 表示对视图进行更新操作的行满足视图定义的谓语条件(子查询的条件表达式)。
删除视图:drop view<视图名>[cascade],查询视图student((和表的操作类似)
select * from student where age>18
视图的更新和表的更新类似,增加,修改,删除,语法也相同,注:并不是所有的视图都可以更新。
更多推荐
Sql server 期末知识点复习
发布评论