PostgreSQL上手
postgre主键自增
-- 方法一
create table test_a
(
id serial,
name character varying(128),
constraint pk_test_a_id primary key( id)
);
-- 方法二
create table test_b
(
id serial PRIMARY KEY,
name character varying(128)
);
-- 方法三
create table test_c
(
id integer PRIMARY KEY,
name character varying(128)
);
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');
数据库知识基础入门
什么是数据库?
数据库表
常用的数据类型
数据库系统构成
SQL语言
常用的数据库访问技术
PostgreSQL数据库概述
PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),是从伯克利写的 POSTGRES 软件包发展而来的。经过十几年的发展, PostgreSQL 是世界上可以获得的最先进的开放源码的数据库系统, 它提供了多版本并发控制,支持几乎所有SQL语句(包括子查询,事务和用户定义类型和函数),并且可以获得非常广阔范围的(开发)语言绑定 (包C,C++,Java,perl,python,php,nodejs,ruby)。
PostgreSQL的发展历程
PostgreSQL数据库的特点
PostgreSQL数据库环境搭建
在linux系统启动和关闭数据库服务
#查看服务进程
$ ps aux | grep postgres
#切换到postgres安装目录下
$ cd /PostgreSQL/9.3/bin
#PostgreSQL在安装过程中不推荐使用root用户来启动和关闭服务,PostgreSQL会安装一个postgres用户,切换到postgres用户下
$ su postgres
#使用pg_ctl命令关闭服务
$ ./pg_ctl stop -D /PostgreSQL/9.3/data (-D 是指向data文件所存储的目录)
#使用pg_ctl命令关闭服务
$ ./pg_ctl stop -D /PostgreSQL/9.3/data -l /PostgreSQL/9.3/data/s (-l 是指向服务启动时日志所存储的目录)
使用pgAdmin工具操作数据库对象
使用SQL语言操作数据库对象
#创建数据库
create database db_axin;
create database db_axin with owner = postgres encoding = 'utf-8';#创建数据库并指定了参数,所有者为owner,编码格式utf-8。
#修改数据库名称
alter database db_axin rename to db_axin2;
#修改数据库的参数信息
alter database db_axin connection limit 20; #最大连接数
#删除数据库
drop database db_axin;
使用pgAdmin工具操作数据表对象
使用SQL语言操作数据表对象
创建
修改
删除
如果并不存在,并不执行真正的删除操作。
常用的数据类型
- 数值类型
- 日期与时间类型
- 字符串类型
数值类型
注意:在保存的数据当中,小数点是不占用一位的。
create table temp(
x smallint,
y int,
z real,
n numeric(5,2)
)
insert into temp values(2,3,2.55,6.88);
insert into temp values(2,3,2.55,1000.88); //插入不成功,超过了最大的储存长度
insert into temp values(2,3,2.55,100.88); //小数点在数值当中不计算一位的。
insert into temp values(2,3,2.55,100.888); //不会报错,自动四舍五入
select * from temp;
在储存过程中合理定义精度,精度不过,会发生四舍五入,导致数据精度丢失。
日期与时间类型
字符串类型
create table temp1(
ch char(10),
vch varchar(30),
t text;
)
insert into temp values('axin','axin1','axin2');
select concat('(',ch,')'),concat('(',vch,')'),concat('(',t,')') from temp3;//用于连接字符串concat
如何选择数据类型?
PostgreSQL运算符
算术运算符
select 3+2,3-2,3*2,3/2,3%2;
比较运算符
select 1=0,'2'=2,'b'='b',null=null,null=1;
如果有一个参数或两个参数为null,比较的结果为空。
若同一个运算中两个参数都是字符串,按照字符串进行比较。
如果一个整数类型和字符串进行比较,postgetsql会自动将字符串转换为数值进行比较。
逻辑运算符
在程序当中,1和y当做真来处理,0和n当做假来处理
运算符的优先级
PostgreSQL常用函数
常用的数值函数
常用的字符串函数
select e_name,length(e_name) from employee;
select e_no,e_name,e_hireDate,concat(e_no,e_name,e_hireDate) from employee;
常用日期时间函数
PostgreSQL自定义函数
自定义函数语法
实例1:
结果:
实例2:
||就是将两个内容拼接在一起
删除一个函数
PostgreSQL数据库索引
索引分类
B-tree索引:用于使用=和范围查询,按某列解锁数据
在雇员名称上建立索引
//创建索引create index emp_name_index on employee(e_name);//create index...on...默认创建的是B-tree树索引//删除索引drop index emp_name_index;
使用索引的优缺点
PostgreSQL数据库视图
在数据库中,视图与表的作用非常类似,视图是从一张表或多张表导出的数据内容。
创建视图:
查询视图:
select * from v_emp_dev;//视图与表类似,可按照查询表的方式查询视图
视图检索出来的数据:
//删除视图drop view v_emp_dev;
视图的作用
- 简单化
- 安全性
- 逻辑数据独立性
PostgreSQL数据操作
简单数据的插入
数据批量插入操作
数据更新操作
将一个结果的内容更新到指定字段上面
update student set score =1.1+2.3 where id=1;
delete与truncate操作区别
PostgreSQL数据表主键、外键
定义主键约束
创建外键约束的方式
主键和外键的作用
PostgreSQL数据表约束
定义非空约束
唯一约束
每两条记录,约束的字段内容不能重复。主键约束也是不可重复,指定单个字段,且不可为空;而唯一约束可为空,可指定多个字段。
默认值约束
约束作用
简单数据查询操作
查询语句语法
null处理
雇员的工资是空值,空值按可能最大值处理,把空值数据放在最上面。如下处理:
把空值数据放在最上下面。
limit关键字
分页处理
子查询操作
exists关键字子查询操作
子查询可以成功返回结果集,即返回真值。就会显示外面主查询的内容。相反,外部不会返回查询内容。
结果:返回所有数据
返回员工表中属于开发部的员工信息
内部先查出为开发部的d_no,外部查询出d_no=dept_no的关联信息。
相反的查询
in关键字子查询操作
返回员工表中属于开发部的员工信息
标量子查询操作(当做数据内容)
返回员工编号、名称、所在部门的位置(||做拼接符)
查询结果集合并操作
union all
将两个结果集进行合并的操作
union
将两个结果集进行合并的操作并去重
区别
注意:
合并的结果集两条语句的字段需对应,对应不上的补null