大白糖奶兔的Blog
大白糖奶兔的Blog
数据库第三章-SQL增删改

概述

SQL语言

关系代数的各种操作可以用三种方式实现:
- 关系代数
- 关系语言
- SQL语言

SQL(Structured Query Language)

结构化查询语言,是关系数据库的标准语言

特点

  1. 综合统一(DDL、DQL、DML、DCL)
    集合了四种子语言
    DDL(Data Define Language)数据定义语言
    DQL(Data Query Language)数据查询语言
    DML(Data Manipulation Language)数据操纵语言
    DCL(Data Control Language)数据控制语言
  2. 高度非过程化
    过程化(既要说清做什么,又要说清怎么做):
    例如要排序,要说明排序方式
    非过程化(要说清做什么,不用说怎么做):
    例如插入,要说清插什么数据就好,不需要在意怎么插入
  3. 面向集合的操作方式
    一次一集合(无论是操作对象还是操作结果,都是集合)这种操作方式就是集合的操作方式
  4. 以同一种语法结构提供多种使用方式
    可以嵌套在任何宿主语言(如C++,Java的JDBC,Python的Pymysql等)
  5. 语言简洁、易学易用
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_71e332cfe0dcfc1467fa3664286e622b.jpg

学生-课程表

表结构

https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_6d035b23d32537514c4864f82874db6b.jpg
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_62cbdfd67bc374d267e76658fefafd70.jpg
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_158516380306c900fb63520498b0d65e.jpg
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_a98737c82a621151b43f77c4b00824e0.jpg

Student和Course是实体性的表SC表叫联系表
一个学生实体可以对应多个课程实体

数据定义

https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_5bf900e7cef39bab1fcb35f79225fdd4.jpg

一个模式中可包含若干表、视图、索引
模式是一种容器,可以按照某种用途、方式把表、视图、索引等对象分别放到不同的容器里,模式本身不存储数据,只是一种组织方式,是一种容器。(类似文件夹)

模式定义

创建模式

[例1]定义一个学生-课程模式S-T

create schema "S-T" authorization wang;

为用户wang定义了一个模式S-T
- Oracle中一个用户只能对应一个模式(用户名和模式名一样)
- SQLserver支持一个用户多个模式,但是一个模式只能对应一个用户
- 模式名单引号双引号都可以

[例2]create schema authorization wang;

如果没有指定模式名,模式名隐含为用户名

删除模式

drop schema <模式名> <cascade|restrict>
  • cascade 级联
    删除模式的同时把该模式中的所有数据库对象全部删除
  • restrict 限制
    如果该模式中定义了下属的数据库对象(表,视图等),则拒绝删除语句的执行
    当该模式中没有热河下属对象时,才执行
drop schema zhang cascade;

基本表的定义、删除与修改

基本表也叫表、基表、关系、二维表

一、定义基本表

create table <表名>
(<列名><数据类型>[<列级完整性约束条件>],
<列名><数据类型>[<列级完整性约束条件>,
...
[,<表级完整性约束条件>])
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_a1724ce78e0b158e0cab488fc5124123.jpg

建立“学生”表Student,学号是主码,姓名取值唯一

**
关键字、用户、密码 、字bai段名 、表名、序列名du 、触发器名等是不区分的,我们平时进zhi入都是大小写随便输入的表名,字段名,关键字大小写忽略表名,字段名不能使用关键字,表名,字段名不可以使用数字开头,中间不能出现特殊符号表名,字段名长度不能超过30个字符表名,字段名定义需要有含义。
**

create table student
(sno char(9) primary key,
 sname char(20) unique,
 ssex char(2) check(ssex='男' or ssex='女'),
 sage smallint not null,
 sdept char(20)
);
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_06fb920155420a933cf28447eb9194a5.jpg

建立“课程”表Course

表级完整性约束

create table course(
cno char(4) primary key,
cname char(40),
cpno char(4),
ccredit smallint,
foreign key (cpno) references course(cno)
);

或者外键约束写成列级完整性约束
``sql
create table course(
cno char(4) primary key,
cname char(40),
cpno char(4) foreign key references course(cno),
ccredit smallint
);

或者
```sql
create table course(
cno char(4) primary key,
cname char(40),
cpno char(4) references course(cno),
ccredit smallint
);

建立“学生选课”表SC

create table sc(
sno char(9),
cno char(4),
grade smallint,
primary key (sno,cno),
foreign key (sno) references student(sno),
foreign key (cno) references course(cno)
);

因为主键是两个字段组合,所以写成表级完整性

五种完整性约束

  • 主键约束
  • 唯一约束
  • 非空约束
  • check约束
  • 外键约束

插入元组

语句格式

insert into <表名> [(<属性列1>,<属性列2>...)]
values (<常亮1>[,<常量2>...])

将新元组插入指定表中

https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_7297683f2d3e01f487046db58dafdfe8.jpg
insert into student (sno,sname,ssex,sdept,sage)
values ('201215128','陈东','男','IS',18);
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_22a98aa43fc6c8719dc3128ad8d147c5.jpg
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_3a88718c780dc68632e29c843fc46d0b.jpg

数据类型

https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_8d8336dc3209bfaf7891ce6bb113cabc.jpg
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_53a011905f3cb0340f3b3188fe42723f.jpg

数据更新

修改基本表

alter table<表名>
[add [column] <新列名> <数据类型> <完整性约束>]] # 新增列(属性)
[add <表级完整性约束>] #增加完整性约束(五个之一)
[drop [column] <列名> <cascade|restrict>] # 删除一列
[drop constraint <完整性约束名> [cascade|restrict]] #删除一列的完整性约束
[alter column <列名> <数据类型>];

案例

https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_243b34d05d24d94dc28ca7ca1279cf76.jpg
alter table student add s_entrance datetime;
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_30da5d01e070b766ee53f87a4b8844aa.jpg
alter table student alter column sage int;
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_87d5b812d04f92b1b493a93537ad5165.jpg
alter table course
add unique(cname);

查勘表定义:

sp_help 表名(SQLSrver);

删除基本表

drop table <表名> [restrct|cascade];
  • cascade:欲删除的基本表不能被其他表的约束所引用(外键约束)
    如果存在依赖该表的对象(视图或索引),则此表也不能被删除
  • cascade:删除该表没有限制,在删除表的同时,相关的依赖对象一起删除

案例

https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_2a5695b92648764b9fbcf6f48f4b306f.jpg
drop table student cascade;
  • 基本表定义被删除,数据被删除
  • 表上建立的索引、视图、触发器等一般也将被删除

作业:

https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_d763ee444e2d2e10426010cf35f0371d.jpg
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_66a7d212eebebca266134153b12b861c.jpg
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_891b84e671506c4b94c0560dea6e775b.jpg
https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_2d669f814f7d52b15ca1a4b1943e8163.jpg

小结

https://yczbest.cn/wp-content/uploads/2020/08/wp_editor_md_4c4280e92638101755fa76e06a5b055f.jpg

发表评论

textsms
account_circle
email

大白糖奶兔的Blog

数据库第三章-SQL增删改
概述 SQL语言 关系代数的各种操作可以用三种方式实现: - 关系代数 - 关系语言 - SQL语言 SQL(Structured Query Language) 结构化查询语言,是关系数据库的标准语言 特点 综合统…
扫描二维码继续阅读
2020-08-07
Title - Artist
0:00