说明:文章中实例均在 PostgreSQL 环境操作。
DDL数据定义语言
数据库/角色/schema
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| create role "sp-boss" createdb createrole login password 'sp-boss';
psql -U sp-boss -d postgres
create database "sp-boss"
psql -U sp-boss
create role "sp-manager" login password 'sp-manager';
grant create on database "sp-boss" to "sp-manager";
psql -U sp-manager -d sp-boss
create schema "sp-manager";
|
表
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| create table user_info ( id serial primary key, name varchar(20), age integer, create_time timestamp, type integer, display boolean default true, unique (name, type) );
drop table exists user_info;
alter table user_info rename to user_infos;
|
字段(列)
1 2 3 4 5 6 7 8 9
| alter table user_info add [column] username varchar(50);
alter table user_info drop [column] username;
alter table user_info rename [column] username to name;
alter table user_info alter [column] username set not null;
|
唯一约束
1 2 3 4 5
| alter table sys_theme add constraint uk_name unique(column1,column2);
alter table sys_theme drop constraint uk_name;
|
DML数据库操作语言
SELECT
查询包含json格式的text类型的数据
1 2 3 4 5 6 7 8 9 10 11 12
| postgres=# select * from person; id | name | other
1 | faker | {"gender":"male","address":"xiamen","college":"xmut"} 2 | watson | {"gender":"male","address":"shenzhen","college":"szu"} 3 | lance | {"gender":"male","address":"shenzhen","college":"xmut"} 4 | jine | {"gender":"female","address":"xiamen","college":"xmut"} 5 | jobs | {"gender":"male","address":"beijing","college":"xmu"} 6 | yak | {"gender":"female","address":"xiamen","college":"xmut"} 7 | alice | {"gender":"female","address":"shanghai","college":"thu"} 8 | anita | {"gender":"female","address":"xiongan","college":"hku"} (8 行记录)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| select other::json->>'college' college, count(1) from person where other::json->>'address'='shenzhen' group by other::json->>'college'; ___________________________ college | count szu | 1 xmut | 1 (1 行记录)
|