PG学习记录

本文中的样例来自pg的帮助文档。
首先还是介绍下pg,这是一个开源的关系型数据库,支持很多SQL特性,像复杂查询,外键约束,触发器,可更新视图,事务完整性,并发控制。同时,它还支持用户对其进行扩展,如添加数据类型,自定义函数、操作符、集合函数,索引方法,程序化处理语言。

pg的wiki查询,可以查阅相应的FAQ | pg的官网,可以下载安装包和相应的文档以及源码

学习版本PostgreSQL 9.4.1,OS为Windows 10 preview。

pg使用的是客户/服务器模式(C/S),一次pg的会话是由两个相互协调的进程组成的:

  • 服务器进程
    服务器进程管理数据库文件,接受来自服务的连接请求并代替客户端执行数据库操作。pg中的服务器程序是postgres。

  • 客户端进程
    客户端是指想要执行数据库操作的应用程序,也叫做前端。实际使用中,可以被叫做客户端的程序有很多,比如一个命令行操作工具,一个图像应用程序,一个需要访问数据库用于显示页面的web服务器,或者一个专用的数据库维护工具。

比较适合学习pg的方式是使用SQL Shell(psql)这个pg为我们提供命令行工具,可以通过SQL语句进行数据库操作的实现,而不用进入pgAdmin III。


1.创建数据库

SQL:create database mydb;
要记住psql中输入SQL语句之后要在末尾输入分号;,否则会被作为一个不完整的SQL语句,psql会继续在新一行等待用户的输入,而不会执行该语句。执行效果如下,会给出CREATE DATABASE的反馈。
创建数据库

2.删除数据库

SQL:drop database mydb;
删除数据库
tips:psql的进入:,打开psql后一直回车,[...]中的内容为默认参数,即可进入服务器为[localhost],数据库为默认数据库[postgres],端口号为安装时设置的端口[5432],用户名为默认用户[postgres]的数据库。若需要访问刚刚创建的mydb,可以重启psql,在Database参数处输入mydb,继续回车,如下图。
访问数据库mydb
psql的帮助为\h,退出为\q(\q也可以用于在帮助中退出,当帮助显示的太多以--More--显示时,可以使用\q退出帮助提示)。

3.创建表

SQL:create table weather(
city varchar(80),
temp_lo int, -- low temperature
temp_hi int, -- high temperature
prcp real, -- precipitation
date date
);

create table cities(
name varchar(80),
location_x real,
location_y real
);

创建表weather
创建表cities
SQL中使用--作为行注释开头,表示接下来的部分为注释。

4.向表添加记录

全填充方式:
SQL:insert into weather values('San Francisco', 46, 50, 0.25, '1994-11-27');
insert into cities values('San Francisco', -194.0, 53.0);
选择填充:
SQL:insert into weather (date, city, temp_hi, temp_lo)
values('1994-11-29', 'Hayward', 54, 37);

添加数据

5.查询1

选择weather表的全部数据
SQL:select * from weather;
weather表
select * from cities;
cities表
从weather表查询城市每一天的平均气温和日期
SQL:select city, (temp_lo + temp_hi)/2 as temp_avg, date from weather;
查询平均气温
语句as可以用于起别名,用于显示在查询结果之中。
查询weather中记录的所有城市名
SQL:select distinct city from weather;
查询所有城市的城市名
连接查询
SQL:select * from weather, cities where city = name;
连接查询
等同于上述语句的内连接
SQL:select * from weather inner join cities on (weather.city = cities.name);
内连接

6.表信息查看

表定义:\d weather;将显示字段的定义,修饰词,约束信息。
表结构
查看当前数据库中用户已创建的表的名称
SQL:select tablename from pg_tables
where tablename not like 'pg_%' and tablename not like 'sql_%';

从系统表中列出表名称
查看所有已创建的数据库名称
SQL:select datname from pg_database
where datname not like 'template%';

从系统表中列出数据库名称

猜你喜欢

转载自blog.csdn.net/haney_2015/article/details/46536591