随便玩玩之PostgreSQL
未经授权不得转载
第1章PostgreSQL简介
1.1什么是PostgreSQL
Postgresql是数据库(软件)。
The world's most advanced open source database.
世界上最先进的开源数据库。
1.2PostgreSQL的优势
随便用、不要钱
比MySQL好,媲美Oracle
1.3PostgreSQL安装
下载Windows版本的PostgreSQL,双击启动安装程序。她会自动安装VC++2013运行时组件,之后出现如下界面。
点击NEXT(下一步),进入选择安装目录界面。默认即可。
点击NEXT,进入选择安装组件界面。将Stack Builder勾选选项去掉(不去掉也不影响使用)。
点击NEXT,进入选择数据保存目录(数据库数据文件保存位置)界面。默认即可。
点击NEXT,进入设置postgres帐户密码界面。设置为123。
点击NEXT,进入设置服务端口(监听端口)界面。默认即可。
点击NEXT,进入设置语言区域界面。默认即可。
点击NEXT,进入安装前检查界面。
点击NEXT,进入安装准备界面。点击NEXT,进入安装状态。稍等片刻,倒一杯水的工夫,安装已经完成,如下。
点击Finish,完成安装。
1.4开启PostgreSQL数据库之旅。
点击开始菜单,选择所有程序,打开PostgreSQL菜单项。可以看到安装了三个程序,另一个菜单项内附带了四个帮助文档。
PgAdmin4是管理PostgreSQL数据库的界面程序(GUI管理工具)。
SQL Shell是管理PostgreSQL数据库的命令行程序(Command Line Tools)。
Reload Configuration是重置数据库配置程序。
1.5 SQL Shell 使用介绍
打来SQL Shell (pgsql)程序,出现命令行登录界面,提示输入服务器名称,数据库名称,服务端口名称,用户名称,全部按回车键(Enter)即可,最后提示输入“用户postgres的口令”,输入密码,安装时设置的是123,这里就输入123按回车键,进入PostgreSQL数据库交交互界面。本书大部分案例使用SQL Shell程序,所有SQL语句(命令)必须以半角英文状态输入。
在#号后输入以下命令。
1 SELECT version();
得到以下响应。
1 version 2 ------------------------------------------------------------ 3 PostgreSQL 10.0, compiled by Visual C++ build 1800, 32-bit 4 (1 行记录)
我们输入的语句为:SELECT version();,SELECT是用于从数据库(表)中选取数据语句,中间有一个空格,version()表示版本号,分号(;)表示语句结束。
注:1.PostgreSQL语句关键字对大小写不敏感,即不区分大小写。表名、字段名(列名)区分大小写,引号包含的内容区分大小写。所以SeLEct VerSION();得到的效果与上例相同。因为习惯,为了规范化和代码的易读、易维护,对关键字使用大写,其他使用小写。使用小写的前提是数据库内所有表名、字段名为小写,否则请根据实际情况。2.SQL Shell要求每一条语句必须以分号结束,所以每一条语句后必须要有一个分号。PgAdmin无此要求,她会自动将语句加上分号。
1.6pgAdmin使用介绍
打开pgAdmin程序,在左边选择节点:Server→PostgreSQL 10(x86),第一次点击系统会提示输入密码,可选择是否保存密码。保存密码以后打开pgAdmin不用再输入密码,由于我们是在学习PostgreSQL数据库,建议勾选保存密码。
pgAdmin程序界面,左边是数据库内信息,右边是控制台。控制台内可以监视数据库运行情况,查看数据库信息。
点击节点右键:Server→PostgreSQL 10(x86) →Databases(1) →postgres,选择Query Tool,在右边弹出的的窗口中输入以下内容:
1 SELECT version();
得到以下结果。
1 PostgreSQL 10.0, compiled by Visual C++ build 1800, 32-bit
如图所示。
在Query Tool中输入SQL语句和在SQL Shell中输入SQL语句效果相同,建议在SQL Shell中练习。
1.7PostgreSQL语句中的注释
PostgreSQL语句中的注释有单行注释和段落(多行)注释。注释用来标记语句用途、表或字段含义、暂时不执行语句等。无强制要求,凡是有语句(代码)的地方都可以使用,写什么都可以。SQL语句作为注释内容后,不再执行。
单行注释以—开头(两个横杠开头)。
1 --查询数据库版本 2 SELECT version(); --上一行和这一行注释标记之后的内容都是注释
段落注释以/*开头,以*/结束。
1 /* 2 这是一个查询数据库版本的语句 */ 3 SELECT version();
1.8 准备使用数据
安装完后的数据库没有数据供我们练习,需要向数据库内插入一些数据。创建存放学生考试成绩信息表,再向表内插入一些数据。
在SQL Shell中输入以下语句(命令)。
1 CREATE TABLE cj ( 2 id int, 3 kc varchar(20), 4 bj varchar(20), 5 xm varchar(20), 6 yw numeric, 7 sx numeric, 8 yy numeric 9 );
按回车键提示:
CREATE TABLE
表示成功创建表。
表内各字段的含义:id表示序号,无特别意义;Kc表示考试场次;bj表示班级;xm表示姓名;yw表示语文成绩,sx表示数学成绩;yy表示英语成绩。每个字段后都有一些标记,表示数据类型。
输入以下语句,插入一些数据(记录)。
1 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(1,'期中考试','二班','李四',73,72,76); 2 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(2,'期中考试','二班','王五',61,71,82); 3 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(3,'期中考试','二班','张三',64,71,66); 4 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(4,'期中考试','三班','孙七',82,62,72); 5 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(5,'期中考试','三班','赵六',59,70,62); 6 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(6,'期中考试','三班','周八',77,62,74); 7 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(7,'期中考试','一班','刘一',74,72,74); 8 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(8,'期中考试','一班','吴九',70,66,60); 9 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(9,'期中考试','一班','郑十',65,73,82); 10 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(10,'期末考试','二班','李四',71,77,70); 11 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(11,'期末考试','二班','王五',66,76,76); 12 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(12,'期末考试','二班','张三',72,73,62); 13 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(13,'期末考试','三班','孙七',72,54,56); 14 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(14,'期末考试','三班','赵六',62,71,68); 15 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(15,'期末考试','三班','周八',60,71,66); 16 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(16,'期末考试','一班','刘一',59,53,60); 17 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(17,'期末考试','一班','吴九',65,75,62); 18 INSERT INTO cj (id,kc,bj,xm,yw,sx,yy) VALUES(18,'期末考试','一班','郑十',58,70,76);
按回车键后提示:
1 INSERT 0 1
表示插入数据成功。
查询插入的数据。输入以下语句。
1 SELECT * FROM cj;
按回车键得到以下结果:
表示数据已存在数据库的cj表中。
上图所显示的数据和平时用EXCEL做的表差不多。因为数据库的基础是表,数据库就是有一个一个的表组成。在EXCEL中的表头(列名称),PostgreSQL称作字段;EXCEL中的每一行数据,PostgreSQL中称作记录。简单的说就是列是字段,行是记录。
1.9 一些初学者常见的问题
问题一:数据库有Oracle、SQL Server、MySQL、PostgreSQL等等很多,学哪个好?
答:我不会说话的时候,根本不知道四川话好还是河南话好。只是父母教我会说河南话,长大了听得多了四川话也大概能听得懂,在四川待了一段时间居然学会了四川话,后来又跟着新闻联播学会了普通话。同理,先不要思考哪个好的问题,学会了PostgreSQL,掌握其他的数据库也很快。
问题二:PostgreSQL的SQL语句标准吗,我要学标准的SQL语句?
答:同问题一。
问题三:听大婶说PostgreSQL有很多缺点,不如Oracle功能多,稳定,PostgreSQL到底要不要学?
答:爱学不学,爱用不用。
问题四:听大婶说免费的才是最贵的,PostgreSQL贵在哪里?
答:当你不会数据库时,所有数据库都是贵的;当你学会数据库时,您才是最贵的,雇你的人都要考虑财力够不够用得起您这号大婶。
至此,第一章结束,简单介绍了PostgreSQL数据库的安装,操作方法。虽然简单,不过对于作为没有学过数据库的小白已经是难上加难了。