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

    xiaoxiao2024-04-05  117

    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;

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)