使用 pgAdmin 工具操作数据库对象

使用sql语言删除修改操作数据库对象

选中对应的数据库,打垮工具栏下的sql编辑器。
image.png

  1. create database db_test; -- 注释: 创建数据库
  2. create database db_test2 with owner=postgres encoding="utf-8";
  3. alter database db_test rename to db_test1; -- 修改数据库名称

使用 pgAdmin 工具操作数据表对象

使用sql语言操作数据表对象

选中模式/架构,打开sql编辑器

  1. create table police(
  2. id int,
  3. name varchar(30),
  4. birthday date,
  5. score numeric(5,2)
  6. )
  7. alter table studentl rename to student2; -- 修改表名称
  8. alter table student1 rename id to bh; -- 修改字段名称
  9. alter table student1 alter column name type varchar(40); -- 修改字段属性
  10. alter table student1 drop column birthday; -- 删除子字段
  11. alter table student1 add column address varchar(200); --添加字段
  12. drop table student1; -- 删除数据表

数据类型

  • 数值类型:整数类型和浮点数类型
  • 日期与时间类型:
  • 字符串类型:定长和变长
  • 如何选择正确的数据类型,目的

    数值类型

    SMALLINT: 小范围整数
    INT:普通大小整数

任意任意精度浮点数类型:

REAL: 6位十进制数字精度
NUMERIC(m,n) : 任意精度类型, 最常用

时间类型

TIME: 只用于一日内的时间 8字节 举例 ‘10:05:08’
DATE: 只用于日期 4字节 举例 ‘1987-04-23’
TIMESTAMP: 时间戳 日期和时间 8字节 ‘1987-04-23 10:05:08’

字符串类型

CHAR(n) / CHARACTER(n) : 固定长度字符串,不足补空白
VARCHAR(n)/ CHARACTER VARYING(n) : 变长字符串,有长度限制
TEXT: 变长字符串,无长度限制

选择正确的数据类型:

主要目的: 优化存储,提高数据库性能
正确使用整数类型和浮点数类型

运算符介绍

算术运算符

加 +
减 -
乘 *
除 /

比较运算符

= 等于
<>或者 != 不等于
<= 小于等于
>= 大于等于
> 大于
< 小于
LEAT 在有两个或者多个参数时,返回最小值
GREATEST’ 在有两个或者多个参数时,返回最大值
BETWEEN AND 判断一个值是否落在两个值之间, 包含两边边界
IN 判断一个值是否是IN列表中的任意一个值
LIKE 通配符匹配

  • 如果比较的两个参数有一个为空,那么返回空。
  • 如果比较的两个参数一个是字符串另一个为数值,那么就将字符串转化成数字与另一个进行比较。

逻辑运算符

NOT 非
AND 且
OR 或

运算符优先级

优先级 运算符
最低 =
优先级向下依次递增 OR
AND
NOT
BRTWEEN,CASE,WHEN,THEN,LESE
=,>=,> , <=, < ,<>,!=,IS,like,in
-,+
*, /, %,
-(负号)
最高 !

postgreSQL函数,索引,视图

常用函数

函数作用

常用数值函数

  • avg 返回某列平均值
  • count 返回某列行数
  • max 返回某列最大值
  • min 返回某列最小值
  • sum返回某列的值之和 ```sql select * from employee; select max(e_salayry)from employee;
  1. <a name="KOrG8"></a>
  2. ### 常用字符串函数
  3. - length(s) 计算字符串长度
  4. - concat(s1,s2,...) 字符串合并函数
  5. - ltrim(s)/ rtrim(s)/trim(s) 删除字符串前后空格函数
  6. - replace(s,s1,s2) 字符串替换函数
  7. - substring(s,n,len) 获取子串函数
  8. - s1||s2 拼接两个字符串
  9. ```sql
  10. select e_name, length(e_name), concat(e_name,birthday) from employee;

常用日期和时间函数

  • extract(type from d) 获取日期指定值函数
  • current_date 获取当前日期函数
  • current_time 获取当前日期函数
  • now 获取当前日期时间函数
    1. select current_date,current_time, now();
    2. select e_birthday, extract(year from e_birthday ),
    3. extract(month from e_birthday) from employee;

    自定义函数

    函数的创建

    ```sql create function — 声明创建函数 add(integer,integer) — 定义函数名称,参数类型 returns integer — 定义函数返回值 as ‘select $1 +$2;’ — 定义函数体 language sql — 定义实现函数的语言 returns null on null input — 定义参数为null时处理情况
  1. <a name="HKHMU"></a>
  2. ### 函数的删除
  3. drop function 函数名 : 删除函数
  4. <a name="y8zmp"></a>
  5. ## 索引介绍
  6. | 索引名称 | 使用场景 |
  7. | --- | --- |
  8. | B-tree | 适合处理那些能够顺序存储数据 |
  9. | hash索引 | 只能狐狸简单的等于比较 |
  10. | gist索引 | 一种索引架构 |
  11. | gin索引 | 反转索引,处理包含多个值的键 |
  12. 使用索引的优点:
  13. - 提高了数据的查询速度
  14. - 加快表与表之间的连接
  15. 缺点:
  16. - 创建和维护索引需要耗费时间
  17. - 需要占用磁盘空间
  18. <a name="NAAdD"></a>
  19. ## 视图介绍
  20. <a name="nuLGl"></a>
  21. ### 视图的含义
  22. 视图是以多张真实表进行关联的,
  23. <a name="m5m6x"></a>
  24. ### 视图的创建与删除
  25. ```sql
  26. create view v_emp as select e_no, e_name
  27. from employee where e_name = '小王';
  28. select * from v_emp;
  29. drop view viwe v_emp;

