数据库系统概论基础及操作

一、数据库的四个基本概念:

①数据:

描述事物的符号记录。

②数据库:

概括地讲,数据库数据具有永久存储、有组织和可共享的三个基本特点。 严格地讲:数据库是⻓期储存在计算机内、有组织的、 可共享的⼤量数据的集合。数据库中的数据按⼀定的数据模型组织、 描述和储存,具有较⼩的冗余度、较⾼的数据独⽴性和易扩展性,并可为各种⽤户共享。

③数据库管理系统:

是位于⽤户和操作系统之间的⼀层数据管理软件 。和操作系统⼀样是计算机的基础软件。

主要功能:

1、数据定义功能
2、数据组织、存储和管理
3、数据操纵功能
4、数据库的事务管理和运⾏管理
5、数据库的建⽴和维护功能
6、其他功能(通信功能,数据转换功能,互访和互操作功能等)

④数据库系统:

是由数据库、数据库管理系统(及其应⽤开发⼯具)、 应⽤程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统。
2131

二、ER图

1.概念:

ER图分为实体、属性、关系三个核⼼部分。实体是⻓⽅形体现,⽽属性则是椭圆形,关系为菱 形。
54353

2.常用的数据类型:

常⽤的数据模型: 层次模型,⽹状模型,关系模型, ⾯向对象数据模型,对象关系数据模型,半结构化数据模型。

(1)层次模型:(类似于二叉树)

1、有且只有⼀个结点没有双亲结点,这个结点称为根结点。
2、根以外的其他结点有且只有⼀个双亲结点。
234234

(2)⽹状模型:(类似于图)

1、允许⼀个以上的结点⽆双亲。
2、⼀个结点可以有多于⼀个双亲。
456456

(3)关系模型:

345534

关系: ⼀个关系对应通常说的⼀张表。
元组: 表中的⼀⾏。
属性: 表中的⼀列。
码: 也称码键,表中的某个属性组。
域: 是⼀组具有相同数据类型的值的集合。
分量: 元组中的⼀个属性。

三、SQL的基本语法:

基础:

1.SQL的数据类型(变量类型):

345345
234234

2.模式定义和删除:

(1)模式定义:

2342
例如:
为用户Zhang定义一个学生-课程模式S-T。

create schema "S-T" authorization Zhang;
(2)模式定义+视图:

345345
这里的授权后边再说。

(3)模式删除:

234234

删除模式, 其中 CASCADE 和RESTRICT 必须⼆选⼀,
CASCADE是(级联) 删除模式的同时也把该模式的所有数据库对象删除.
RESTRICT(限制) 如果该模式下有下属对象,⽐如表视图 就拒绝这个删除语句的执⾏

3.表的创建和删除和修改:

(1)创建表:
create table 表名(字段名 类型 字段约束, 字段名 类型 字段约束, 字段名 类型 字段约束);

例如:

create table user(name varchar(20), age int, sex char(1));
(2)删除表:

765
例如:
删除Student表。

drop table Student CASCADE;

CASCADE呢 是如果表有外键,视图 触发器的话,也会强⾏删除, RESTRICT恰恰相反。

(3)修改表:

5345345
例如:

  • 向Student表添加“入学时间”列,其数据类型为日期型。
alter table Student add S_entrance DATE;
  • 将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
alter table Student alter COLUMN Sage INT;

4.索引的建立与修改和删除:

数据量⽐较⼤的时候,查询耗时间⻓,建⽴索引可以有效减少消耗时间。
索引可以建⽴在⼀列或者多列上。

(1)索引的建立:

543534

CLUSTER:聚簇索引:物理顺序与索引的逻辑顺序相同。⽐如买书。
UNIQUE:唯⼀索引。

例如:

create UNIQUE index Stusno on Student(Sno);
(2)索引的修改:

45364
例如:
将SC表的SCno索引名改为SCSno。

alter index SCno rename to SCSno;
(3)索引的删除:

5345234

例如:
删除Student表的Stusname索引。

drop index Stusname;

小成:

先给你几个表,用于后边的讲解。
23423
43534
6456

1.查询所有和查询部分列:

345345
例如:
6456
456645

2.查询给列起别名(给表起别名也是⼀样):

select 属性 as 别名 from 表;

这里的as可以省略。
例如:

select username 姓名 form user;

3.结果去重:

加上distinct关键词就好。
例如:

select distinct title from edu_course;

4.查询结果加条件:

(1)常用条件:

567567567
例如:

//价格大于2
select title from edu_course where price > 2;

//价格在10到99之间
select * from edu_course where price between 10 and 99;

//1在一个集合中是否出现
select 1 in (1, 2);

