PostgreSQL修炼之道:从小工到专家. 3.2 DDL语句

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介:

3.2 DDL语句

DDL语句是创建、修改和删除表的语句,想要掌握SQL语言,必须对它有一定的了解。

3.2.1 建表语句

表是关系型数据库中最基本的对象,数据库中的表与实际生活中的二维表格很相似,有很多列也有很多行,每一列有一个名称,不同的列有不同的数据类型,比如,列可能是数字、文本字符串,也可能是日期类型。建表语句的一个简单语法如下:

CREATE TABLE table_name (

col01_namme data_type,       

col02_namme data_type,

col03_namme data_type,

col04_namme data_type,

};

其中“CREATE”、“TABLE”为关键字,是不变的,从字面上也很好理解,表示创建表。“table_name”表示表名,“col01_name”、 “col02_name”、 “col03_name”、 “col04_name”分别表示列名。“data_type”表示数据类型,不同的数据库系统有不同的数据类型名称,即使是相同意思的整数类型,在不同的数据库系统中也有不同的类型名称。变长的字符串在大多数数据库中都可使用 “varchar”类型,比如PostgreSQL、MySQL和Oracle数据库等。整形数据在PostgreSQL和MySQL都可以使用“int”类型。日期类型的名称一般为“date”。例如,要创建一张分数表score,包括“学生名称(student_name)”、“语文成绩(chinese_score)”、“数学成绩(math_score)”、“考试日期(test_date)”四列,则创建这个表的SQL如下:

CREATE TABLE score (

student_name varchar(40),

chinese_score int,

math_score int,

test_date date

);

如果按前面的安装步骤安装完了数据库,之后就可以使用psql工具连接到PostgreSQL数据库了,执行上面的建表语句,如下:

osdba=# CREATE TABLE score (

osdba(# student_name varchar(40),

osdba(# chinese_score int,

osdba(# math_score int,

osdba(# test_date date

osdba(# );

CREATE TABLE

osdba=#

在psql中,可使用\d显示数据库中有哪些表,如下:

osdba=# \d

       List of relations

 Schema | Name  | Type  | Owner

--------+-------+-------+-------

 public | score | table | osdba

(1 row)

这样就看到了我们建的表。

使用“\d score”可以显示这张表的定义情况:

osdba=# \d score

               Table "public.score"

    Column     |         Type          | Modifiers

---------------+-----------------------+-----------

 student_name  | character varying(40) |

 chinese_score | integer               |

 math_score    | integer               |

 test_date     | date                  |

显示列的类型“character varying(40)”实际上与“varchar(40)”的意思是完全一样的,“int”与“integer”的意思也是一样的。

在建表的时候,可以指定表的主键,主键是表中行的唯一标识,这个唯一标识是不能重复的。在创建表的语句中,可以在列定义后面用“primary key”来指定这一列为主键,如下面的学生表:

CREATE TABLE student(no int primary key, student_name varchar(40), age int);

在该表中,学号(no)为主键,则在该列的定义后面加了“primary key”。在psql中演示如下:

osdba=# CREATE TABLE student(no int primary key, student_name varchar(40), age int);

NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "student_pkey" for table "student"

CREATE TABLE

细心的读者会注意到“NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "student_pkey" for table "student"”这句提醒,它表示系统为主键自动创建了一个隐含的索引“student_pkey”。

3.2.2 删除表语句

删除表的语法比较简单,如下:

DROP TABLE table_name;

其中“table_name”表示要删除的表名。假设要删除前面创建的表student,则可以使用下面的SQL:

DROP TABLE student;

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
8月前
|
SQL 关系型数据库 测试技术
PolarDB的Online DDL功能验证实验
本场景带您体验如何在PolarDB-X中进行Online DDL。
959 0
|
8月前
|
SQL 关系型数据库 分布式数据库
PolarDB在尝试同步DDL任务时出现了问题
PolarDB在尝试同步DDL任务时出现了问题
73 1
|
8月前
|
SQL 关系型数据库 测试技术
如何在PolarDB-X中进行Online DDL
《PolarDB-X 动手实践》系列第五期,本场景带您体验如何在PolarDB-X中进行Online DDL。
495 0
|
11月前
|
SQL 关系型数据库 MySQL
深度解析PolarDB DDL锁的优化和演进
DDL是数据库所有SQL操作中最繁重的一种,本文总结介绍了云原生数据库PolarDB中DDL全链路MDL锁治理的经验和进展,持续优化用户的使用体验,为用户打造最佳的云原生数据库。
|
12月前
|
SQL 缓存 Java
开源分布式数据库PolarDB-X源码解读——PolarDB-X源码解读(九):DDL的一生(上)
开源分布式数据库PolarDB-X源码解读——PolarDB-X源码解读(九):DDL的一生(上)
236 0
|
12月前
|
SQL 运维 关系型数据库
开源分布式数据库PolarDB-X源码解读——PolarDB-X源码解读(十):DDL的一生(下)
开源分布式数据库PolarDB-X源码解读——PolarDB-X源码解读(十):DDL的一生(下)
176 0
|
SQL 关系型数据库 MySQL
实践教程之如何在PolarDB-X中进行Online DDL
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
实践教程之如何在PolarDB-X中进行Online DDL
|
SQL 关系型数据库 RDS
为什么同样的Sql语句在SqlServer RDS 查询得到的和自己本机SqlServer 查询的不一样呢?
为什么同样的Sql语句在SqlServer RDS 查询得到的和自己本机SqlServer 查询的不一样呢?
133 0
为什么同样的Sql语句在SqlServer RDS 查询得到的和自己本机SqlServer 查询的不一样呢?
|
SQL 运维 关系型数据库
PolarDB-X源码解读:DDL的一生(下)
在《DDL的一生(上)》中,我们以添加全局二级索引为例,从DDL开发者的视角介绍了如何在DDL引擎框架下实现一个逻辑DDL。在本篇,作者将从DDL引擎的视角出发,向读者介绍DDL引擎的架构、实现,以及DDL引擎与DDL Job的交互逻辑。
PolarDB-X源码解读:DDL的一生(下)
|
SQL 关系型数据库 开发者
本地执行 RDS SQL 语句| 学习笔记
快速学习本地执行 RDS SQL 语句
140 0
本地执行 RDS SQL 语句| 学习笔记