网友: 视图就是一句sql的别名

视图的作用

简单化
安全性
逻辑数据独立性

数据操作和数据表约束介绍

简单数据插入

  1. create table student(
  2. id int,
  3. name varchar(30),
  4. birthday date,
  5. score numeric(5,2)
  6. )
  7. insert into student values (1,'zhangsan','1990-01-01',null); -- 数据表有多少字段,就得穿多少个参数
  8. insert into student(id, name) values(2,'lisi'); -- 指定字段传参

批量数据插入

  1. -- insert批量插入数据语法格式
  2. insert into student (id,name,birthday) values
  3. (3,'zhangsan1','1990-02-01'),
  4. (4,'zhagnsan2','1990-02-04'),
  5. (5,'zhangsan3','1991-04-04');
  6. -- select批量插入数据语法格式:
  7. insert into table1 (属性列表) select 属性列表 from table2 where 查询条件;
  8. -- 举例子
  9. insert into table1 (name,age) select name,age from table2 where age=19;

数据更新操作

  1. -- 指定条件更新数据
  2. update student set name="lisi1"where id=2;
  3. -- 批量更新数据
  4. update student set score = '0';
  5. -- 将指定结果更新到对应字段
  6. update student set score = 1.1 + 2.3 where id = 1;

数据删除操作

  1. 删除操作
  2. select * from student;
  3. -- 条件删除
  4. delete from student where id=4;
  5. -- 条件范围删除
  6. delete from student where birthday between '1990-01-01' and '1990-02-01';
  7. delete from student; // 删除表中的所有数据
  8. truncate清空操作
  9. truncate table student; // 清空数据

delete 和 truncate 操作区别

delete truncate
执行速度 慢·
可指定条件 可以 不可以
语句分类 DML数据操纵语言 DDL数据定义语言
可以回滚事务 可以 不可以
删除操作记录日志 记录 不记录

主键和外键介绍

如何定义主键约束

  1. -- 使用primary key 关键字创建主键
  2. create table emp(
  3. id int primary key, -- 设置主键
  4. name varchar(30),
  5. salary numeric(9,2)
  6. );
  7. insert into emp values(1, 'zhangsan',3000);
  8. insert into emp values(1,'lisi',4000); // 执行失败, 主键不能重复
  9. -- 使用constraint primary key(id)额外指定主键
  10. create table emp(
  11. id int , -- 设置主键
  12. name varchar(30),
  13. salary numeric(9,2)
  14. constraint pk_empl primary key(id)
  15. );

如何定义外键约束

  1. -- 外键关联的字段一定是另一个表的主键
  2. create table emp2(
  3. id int primary key,
  4. name varchar(30),
  5. salary numeric(9,2),
  6. depId int,
  7. constraint fk_emp2_dept foreign key(deptId) references dept(id)
  8. );

主键约束作用:

  • 唯一标识一条记录
  • 提高数据的检索效率

外键约束作用:

  • 保证数据完整性
  • 提高数据的检索效率

    非空约束,唯一约束,默认值约束

    如何定义 ```sql create table emp4( id int primary, name varchar(30) not null, salary numeric(9,2) );

insert into emp4 values(i,’lisi’,3000); insert into emp4 values(2,null,3000); // 报错, 第二个参数name 有非空约束

create table emp5( id int primary key, name varchar(30) not null, phone varchar(30) unique, // 唯一约束,表示不能重复 salary numeric(9,2) );

主键和唯一约束区别 主键必须非空且不重复, 一个表只有一个主键 唯一约束只要求不重复, 一个表可以有多个唯一约束

— 默认值约束 create table emp6( id int primary key, name varchar(30) not null, salary numeric(9, 2) default 0.0 )

  1. 约束作用:
  2. - 维护数据的完整性
  3. - 在业务层面保证数据正确性
  4. <a name="k96jO"></a>
  5. # 数据查询操作
  6. ```sql
  7. select {*|<字段列表>}
  8. from {查询数据表}
  9. where <查询条件>
  10. group by <字段> 根据某个字段分组
  11. having <条件> 筛选条件必须是select中的查询字段
  12. order by 字段 根据某个字段排序
  13. limit <offset> 限制结果显示数量


简单数据查询操作
单表指定条件操作
单表指定条件复杂查询操作
多表连接查询操作
子查询操作
查询结果集合合并操作