//字符匹配,%代表代替多个字符,_只能代表1一个字符
select * from edu_course where title like '%速成';

//是否为空值
select * from user where username is no null;

//多重条件
select * from user where id = 3 and password = 123;

5.聚集函数的使用:

23423
加上distinct是去除列里边重复的来计算的。
例如:

//统计edu_course表中title的数量
select count(title) from edu_course;

//去重统计edu_course表中title的数量
select count(distinct title) from edu_course;

//求edu_course表中price的总和值
select sum(price) from edu_course;

//求edu_course表中price的平均值
select avg(price) from edu_course;

//求edu_course表中price的最大值
select max(price) from edu_course;

//求edu_course表中price的最小值
select min(price) from edu_course;

6.分组查询:

GROUP BY分组 ,如果要进⾏筛选,请使⽤Having。
例如:
345345
3425

7.连接:

等值、⾮等值连接,以where为关键词。
35234

(1)自身连接:

⼀个表与⾃身连接,为本身这个表起两个别名,然后进⾏操作。
例如:

select c1.version, c2.view_count from edu_course c2 where c1.version = c2.view_count;
(2)外连接:

把被舍弃的值, 也保留在结果中,但是要加NULL。
例如:645645

(3)多表查询:

两个表以上的连接。
例如:

select c.id ID, c.title 课程名, cp.title 章节, cd.description 课程描述 from edu_course c, edu_chapter cp, edu_course_description cd where c.id = cp.course_id and c.id = cd.id;
(4)嵌套查询:

例如:

select c.title 课程名, c.price 价格 from edu_course c where c.title in (select c2.title from edu_course c2 where c2.title = "MySQL速成");
(5)带有ANY ALL的子查询:

456456

例如:

//大于嵌套中的返回的所有数据才成立
select c.title 课程名, c.price 价格 from edu_course c where c.price > ALL (select c2.price from edu_course c2 where c2.price BETWEEN 1 and 20);

//大于嵌套中的返回的任意一个就成立
select c.title 课程名, c.price 价格 from edu_course c where c.price > ANY (select c2.price from edu_course c2 where c2.price BETWEEN 22 and 24);
(6)带EXISTs的子查询:

not exists 如果后⾯的⼦查询没有值,返回1 否则为0 。
exists 相反。
例如:
在这里插入435345描述

最⾥⾯的⼦查询是 这个⼈没选⼀⻔课程
外⾯的⼦查询是 没有这样的课程

8.集合查询:

(1)并:

4534534

(2)交:

4534534

(3)差:

543534

进阶:

1.数据插⼊、修改、删除:

(1)插入:
insert into 表名 [( 字段列表 )] values( 值列表 ...); 

//标准添加(指定所有字段,给定所有的值) 
insert into stu (id, name, age, sex, classid) values (1, 'zhangsan', 20, 'm', 'lamp138'); 

//指定 部分 字段添加值
insert into stu (name, classid) value ('lisi', 'lamp138'); 

//不指定 字段添加值 
insert into stu value(null, 'wangwu', 21, 'w', 'lamp138'); 

//批量 添加值
insert into stu values 
(null, 'zhaoliu', 25, 'w', 'lamp94'), 
(null, 'uu01', 26, 'm', 'lamp94'), 
(null, 'uu02', 28, 'w', 'lamp92'), 
(null, 'qq02', 24, 'm', 'lamp92'), 
(null, 'uu03', 32, 'm', 'lamp138'), 
(null, 'qq03', 23, 'w', 'lamp94');
(2)修改:
update 表名 set 字段 1 = 值 1, 字段 2= 值 2, 字段 2 n= 值 n... where 条件
 
//将id为11的age改为35 ,sex 改为m值 
update stu set age= 35 ,sex= 'm' where id= 11 ;
(3)删除:
格式: delete from 表名 [where 条件] 

//删除stu表中id值为100的数据 
delete from stu where id=100;

2.视图的创建、删除、查询、更新:

(1)什么是视图:

视图(VIEW)也被称作虚表,即虚拟的表,是⼀组数据的逻辑表示,其本质是对应于⼀条SELECT语句其结果集被赋予⼀个名字,即视图名字。

视图本身并不包含任何数据,它只包含映射到基表的⼀个查询语句,当基表数据发⽣变化,视图数据也会发生改变。

⽬的: ⽅便,简化数据操作。

(2)创建视图:

5345345
345345
3545345
345345

加了WITH CHECK OPTION 可以防⽌⽤户对 不属于试图范围的操作 进⾏拒绝。

(3)删除视图:

3423

(4)查询视图:

34534543

(5)更新视图:

视图是不存在的,所以我们对视图的操作,最终要反映到对基本表的操作。
345345

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值