SQL笔记(一)SQL数据定义

相关材料在相关材料下载
参考书:《数据库系统概念》第六版

注:本文只涉及初级SQL

SQL 基本类型

  • char(n) : 固定长度字符串,用户指定长度n。也可使用全称character
  • varchar(n): 可变长度字符串,用户指定最大长度n ,等价于全称character varying
  • int: 整数类型(和机器相关的整数的有限子集),等价于全称integer
  • smallint: 小整数类型(和机器相关的整数的有限子集)。
  • numeric(p,d): 定点数,精度由用户指定。这个数有p 位数字(加上一个符号位),其中d 位数字在小数点右边。所以在一个这种类型的字段上,numeric(3,1) 可以精确存储44.5 ,但不能精确存储444.50.32这样的数。
  • real, double, precision: 浮点数与双精度浮点数,精度与机器有关。
  • float(n):精度至少为n位的浮点数。
    • 每种类型都可以包含一个被称为空值得特殊值。
    • char 存放固定长度的字符串,例如一个char(10) 类型存入字符串‘Avi’,字符串后会追加7个空格来使其达到10个字符的串长度。varchar 则不会。
    • 比较两个char类型,如果长度不一致,在比较前会在短值后加空格,使之长度一致。
    • 比较varcharchar 可能不会自动补空格。导致比较结果不符合预期。
      建议始终使用varchar 类型,而不是char类型。
      SQL提供nvarchar 类型存放使用Unicode表示多种语言数据,很多数据库甚至允许在varchar类型中存放Unicode (UTF-8)。
      更多类型

基本模式定义

如果没有明确说明 r 表示一个关系的名字 A 表示一个属性的名字 D 表示属性的域

1. 定义SQL关系

使用`create table` 定义关系。例如,
create table department
    (dept_name      varchar(20), 
     building   varchar(15), 
     budget     numeric(12,2) check (budget > 0),
     primary key (dept_name)
    );

create table 命令的通用模式:


create table r
(A1  D1 ,
A2  D2 ,
… ,
An  Dn ,
<完整性约束1>,

<完整性约束n>,

);



其中 r 是关系名
每个 A i 是关系 r 模式中的一个属性名
D i 是属性A i 的域(约束)
SQL的部分完整性约束如下:

  • primary key(Aj1, Aj2, … , Ajn):
    primary key 声明表示属性Aj1, Aj2, … , Ajn 构成了关系的主码。
    主码属性必须非空并且唯一
  • foreign key(Aj1, Aj2, … , Ajn) references :该声明表示关系中任意元组在属性Aj1, Aj2, … , Ajn上的取值必须对应于关系s中某元组在主码属性上的取值。
  • not null :该属性不允许为空值。
  • 更多约束

SQL禁止破坏完整性约束的任何数据库更新。

2. 插入数据

定义一个关系:

create table instructor
    (ID         varchar(5), 
     name           varchar(20) not null, 
     dept_name      varchar(20), 
     salary         numeric(8,2) check (salary > 29000),
     primary key (ID),
     foreign key (dept_name) references department
        on delete set null
    );

完整定义在相关资料中的DDL.sql

向关系instructor中插入一条数据:

insert into instructor
values
(10211, 'Smith', 'Biology', 66000);

3. 删除元组

保留关系,删除元组。

delete from r;

4. 删除关系

删除 r 的所有元组和 r 的模式

drop table r;

5. 增加、删除属性

alter table 为已有关系添加属性,关系中所有的元组在新属性的取值上将被设置为null

增加 属性
alter table r add A D;
删除属性

有些数据库不支持该操作。

alter tabel r drop A;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coding-cat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值