命令 | 作用 |
psql -U username -d dbname -h 127.0.0.1 例子: /Library/PostgreSQL/9.4/bin/psql -U postgres
/Library/PostgreSQL/9.4/bin/psql -U postgres -d testdb | 登录/连接数据库 |
\l | 显示数据库 |
\c dbname; \d 显示表 \d 表 显示表字段 例子: postgres=# \c testdb You are now connected to database "testdb" as user "postgres". testdb=# \d List of relations Schema | Name | Type | Owner --------+------------+-------+---------- public | company | table | postgres public | department | table | postgres (2 rows)
testdb=# \d company; Table "public.company" Column | Type | Modifiers ---------+---------------+----------- id | integer | not null name | text | not null age | integer | not null address | character(50) | salary | real | Indexes: "company_pkey" PRIMARY KEY, btree (id) | 连接数据库 |
创建表:CREATE TABLE test(id int , text VARCHAR (50)); INSERT INTO test(id, text) VALUES (1, 'sdfsfsfsdfsdfdf' ); SELECT * FROM test WHERE id = 1; UPDATE test SET text = 'aaaaaaaaaaaaa' WHERE id = 1; DELETE FROM test WHERE id = 1; DROP TABLE test; DROP DATABASE dbname; | 简单例子 |
select pg_size_pretty(pg_total_relation_size('company')); | 指定表大小 |
select pg_size_pretty(pg_database_size('testdb')); | 指定数据库大小 |
select pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size from pg_database; | 查看所有数据库大小 |
--方法一
create table test_a
(
id serial,
name character varying(128),
constraint pk_test_a_id primary key( id)
);
NOTICE: CREATE TABLE will create implicit sequence "test_a_id_seq" for serial column "test_a.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "pk_test_a_id" for table "test_a"
CREATE TABLE
--方法二
create table test_b
(
id serial PRIMARY KEY,
name character varying(128)
);
NOTICE: CREATE TABLE will create implicit sequence "test_b_id_seq" for serial column "test_b.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_b_pkey" for table "test_b"
CREATE TABLE
--方法三
create table test_c
(
id integer PRIMARY KEY,
name character varying(128)
);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_c_pkey" for table "test_c"
CREATE TABLE
CREATE SEQUENCE test_c_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
alter table test_c alter column id set default nextval('test_c_id_seq');
很明显从上面可以看出,方法一和方法二只是写法不同,实质上主键都通过使用 serial 类型来实现的,
使用serial类型,PG会自动创建一个序列给主键用,当插入表数据时如果不指定ID,则ID会默认使用序列的
NEXT值。
方法三是先创建一张表,再创建一个序列,然后将表主键ID的默认值设置成这个序列的NEXT值。这种写法
似乎更符合人们的思维习惯,也便于管理,如果系统遇到sequence 性能问题时,便于调整 sequence 属性;
--比较三个表的表结构
三个表表结构一模一样, 三种方法如果要寻找差别,可能仅有以下一点,