您好,1)用户实用程序:
createdb 创建一个新的PostgreSQL的数据库(和SQL语句:CREATE DATABASE 相同)
createuser 创建一个新的PostgreSQL的用户(和SQL语句:CREATE USER 相同)
dropdb 删除数据库
dropuser 删除用户
pg_dump 将PostgreSQL数据库导出到一个脚本文件
pg_dumpall 将所有的PostgreSQL数据库导出到一个脚本文件
pg_restore 从一个由pg_dump或pg_dumpall程序导出的脚本文件中恢复PostgreSQL数据库
psql 一个基于命令行的PostgreSQL交互式客户端程序
vacuumdb 清理和分析一个PostgreSQL数据库,它是客户端程序psql环境下SQL语句VACUUM的shell脚本封装,二者功能完全相同
(2)系统实用程序
initdb 创建一个用于存储数据库的PostgreSQL数据目录,并创建预定义的模板数据库template0和template1,生成共享目录表 catalog;此程序通常只在安装PostgreSQL时运行一次
initlocation 创建一个辅助的PostgreSQL数据库存储区域
ipcclean 从停止的PostgreSQL服务器中清除共享内在和孤立信号标志
pg_ctl 启动、停止、重启PostgreSQL服务(比如:pg_ctl start 启动PostgreSQL服务,它和service postgresql start相同)
pg_controldata 显示PostgreSQL服务的内部控制信息
postgres PostgreSQL单用户模式的数据库服务
postmaster PostgreSQL多用户模式的数据库服务
4这里面最重要的是psql这个客户端程序最为重要。启用客户端程序psql的方法是:
切换到PostgreSQL预定义的数据库超级用户postgres,启用客户端程序psql,并连接到自己想要的数据库,比如说:
psql template1
出现以下界面,说明已经进入到想要的数据库,可以进行想要的 *** 作了。
template1=#
5在数据库中的一些命令:
template1=# \l 查看系统中现存的数据库
template1=# \q 退出客户端程序psql
template1=# \c 从一个数据库中转到另一个数据库中,如template1=# \c sales 从template1转到sales
template1=# \dt 查看表
template1=# \d 查看表结构
template1=# \di 查看索引
6要注意随时对数据库进行清理、收回磁盘空间并更新统计信息,使用下面的命令就搞定!
vaccumdb -d sales -z
-a 对所有的数据库 *** 作
-z 保证不断地删除失效的行,节约磁盘空间,将统计信息更新为最近的状态
7PostgreSQL用户认证
PostgreSQL数据目录中的pg_hbaconf的作用就是用户认证,可以在/var/lib/pgsql/data中找到。
有以下几个例子可以看看:
(1)允许在本机上的任何身份连接任何数据库
TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all trust(无条件进行连接)
(2)允许IP地址为1921681x的任何主机与数据库sales连接
TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host sales all 19216810 2552552550 ident sameuser(表明任何 *** 作系统用户都能够以同名数据库用户进行连接)
8看了那么多,来一个完整的创建PostgreSQL数据库用户的示例吧
(1)进入PostgreSQL高级用户
(2)启用客户端程序,并进入template1数据库
psql template1
(3)创建用户
template1=# CREATE USER hellen WITH ENCRYPED PASSWORD'zhenzhen'
(4)因为设置了密码,所以要编辑pg_hbaconf,使用户和配置文件同步。
在原有记录上面添加md5
local all hellen md5
(4)使用新用户登录数据库
template1=# \q
psql -U hellen -d template1
PS:在一个数据库中如果要切换用户,要使用如下命令:
template1=# \!psql -U tk -d template1
9设定用户特定的权限
还是要用例子来说明:
创建一个用户组:
sales=# CREATE GROUP sale;
添加几个用户进入该组
sales=# ALTER GROUP sale ADD USER sale1,sale2,sale3;
授予用户级sale针对表employee和products的SELECT权限
sales=# GRANT SELECT ON employee,products TO GROUP sale;
在sale中将用户user2删除
sales=# ALTER GROP sale DROP USER sale2;
10备份数据库
可以使用pg_dump和pg_dumpall来完成。比如备份sales数据库:
pg_dump sales>/home/tk/pgsql/backup/1bak
我的是SQL2005的哦、你看看、、use master
go--创建“商品信息数据库”数据库、
if exists(select from sysobjects where name='商品信息数据库')
drop database 商品信息数据库
go
create database 商品信息数据库
on primary
(
name='商品信息数据库',
filename='D:\商品信息数据库mdf',
size=10MB,
maxsize=50MB,
filegrowth=2MB
)
log on
(
name='商品信息日志'
filename='D:\商品信息日志ldf',
size=5MB,
maxsize=25MB,
filegrowth=1MB)
go
use master
go--创建“Sales”数据库、
if exists(select from sysobjects where name='Sales')
drop database Sales
go
create database Sales
on primary
(
name='Sales_Data',
filename='D:\Sales_Datamdf',
size=20MB,
maxsize=50MB,
filegrowth=5%
),FILEGROUP fg1
( name=Sales_Data2,
filename='D:\Sales_Data2ldf',
size=20MB,
maxsize=50MB,
filegrowth=5MB )
log on
(
name='Sales_Log',
filename='D:\Sales_Logldf',
size=10MB,
maxsize=50MB,
filegrowth=5MB
)
go--删除数据库前面已经写出、 没运行过、有问题再Call我吧、祝你好运、、
创建数据库
CREATE DATABASE [ProductSales]
创建表
CREATE TABLE Product(ProductID int,ProductName nvarchar(100) ,Price numeric (10, 0) )
CREATE TABLE Sales(ProductID int,ClientName nvarchar(100) ,ProductNumber numeric(10, 0),SalesPrice numeric(10, 0) )
1、查询出单笔售数量大于15的客户名称、购买数量、销售价格信息;
select ClientName,ProductNumber,SalesPrice from Product a,Sales b
where aProductID=bProductID
and ProductNumber>15
2、查询出所有商品的全部销售金额;
select ProductName,sum(SalesPriceProductNumber) as TotalAmount from Product a,Sales b
where aProductID=bProductID
group by ProductName
3、查询客户姓名、对应客户的销售总金额;
select ClientName,sum(SalesPriceProductNumber) as TotalAmount from Product a,Sales b
where aProductID=bProductID
group by ClientName
4、查询购买过商品“IBM 350笔记本”的商品名称、客户名称、购买数量;
select ProductName,ClientName,ProductNumber from Product a,Sales b
where aProductID=bProductID
and bProductID='3'
5、把客户“流水”名称更新为“ LS”。
update Sales set ClientName=replace(ClientName,'流水','LS')
CREATE DATABASE sales
ON --主数据文件定义
(NAME=salesB_Data, /主数据文件逻辑文件名/
FILENAME='D:\DataApp\DataB\salesB_Datamdf', /主数据文件 *** 作系统文件名/
SIZE=1MB,
MAXSIZE=5MB,
FILEGROWTH=15%)
LOG ON --事务日志文件定义
( NAME=salesB_Log,
FILENAME='D:\DataApp\DataB\CollegeMISB_Logldf',
SIZE=2,
MAXSIZE=30,
FILEGROWTH=1)
存在关系是 第二范式 不存在属于第三范式
理由
1,第一范式,主码是abe,因为存在非关键字依赖于主码
2,第2范式,主码是AB。因为存在传递依赖
仔细读下面的,会有很大收获的:
实质上,设计范式用很形象、很简洁的话语就能说清楚,道明白。本文将对范式进行通俗地说明,并以笔者曾经设计的一个简单论坛的数据库为例来讲解怎样将这些范式应用于实际工程。
范式说明
第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。
例如,如下的数据库表是符合第一范式的:
字段1 字段2 字段3 字段4
而这样的数据库表是不符合第一范式的:
字段1 字段2 字段3 字段4
字段31 字段32
很显然,在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。
第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),关键字为组合关键字(学号, 课程名称),因为存在如下决定关系:
(学号, 课程名称) → (姓名, 年龄, 成绩, 学分)
这个数据库表不满足第二范式,因为存在如下决定关系:
(课程名称) → (学分)
(学号) → (姓名, 年龄)
即存在组合关键字中的字段决定非关键字的情况。
由于不符合2NF,这个选课关系表会存在如下问题:
(1) 数据冗余:
同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。
(2) 更新异常:
若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门课程学分不同的情况。
(3) 插入异常:
假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有"学号"关键字,课程名称和学分也无法记录入数据库。
(4) 删除异常:
假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。
把选课关系表SelectCourse改为如下三个表:
学生:Student(学号, 姓名, 年龄);
课程:Course(课程名称, 学分);
选课关系:SelectCourse(学号, 课程名称, 成绩)。
这样的数据库表是符合第二范式的, 消除了数据冗余、更新异常、插入异常和删除异常。
另外,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。
第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:
关键字段 → 非关键字段x → 非关键字段y
假定学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),关键字为单一关键字"学号",因为存在如下决定关系:
任何能创建数据库的用户都可以创建数据库快照。创建快照的唯一方式是使用 Transact-SQL。注意:有关命名数据库快照、设置创建数据库快照的时间和限制数据库快照成员的注意事项,请参阅创建数据库快照。创建数据库快照根据源数据库的当前大小,确保有足够的磁盘空间存放数据库快照。数据库快照的最大大小为创建快照时源数据库的大小。使用 AS SNAPSHOT OF 子句对文件执行 CREATE DATABASE 语句。创建快照需要指定源数据库的每个数据库文件的逻辑名称。有关创建数据库快照的语法的正式说明,请参阅 CREATE DATABASE (Transact-SQL)。注意:创建数据库快照时,CREATE DATABASE 语句中不允许有日志文件、脱机文件、还原文件和不起作用的文件。示例本节包含创建数据库快照的示例。A 对 AdventureWorks 数据库创建快照此示例对AdventureWorks数据库创建数据库快照。快照名称AdventureWorks_dbss_1800及其稀疏文件的名称AdventureWorks_data_1800ss指明了创建时间 6 PM(1800 小时)。复制代码CREATE DATABASE AdventureWorks_dbss1800 ON( NAME = AdventureWorks_Data, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800ss' )AS SNAPSHOT OF AdventureWorks;GO注意:示例中随意使用了扩展名 ss。B 对 Sales 数据库创建快照此示例对Sales数据库创建数据库快照sales_snapshot1200。
创建表:create table ods_sales_detail(
订单号 varchar2(11),
订单日期 date,
组织编码 clob,
销售量 number,
销售单价 number
);
插入数据:
insert into ods_sales_detail('订单号',订单日期,'组织编码',销售量,销售单价) values('11022346220','2016-1-10','511',100000,189);
以上就是关于hadoop用postgresql数据库吗全部的内容,包括:hadoop用postgresql数据库吗、SQL使用查询分析器创建数据库、用SQL语句建立数据库,帮忙下亚,明天就要交了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)