PostgreSQL 安装

创建数据库和表

使用SQL语句,完成创建一个数据库,创建关系。

  1. 创建数据库scDB;

    create database scDB;
    
  2. 按要求创建四个表:

    • Student(Sno,Sname,Ssex,Sage,Sdept)

      • create table Student  //学生表
        (
            Sno char(9) unique,
            Sname char(5) not null,
            Ssex char(2),
            Sage smallint,
            Sdept char(20),
            primary key(Sno)  // 设置主码为学号
        );
        
    • Course(Cno,Cname,Cpno,Ccredits)

      • create table Course  //课程表
        (
            Cno char(4),
            Cname char(20) not null,
            Cpno char(4),   // 先修课程
            Ccredits smallint,
            primary key(Cno),  // 设置主码为课程编号
            foreign key(Cpno) references Courese(Cno) // 约束条件,Cpno为外码,被参照表Course,被参照列为Cno
        );
        
    • SC(Sno,Cno,Grade)

      • create table SC   //学生选课表
        (
            Sno char(9),
            Cno char(4),
            Grade smallint,
            foreign key(Sno) references Student(Sno), // 约束条件,Cpno为外码,被参照表Course,被参照列为Cno
            foreign key(Cno) references Course(Cno)
        );
        
  3. 注意,执行SQL脚本时,Postgre不能识别大小写,必须添加双引号,如果有中文,则使用GB 2312格式保存:

    postgre1

  4. 执行脚本,注意,在Windows下,路径要使用正斜杠

    postgre2

  5. 查看表,注意,若有大小写,也要加引号

    53930717428

简单单表查询

  • 运行脚本
    • postgre4
  • 查看表,其中S是供应商表,P为零件表,J为工程项目表,SPJ是供应情况表
    • postgre5

课上习题

  1. 找出所有供应商的姓名和所在城市

    select sno,sname from s;
    
  2. 找出所有零件的名称,颜色,重量

     select pname,color,weight from p;
    
  3. 找出工程项目J2使用的各种零件的名称及数量

     SELECT spj.qty,p.pname
     FROM spj, p
     WHERE spj.pno = p.pno and spj.jno='J2';
    
  4. 找出上海厂商供应的所有零件号码

        SELECT distinct spj.pno 
        FROM spj, s
        WHERE s.sno = spj.sno and s.city='上海';
    
  5. 找出使用上海产的零件的工程号码

    SELECT distinct spj.jno 
    FROM spj, s
    WHERE s.sno = spj.sno and s.city='上海';
    
  6. 找出没有使用天津产的零件的工程号码

    SELECT distinct spj.jno 
    FROM spj, s
    WHERE s.sno = spj.sno and s.city<>'天津';
    
  7. 把所有红色零件的颜色改成蓝色

    UPDATE p SET color = '蓝' WHERE color = '红' ;
    
  8. S5供给J4的零件P6改为由S3供应,请做出必要的修改:

    UPDATE spj SET sno = 'S3' WHERE sno = 'S5' and jno = 'J4' and pno ='P6' ;
    
  9. 从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录

    DELETE FROM spj WHERE sno = 'S2'; 
    DELETE FROM s WHERE sno = 'S2';
    
  10. 请将(S2,J6,P4,200)插入供应情况关系

    INSERT INTO s VALUES ('S2', '盛锡', 10 ,'北京');
    INSERT INTO spj VALUES ('S2', 'P4', 'J6' ,200);
    

操作

数据库命令

\password           设置密码
\q                  退出
\h                  查看SQL命令的解释,比如\h select 
\e                  打开文本编辑器。
\conninfo           列出当前数据库和连接的信息。
\\?                  查看psql命令列表
\du                 列出所有用户。 
\i yourPath     运行sql脚本

数据库查询时使用单引号

\l                  列出所有数据库
\c [database_name]  连接其他数据库
\d                  列出当前数据库的所有表格
\d [table_name]     列出某一张表格的结构
drop database db;     删除一个数据库
drop table table_name;    删除一个表

results matching ""

    No results matching ""