Lecture 7. Creating Tables and Inserting Data in PostgreSQL 创建表和插入数据
数字类型(本课程中常用)
integer
,四字节整数smallint
,二字节整数numeric
,精确的浮点数。小数点前可以有 131072 位,小数点后可以有 16383 位。real
,四字节浮点数(单精度)double precision
,八字节浮点数(双精度)serial
,四字节自增量,从 1 到 2147483647,完全由 PostgreSQL 控制。使用insert
语句的时候,无需指定类型为serial
的属性的值,PostgreSQL 会自动分配。
字符串类型
需要用单引号括起来
varchar(n)
,不定长字符串,最大长度 nchar(n)
定长字符串text
无限长度,可以用于存储博客文章内容等数据
并不是所有的字符串全都用 text
就是最好的。比如,对于姓名等数据,我可以要求限长 20,这样就可以让数据库自动检测出哪些 INSERT
之类的输入了非常长的不合法的假名字。同时,限长或定长的字符串,还可以用来辅助估计这个数据库的字节大小。
constraint
语句
DDL 语言中,只要是 Create Table
指令,就一定要有 constraint
语句出现。
示例:
CREATE TABLE mymoviews (
moviename varchar (200) NOT NULL,
movieminutes integer NOT NULL,
movierating real NOT NULL,
movieguide varchar (20) NOT NULL,
CONSTRAINT mymoviews_pkey PRIMARY KEY (moviename)
)
可以看到,constraint
的语法格式大概是:constraint <table name>_pkey PRIMARY KEY(column name)
。其中,主键的表示格式是表名直接接上 _pkey
。
INSERT
的用法
大概作用是,插入一行数的据。不是插入新的列。
注意,这里的顺序最好和 create 的时候一致。
示例:
INSERT INTO mymovies
(moviename,movieminutes,movierating,movie guide)
values (Interstellar',169,8.7,'PG 13');
插入完所有的行之后,可以通过 select *
或者右键选择「view all rows」查看整张表的数据,
若插入新行的时候,如果指令出现了之前有过的 primary key,则插入语句不生效。
Drop table
命令
drop table
属于 DML,可以把整张表的数据删除。删除之后就可以重新 create 一个名字一模一样的表。
注意,一旦执行了 drop table
,是无法撤销的。
通常,drop table
通常与 if exists <tableName>
结合使用,如:
如果不使用 if exists
,并在不存在这个表的时候尝试 drop,可能会导致抛出异常的情况发生。