数据库 - SQL语言(一)

本文详细介绍了SQL数据定义语言(DDL),包括数据类型、模式定义及修改,以及基本查询结构,如select、from和where子句。深入探讨了字符串运算、集合运算、聚集函数和嵌套子查询,还涵盖了数据库的插入、删除和更新操作。通过实例解析了SQL在实际应用中的使用方法。
摘要由CSDN通过智能技术生成

一,SQL数据定义

(Data Definition Language)
数据库中的关系集合必须由数据定义语言(DDL)指定给系统。
例:

CREATE TABLE instructor(
	ID char(5),
	name varchar(20) not null,
	dept_name varchar(20),
	primary key (ID));

参见:

super-key
candidate key
primary key

SQL的DDL不仅能够定义一组关系,还能够定义每个关系的信息,包括:

  • 每个关系模式
  • 每个属性的取值类型
  • 完整性约束
  • 每个关系维护的索引集合
  • 每个关系在磁盘上的物理存储结构

二,基本数据类型

(Domain Types in SQL)

  • char(n):固定长度为 n 的字符串
  • varchar(n):最大长度为 n 的,可变长度字符串
  • int:整数类型(和机器相关的整数类型的子集),等价于全程 integer
  • smallint:小整数类型(和机器相关的整数类型的子集)
  • numeric(p,d):定点数(这个数有 p 位,其中第 d 位数在小数点的右边)
  • real,double precision:浮点数与双精度浮点数,精度与机器其相关
  • float(n):精度至少为 n 位的浮点数
  • null:每种类型都可以包含一个特殊值,即空值。可以申明属性值不为空,禁止加入空值。
  • data:日期,含 年 月 日,如“1999-02-03”
  • time:时间,含 时 分 秒,如“12 : 28 : 15.07”’
  • timestamp:日期 + 时间,如“1999-02-03 12 : 28 : 15.07”

SQL中有许多函数,用于处理各种类型的数据及其类型转换,但各数据库中函数的标准化程度不同
在这里插入图片描述

三,基本模式定义

1,CREATE TABLE 命令

我们用 create table 命令定义SQL关系:
在这里插入图片描述
其中,r 是关系名,每个 Ai 是关系 r 模式中的一个属性名,Di 是属性 Ai 的域

SQL支持许多不同的完整性约束。

  • not null:一个属性上的 not null 约束表明在该属性上不许为空值
  • 主键 primary key(A1, … ,An):表明属性 A1, … ,An 构成关系的主码。主码属性必须非空且唯一。
  • 外码 foreign key(A1, … ,Am)references (s):声明表示关系中任意元组的属性上 A1, … ,Am 上的取值必须对应关系 s 中某元组的主码属性上的取值
  • check(P):P 是谓语条件

举例:声明 ID 为 instructor 的主码,并确保 salary 的值非负
方法一

CREATE TABLE instructor(
	ID char(5),
	name varchar(20) not null,
	salary numeric(8,2),
	primary key (ID),
	check (salary >= 0));

方法二

CREATE TABLE instructor(
	ID char(5) primary key,
	name varchar(20) not null,
	salary numeric(8,2),
	check (salary >= 0));

举例:关于 foreign key(A1, … ,Am)references (s)
定义外码(dept_name),参照关系s

create table student ( 
	ID varchar(5), 
	name varchar(20) not null, 
	dept_name varchar(20), 
	tot_cred numeric(3,0), 
	primary key (ID), 
	foreign key (dept_name) references department);
create table takes ( 
	ID varchar(5), 
	course_id varchar(8), 
	sec_id varchar(8), 
	semester varchar(6),
	year numeric(4,0), 
	grade varchar(2), 
	primary key (ID, course_id, sec_id, semester, year) , 
	foreign key (ID) references student, 
	foreign key (course_id, sec_id, semester, year) references section);

2,修改模式(Uptable Date Table)

drop table 命令

用于从数据库中删除关于被去掉关系的所有信息

  • drop table r

例:将 关系instructor “满门抄斩”

drop table instructor;
alter table 命令
  • alter table r add A D
    为已有关系(r),增加属性(A,域为 D)

关系中所有元组在新属性上取值被设定为 null
例:在 关系instructor 中加入 birthday属性(日期)

alter table instructor add birthday date
  • alter table r drop A
    从关系 r 中,去掉属性 A(但很多数据库系统不支持此操作)

例:从 关系instructor 中删除 birthday属性

alter table instructor drop birthday;
  • alter table r modify (A D);
    还可以用来修改关系中的属性

例:修改 instructor关系中的 ID属性

alter table instructor modify (ID char(10))

四,基本查询结构

(Basic Query Structure of SQL Queries)

1,SQL查询的基本结构

SQL查询的基本结构由3个子句构成:select,from,where
在这里插入图片描述

select 子句
  • 基本方法,找出指定内容
    例:找出所有教师的名字
select name
from instructor;

在这里插入图片描述
注意:SQL不允许在属性名称中使用 “–”,但可以使用“_”,例:dept_name
且SQL中是不区分字母大小写的!

SQL允许在关系以及SQL表达式中出现的重复的元组

  • 若要去除重复,可在select后加关键词distinct
    例:查询 instructor 中所有的系名,并去除重复
select distinct dept_name
from instructor;
  • 也可以使用关键词 all 来指明保留重复(SQL默认就是 all)
    例:只找出所有系名
select all dept_name
from instructor;
  • 星号 “ * ”,在 select子句中表示所有属性
    例:选出 instructor关系中的所有属性
select *
from instructor;
  • select子句还可以带有 + - * / 运算符的算术表达式,运算对象可以是常数或元组的属性
    例:将 instructor关系中的属性salary (x1.05倍)
select ID,name,salary*1.05</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值