购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

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)”4列,创建该表的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语句: KMfvdr3ep5Up9k6uSyRZa9Dqlqhekemws2aKsq+5IF5eY9CIYUeQHeVIMCdc3PcS


DROP TABLE student;

点击中间区域
呼出菜单
上一章
目录
下一章
×