数据库概述、增删改操作

36 阅读5分钟

概述

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. 语言简洁、易学易用

学生-课程表

表结构

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

数据定义


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

模式定义

创建模式

[例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 <表名>
(<列名><数据类型>[<列级完整性约束条件>],
<列名><数据类型>[<列级完整性约束条件>,
...
[,<表级完整性约束条件>])

建立“学生”表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)
);

建立“课程”表Course

表级完整性约束

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

或者外键约束写成列级完整性约束

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

或者

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>...])

将新元组插入指定表中

insert into student (sno,sname,ssex,sdept,sage)
values ('201215128','陈东','男','IS',18);

数据类型

数据更新

修改基本表

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

案例

alter table student add s_entrance datetime;

alter table student alter column sage int;

alter table course
add unique(cname);

查勘表定义:

sp_help 表名(SQLSrver);

删除基本表

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

案例

drop table student cascade;
  • 基本表定义被删除,数据被删除
  • 表上建立的索引、视图、触发器等一般也将被删除

作业:

小结

  1. 在SQL语言中域是用数据类型和长度实现的

  2. 确定列的数据类型和长度时,要考虑该列要做哪些运算。

  3. 定长字符串类型的优点是:操作效率高。缺点:可能浪费空间。

    变长字符串类型的优点是:操作效率低,缺点是:节省空间。

  4. 完整性约束条件