增删改查
$ sudo apt-get install postgresql # 安装
$ sudo su postgres # 切换用户到 postgres,系统管理员
$ psql -l # 显示所有数据库
$ createdb komablog # 系统命令,建立数据库
$ dropdb komablog # 系统命令,删除数据库
$ psql komablog # 切换到数据库
> \l # 列表
> \q # 退出
> select now(); # 数据库时间,版本 version()
> create table posts (title varchar(255), content text); # 创建表
> alter table posts rename to komaposts; # 改名
> drop table komaposts; # 删除表
> \dt # 当前数据库的所有表
> \dv # 当前数据库的所有视图
> \d posts # 指定表的所有字段
> \i db.sql # 导入 sql 文件,内容 sql 命令如 create table posts...
-- 建表约束
create table users (
id serial primary key, -- primary key 相当于 not null 和 unique,即主键
player varchar(255) not null, score real, team varchar(255),
content text check(length(content) > 8), -- check 字段条件
created_date timestamp default 'now' -- default 字段默认值
);
insert into users (player, score, team) values ('库里', 28.3, '勇士'), ('哈登', 30.2, '火箭');
select * from users; -- /x 切换横向纵向显示
select player, score from users where score > 20 and score < 30 and team != '勇士';
select * from users where player like '_阿%'; -- _ 为 1 个字符,% 为 1 个或多个字符
-- order by 按某字段排序(默认正序)
-- limit 取前排结果
-- offset 跳过前排结果
select * from users order by team, score desc limit 3 offset 4;
-- 过滤重复数据
select distinct team from users;
-- 和
select sum(score) from users;
-- 最大最小
select * from users where score = (select max(score) from users);
-- having 相当于 where
select team, max(score) from users group by team having max(score) >= 25 order by max(score);
-- 字符串长度 length()
-- 连接 concat()
-- 截取 substring()
-- 随机排序 random(),as 为别名
select player, length(player), concat(player, '/', team) as '球员信息', substring(team, 1, 1) as '球队首文字' from users order by random() limit 1;
update users set score = score + 100 where team in ('勇士', '骑士');
-- 物理删除
delete from users where score > 30;
-- 外联
select u.player, t.content from users as u, twitters as t where u.id = t.user_id and u.id = 1;
字段 索引 视图 事务
alter table users add fullname varchar(255); -- 添加字段
alter table users drop fullname; -- 删除字段
alter table users rename player to nba_player; -- 段名改名,rename to 为表改名
alter table users alter nba_player type varchar(100); -- 字段改类型
create index nba_player_index on users(nba_player); -- 添加索引
drop index nba_player_index; -- 删除索引
create view curry_twitters as select u.player, t.content from users as u, twitters as t where u.id = t.user_id and u.id = 1; -- 添加视图,create view as 后为 select 语句
select * from curry_twitters; -- 显示视图
drop view curry_twitters; -- 删除视图
begin; /* 增删改查操作 */ commit; -- 事物执行
begin; /* 增删改查操作 */ rollback; -- 事物回滚
网友评论