基础语法
数据库管理操作
连接到数据库,在命令行输入:
psql -U postgres
后再输入密码创建数据库:
create database mydb;
修改数据库名称:
alter database mydb to mydb1;
删除数据库:
drop database mydb;
查看所有数据库:
\l
切换到指定数据库:
\c mydb
创建表:
sqlCREATE TABLE stu ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(100), age INTEGER );
修改字段名:
alter table stu rename id to myid;
把stu
表中字段id
改为myid
删除字段:
alter table stu drop column name;
删除stu
表中name
的字段添加字段:
alter table stu add column name varchar(20);
添加stu
表中name
的字段修改字段类型:
alter table stu alter column name type varchar(40);
删除表:
drop table stu;
查看当前数据库中的所有表:
\d
查看表结构:
\d 表名
插入数据:
insert into stu(name) values('xiaoming');
插入整条完整的数据:
insert into stu values (1,'xiaogang','2022-10-10',NULL);
指定字段插入数据:
insert into stu (id,name) values('2','xiaohong');
SELECT
批量插入- 将表数据插入到新表中:
insert into test select * from stu;
把表stu
的数据插入到test
表中 - 指定字段批量插入:
insert into test (id,name) select id, name from stu;
- 将表数据插入到新表中:
更新/修改数据:
update stu set name='xiaohong' where id=1;
删除数据:
delete from stu where id=1;
删除
id
在1到3之间的表数据:delete from stu where id between 1 and 3;
清空数据表:
delete from stu;
表还在,只是没有数据了查询表:查询所有字段:
select * from stu;
指定字段查询:
select id, name from stu;
In
关键字查询:查询id
为1,3,5的成员:select id, name from stu where id in (1,3,5);
between and
关键字查询,范围之间:select id, name from stu where birthday between '2020-10-10' and '2024-10-10';
模糊查询:查询所有姓张的用户:
select id, name from test where name like '张%';
数据类型
数值数据类型:常用
int
字符串数据类型:常用
char(size
,varchar(size)
日期/时间数据类型:常用
timestamp
:日期和时间:2023-09-25 10:45:30
data
:日期:2023-09-25
time
:时间:10:45:30
相关函数
数值函数
函数 | 描述 |
---|---|
avg() | 返回某列的平均值 |
count() | 返回某列的行数 |
max() | 返回某列的最大值 |
min() | 返回某列的最小值 |
sum() | 返回某列的值之和 |
调用方式:select 函数(字段名)from 表名;
字符串函数
函数 | 描述 |
---|---|
length(s) | 计算字符串长度 |
concat(s1,s2) | 字符串合并 |
调用方式:select 函数(字段名)from 表名;
日期时间函数
函数 | 描述 |
---|---|
now() | 获取当前日期时间函数 |
current_date | 获取当前日期函数 |
current_ time | 获取当前时间函数 |
extract(type from d) | 获取日期指定值函数 |
函数部分具体可以参考Mysql
笔记中的函数部分
PostgreSQL
模式(Schema
)
使用Schema
可以使多个用户使用一个数据库而不互相干扰,我们登陆默认是在public
这个模式下,是数据库对象的一个集合
Schema
模式的好处:
- 允许多个用户使用一个数据库而不会干扰其它用户
- 把数据库对象组织成逻辑组,让它们更便于管理
- 第三方的应用可以放在不同的模式中,这样它们就不会和其它对象的名字冲突
表空间是实际的数据存储的地方,一个数据库schema
可能存在于多个表空间,相似地,一个表空间也可以为多个schema
服务。通过使用表空间,管理员可以控制磁盘的布局。表空间的最常用的作用是优化性能,例如,一个最常用的索引可以建立在非常快的硬盘上,而不太常用的表可以建立在便宜的硬盘上,比如用来存储用于进行归档文件的表
我们可以创建其他模式:create schema my123;
为所有模式创建一个表:create table test(id int, name varchar(20));
执行上述代码后,就多了一个模式my123
,同时所有模式下都有表test