PG数据库操作

1 操作数据库对象

1.创建数据库对象:create database 数据库名;
create database db_test  #数据库名
    with ENCODING='utf-8'       #编码为utf-8
         OWNER=postgres         #所有者
         CONNECTION LIMIT=10;   #限制连接数为10

2.修改数据库对象(其中的一些参数):alter database ...
(1)alter database db_test    #修改数据库名称
        rename to db_test1;
(2)alter database db_test1   #修改数据库连接数限制
        with CONNECTION LIMIT = 100;
或 alter database db_test1 CONNECTION LIMIT 100;

3.删除数据库对象:drop database 数据库名;

2操作数据表对象

1.创建数据表对象:create table 表名 ...
create table student (
    id int,
    name varchar(30),
    birthday data,
    score numeric(5,2)
);

2.修改数据表对象:alter table 表名 ...
alter table student rename to student1; #修改表名。修改表名student为student1
alter table student1 rename id to bh;   #修改字段名。修改表student1的字段id为bh
alter table student1 alter column name type varchar(40);    #修改字段数据类型。修改name字段的数据类型为VARCHAR(40)
alter table student1 drop column birthday;          #删除字段。删除字段birthday,同时会删除对应的信息
alter table student1 add column address varchar(200);   #添加字段。添加address字段,类型为VARCHAR(200)              

3.删除数据表对象:drop table 表名 ...
drop table student1;    #删除数据表
drop table if exists student1;  #只有数据表存在时才执行删除操作

3简单数据插入

create table student(
    id int,
    name varchar(30),
    birthday date,
    score numeric(5,2)
);

向单表中插入数据:insert into 表名 values (值1,值2,...)    //值的顺序必须严格根据表的字段顺序
insert into student values (1, '张三', '1990-01-01', 3.85);   //如果某个值不知道的话,一定要用null来填

向数据表中指定字段插入数据:insert into 表名 (字段1, 字段2, ...) values (值1, 值2, ...)   //字段与值一一对应
insert into student (id, name, birthday) values (2, '李四', '1990-01-02');        //没插入的部分为null
insert into student (id,birthday , name) values (2, '1990-01-02', '李四' );       //字段和值的顺序随意,不过要一一对应

4批量插入数据

create table student(
    id int,
    name varchar(30),
    birthday date,
    score numeric(5,2)
);
使用insert语句批量向数据表中插入数据:insert into 表名 (属性名称) values (取值列表1), (取值列表2),...(取值列表n);
insert into student (id, name, birthday) values
(3, '张三1', '1990-02-01'),
(4, '张三2', '1990-02-02'),
(5, '张三3', '1990-02-03');

create table student_new(
    id int,
    name varchar(30),
    birthday date,
    score numeric(5,2)
);
使用select查询批量向数据表中插入数据:insert into 表名1 (属性名称) select (属性值) from 表名2 where (查询条件);
insert into student_new select * from student;  //将student表中所有字段的内容插入到student_new中
delete from student_new;            //删除表student_new中的内容
insert into student_new (id, name) select id, name from student;        //将表student中的id,name的内容插入到表student_new中

5数据更新

create table student(
    id int,
    name varchar(30),
    birthday date,
    score numeric(5,2)
);
指定条件更新数据:update 表名 set 要更新的字段名 = 要更新的字段内容 where 要更新的哪一条数据;
update student set name = '李四1' where id = 2;       //更新id=2的学生姓名为“李四1”

批量更新数据
update student set score = 0;           //将student表中的学生学分全更新为0

将指定结果更新到对应字段
update student set score = 1.1+2.3 where id = 2;        //更新的内容为指定的结果3.4

6 数据删除

create table student(
    id int,
    name varchar(30),
    birthday date,
    score numeric(5,2)
);
数据删除操作
delete from student where id = 4;       //删除id=4的记录
delete from student where birthday between '1990-01-01' and '1990-02-01';     //删除生日在1990-01-01到1990-02-01的记录
delete from student;        //清空表student

使用truncate清空数据表
truncate table student;     //清空表student

delete与truncate的区别
                             | delete  | truncate
执行速度                         || 快
可指定条件                  | 可以      | 不可以
语句分类                     |  DML    | DDL
可以回滚事务(将删除事务找回)    | 可以      | 不可以
删除操作记录信息(用于数据恢复)     | 记录      |  不记录

7 常用函数介绍

常用的数值函数
函数名称        函数作用
avg()       返回某列的平均值
count()     返回某列的行数
max()       返回某列的最大值        select max(e_salary) from employee;//查询雇员工资最大值
min()       返回某列的最小值        select min(e_salary) from employee;//查询雇员工资最小值
sum()       返回某列的值之和

常用的字符串函数
函数名称                        函数作用
length(s)                   计算字符串长度       select e_name,length(e_name) from employee;//查询雇员名称及其名称长度
concat(s1,s2,...)           字符串合并函数       select e_no, e_name, e_hireDate, concat(c_no, e_name, e_hireDate) from employee;
ltrim(s)/rtrim(s)/trim(s)   删除字符串空格函数
replace(s,s1,s2)            字符串替换函数
substring(s,n,len)          获取子串函数

常用的日期和时间函数
函数名称                    函数作用
extract(type from d)    获取日期指定值函数     select e_no, e_name, e_hireDate, extract(year from e_hireDate), extract(month from e_hireDate), extract(day from e_hireDate) from employee;//将雇员的年,月,日进行拆分
current_date            获取当前日期函数        select current_date, current_time, now();
current_time            获取当前时间函数
now()                   获取当前日期时间函数
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值