数据库系统基础速成—SQL代码查询语言篇

本文详细介绍了SQL语言的一些基本操作,包括数据类型定义、数据库表的创建、主键和外键的声明、数据的插入与删除、查询语句的使用如去重、排序、分组等,以及更新、权限管理等核心概念。这些内容构成了SQL语言的基础,适用于数据库管理和数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、基本数据类型

2、创建数据库关系(create)

3、主键声明(primary key)

4、外键声明(foreign key)

5、约束语句之不允许为空值约束(not null)

6、关系中添加(插入)数据(insert into)

7、删除所有元组(表中所有行的数据)(delete from)

8、删除一个关系(数据表)(drop table)

9、为已有关系增加属性(alter)

10、从关系中删除属性(alter)

11、查询语句之去重(默认不去重)(distinct)

12、查询语句之自然连接(natural join)

13、更名运算(as)

14、字符串运算之 %

15、字符串运算之__

16、字符串运算之escape

17、字符串运算之like比较运算

18、查询语句之排列顺序(order by)

19、where子句之between

20、集合运算交并差

21、聚集函数之平均值(avg)

22、聚集函数之最大值(max)

23、聚集函数之最小值(min)

24、聚集函数之总和(sum)

25、聚集函数之计数(count)

26、聚集函数之分组(group by)

27、聚集函数之having语句

28、查询语句之where嵌套

29、where子句之“至少比某一个”(some)

30、where子句之“比所有都”(all)

31、空关系测试(exists)

32、是否存在重复子查询(unique)

33、lateral语句

34、with语句

35、删除满足条件的属性或元组

36、更新语句(update…set)

37、左外连接(left outer)

38、右外连接(right outer)

39、全外连接(full outer)

40、内连接(inner)

41、视图创建(view)

42、约束语句之check

43、约束之默认值设置(default)

44、授予权限语句(grant)

45、收回权限语句(remoke)


注:本文仅写了一些常用的SQL代码,一些不常用的并未列出。其次为了使代码框中的文字更加清晰,代码框中的文字并没有使用注释符进行注释。

1、基本数据类型

char(n):固定长度为n的字符串;

varchar(n):可变长度的字符串,最大为n;

int:整数类型;

smallint:小整数类型;

numeric(m,n):定点数,共m位,有n位处于小数点右边;
例如 numeric(3,1),符合条件的数据:31.4

float(n):精度为n的浮点数

real,double precision:浮点数与双精度浮点数

2、创建数据库关系(create)

这里以创建一个学生关系为例使用
    create table 关系名();
进行创建,()里面包含:属性+数据类型

create table Student
(
	Sno char(5),
	Sname varchar(20),
	Sage smallint,
	Ssex char(2),
	Sdept char(2));

3、主键声明(primary key)

使用
    primary key(属性)
进行主键声明

例如,对以下创建声明Sno为Student的主键

create table Student
(
	Sno char(5),
	Sname varchar(20),
	Sage smallint,
	Ssex char(2),
	Sdept char(2)),
    primary key(Sno));

4、外键声明(foreign key)

声明外键的代码为:
                foreign key 属性 references 关系(属性);

声明外键关系表示,两个属性的取值必须对应。
具体声明代码如下示例

create table Student
(
	Sno char(5) ,
	Sname char(20),
	Sage smallint,
	Ssex char(2),
	Sdept char(2),
	primary key(Sno));   --主键可以在最后设置

create table Course
(
	Cno char(2) primary key,  --主键也可以采用这种方法
	Cname char(20),
	Cpno char(2),
	Ccredit smallint,

create table SC
 (
	 Sno char(5), 
	 Cno char(2),  
	 Grade smallint,
	 foreign key (Sno) references  Student(Sno), 
这里声明了SC关系中的Sno作为外键,
被参考对象为Student关系中的Sno属性,
其中Student(Sno)也可写成Student

	 foreign key (Cno) references  Course);
这里声明了SC关系中的Cno作为外键,
被参考对象为Course关系中的Cno属性,
两个关系中都有Cno,可省略括号

5、约束语句之不允许为空值约束(not null)

不为空约束通常就在创建关系,定义属性的同时进行约束
采用 not null,示例如下

create table student
(
	st_id varchar(9) not null,
	st_nm varchar(8) not null,
	st_sex varchar(2),
	st_birth varchar(4),
	primary key(st_id));

6、关系中添加(插入)数据(insert into)

在关系中添加一个元组采用
insert into 关系名 values(属性对应的值)
具体示例如下

create table Student
(
	Sno char(5) ,
	Sname char(20),
	Sage smallint check(Sage>=15 and Sage<=45),
	Ssex char(2),
	Sdept char(2),
	primary key(Sno));

insert into Student values('17001','钱横',18,'男','CS');
insert into Student values('17002','王林',19,'女','CS');
insert into Student values('17003','李民',20,'男','IS');
insert into Student values('17004','赵三',16,'女','MA');

这里添加了四条student关系表的元组信息

7、删除所有元组(表中所有行的数据)(delete from)

如果要删除一个关系表中的所有信息,则可以采用delete语句

delete from student;

表示删除student关系表中的所有信息,
但会保留关系student,
即还可以往里面添加信息。

8、删除一个关系(数据表)(drop table)

如果要删除整个关系表里的所有信息以及对应关系表本身
则采用drop语句,例如

drop table student;

9、为已有关系增加属性(alter)

为一个关系表添加属性:

alter table 关系表名 add 属性 对应的域

具体示例如下

create table Student
(
	Sno char(5) ,
	Sname char(20),
	Sage smallint,
	Sdept char(2),
	primary key(Sno));   --主键可以在最后设置

我们要为student关系添加一个Ssex属性为char(2)类型

alter table student add Ssex char(2);

10、从关系中删除属性(alter)

为一个关系表删除属性:

alter table 关系表名 drop 属性

具体示例如下

create table Student
(
	Sno char(5) ,
	Sname char(20),
	Sage smallint,
	Sdept char(2),
	primary key(Sno));   --主键可以在最后设置

我们要删除student关系中的Sage属性

alter table student drop Sage;

要注意,对于删除属性这个操作,
在很多数据库系统里面是不支持的

11、查询语句之去重(默认不去重)(distinct)

最简单的查询语句

select 需要查询的属性名
from 关系表名

有时候我们想要强行删除重复的项,
则在select后面加上distinct去重,例如

select distinct name
from student

表示查询student关系下,name属性集,且去除重复项

12、查询语句之自然连接(natural join)

有时候,我们需要根据某些属性,
将两个表联系起来进行查询,例如以下

select name,course_id
from instructer,teacher
where instructer.id = teacher.id;

则该查询可以用更简洁的自然连接表示

select name,course_id
from instructer natural join teacher;

以此类推,也可以进行多个表的自然连接

select name,title
from stud
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lion丶Dream

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

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

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

打赏作者

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

抵扣说明:

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

余额充值