数据库快速入门
目录
数据库快速入门
1. 数据库基础知识入门
2. Postgre数据库介绍
3. 数据库入门操作
3.1常用命令
3.2 数值类型
3.3 数据运算符
4. 常用函数介绍
4.1 常用函数介绍
4.2 自定义函数
5 数据库索引和视图介绍
5.1 数据库索引介绍
5.2 数据库视图介绍
6. 数据的插入、更新和删除
6.1 简单数据插入操作
6.2 批量数据插入操作
6.3 数据更新操作
6.4 数据删除操作
7. PostgreSQL数据表主键和外键、约束
1. 数据库基础知识入门
- 数据库表:一系列二维数组的集合。
- 数据类型:整数、浮点数、日期时间、字符串、二进制数据。
- 数据库系统构成
- 数据库
- 数据库管理系统
- 数据库应用程序
- SQL语言:对数据库进行查询和修改操作语言
- DDL: 数据库定义语言,DROP、CREATE、ALTER等语句
- DML: 数据库操作语言,INSERT、UPDATE、DELETE语句
- DQL: 数据库查询语言,SELECT等语句
- DCL: 数据库控制语言,GRANT、REVOKE、COMMENTY、ROLLBACK等语句
- 常用数据库访问技术
- ODBC: 开放数据库连接
- JDBC: Java数据库连接
- ADO.NET
- PDO: PHP 语言访问数据库技术
2. Postgre数据库介绍
- 关系型数据库
- PostgreSQL主要特点
- 免费
- 速度快
- 平台可移植性
- 丰富的接口
- 面向对象特性
- 安全性(MD5、SSL等)
- 配合的开源软件很多
- Postgre和MySQL
3. 数据库入门操作
3.1常用命令
create datanbase db_test; create database db_test with owner = postgres encoding = 'utf-8';--创建数据库alter database db_test rename to db_test1;alter database db_test connection limit 30;--数据库修改drop database db_test;--数据库删除create table student(
in integer,
name varchar(30),
birthday date,
score numeric(5,2)
);--创建数据表alter table student rename to student1;--修改数据表名称alter table student rename id to bh;--修改数据表字段名alter table student alter column name type varchar(40);--修改数据表字段类型alter table student add column address varchar(100);--增加数据表字段drop table student;--删除数据表drop table if exists student;--删除数据表语法
3.2 数值类型
- 整数类型
- SMALLINT //小范围整数,取值范围-32768-+32768
- INT
- 任意精度浮点数类型
- REAL //6位十进制数字精度
- NUMERIC(M,N)
- 日期和时间类型
- TIME : 只用于一日内时间 ,举例 :10:10:09
- DATE: 只用于日期,举例: 1988-02-03
- TIMESTAMP:日期和时间,举例: 1992-02-08 10:19:20
- 字符串类型
- char(n) 固定长度字符串,不足补空白
- varchar(n) 变长字符串,有长度限制
- text 变长字符串,无长度限制
create table temp(x smallint,y int,z real,n numeric(4,2));insert into temp values (2,3,2.55,6.88)insert into temp values (2,3,2.55,60.888)select * from temp;---数值类型create table temp1(t time,d date,tm TIMESTAMP);insert into temp1 values ('10:05:05', '2015-12-11','2013-02-02 10:10:10')select * from temp1;--时间类型create table temp2(ch char(10),vch varchar(20),t TEXT);insert into temp2 values ('1234567','abcdefg','1234567');select * from temp2;select concat('(', ch , ')') ,concat('(', vch , ')') ,concat('(', t , ')') from temp2--字符串类型(注意concat的使用方法)
-
选择正确的数据类型(主要目的:优化存储,提高数据库性能)
-
正确使用整数类型和浮点数类型
-
日期和时间类型
-
CHAR和VARCHAR之间的特点和选择
-
3.3 数据运算符
- 算数运算符
- 加减乘除
- 求余 %
- 比较运算符
运算符 | 作用 |
= | 等于 |
<>(!=) | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
> | 大于 |
< | 小于 |
LEAST | 在有两个或者多个参数时,返回最小值 |
GREATEST | 在有两个或者多个参数时,返回最大值 |
BETWEEN AND | 判断一个值是否落在两个值之间 |
IN | 判断一个值是否时IN列表中的任意一个值 |
LIKE | 通配符匹配 |
- 逻辑运算符
- NOT
- AND
- OR
select 3+1 ,8-3 ,9*8,9/4, 8%3;--算数运算符select 1=0, '2'=2,'b'='b',null =null ,null =1;select 'jaden'<>'jade' , 1<>2;select 1 between 0 and 2, 4 between 2 and 1;select 2 in ('2','21','34');select 'abc' like 'a%' , 'abc' like '_b_' , 'abc' not like '%d';--比较运算符select '1', not 'Y', not 'N', not '0';select '1' and 'y', '1' or '0','0' or 'n';--逻辑运算符
4. 常用函数介绍
4.1 常用函数介绍
- 函数的作用
- 常用的数值函数
函数名称 | 函数作用 |
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 获取子串函数 |
- 常用的字符串函数
函数名称 | 函数作用 |
LENGTH(s) | 计算字符串长度 |
CONCAT(s1,s2,...) | 字符串合并函数 |
LTRIM(s)/RTRIM(s)/TRIM(s) | 删除字符串空格函数 |
REPLACE(s,s1,s2) | 字符串替换函数 |
SUBSTRING(s,n,len) | 获取子串函数 |
- 常用的日期和时间函数
函数名称 | 函数作用 |
EXTRACT(type from d) | 获取日期的指定型函数 |
CURRENT_DATE | 获取当前日期函数 |
CURRENT_TIME | 获取当前时间函数 |
NOW() | 获取当前日期时间函数 |
4.2 自定义函数
- 创建函数的语法
- 基本语法格式:
CREATE FUNCTION //声明创建函数ADD(INTEGER,INTEGER) //定义函数名称,参数类型
RETURNS integer //定义函数返回值AS 'select $1 + $2;' //定义函数体
LANGUAGE SQL //用以实现函数的语言的名字
RETURN NULL ON NULL INPUT; //定义参数位NULL时的处理情况
- 函数的创建
- create or replace function
- 函数的删除
- drop function
5 数据库索引和视图介绍
5.1 数据库索引介绍
- 索引的作用
- 索引的分类
- B-tree索引:适合处理那些能够按顺序存储数据
- Hash索引: 只能处理简单的等于比较
- GisT索引:一种索引架构
- GIN索引:反转索引,处理包含多个值的键
- 索引的创建和删除
- create index x_index on temp(x);
- drop index x_index;
- 使用索引的优点和缺点
- 优点:
- 提高数据的查询速度
- 加速表与表之间的连接
- 缺点
- 创建和维护索引需要耗费时间
- 需要占用磁盘空间
- 优点:
5.2 数据库视图介绍
- 视图的含义
- 视图的创建
- CREATE VIEW TEST1 AS SELECT...
- 视图的删除
- DROP view test1;
- 视图的作用
- 简单化
- 安全性
- 逻辑数据独立性
6. 数据的插入、更新和删除
6.1 简单数据插入操作
create table student(id int,name varchar(30),birthday date,score numeric(5,2)
);insert into student values(1 , '张三' ,'1990-01-01' , null);insert into student(id ,name , birthday) values (2, '李四' ,'1993-08-27');select * from student;
6.2 批量数据插入操作
--继续向表中插入数据insert into student (id , name , birthday) values
( 3 , 'xiao7' , '2000-02-02' ),
( 4 , 'xiao8' , '2000-02-02' ),
( 5 , 'xiao9' , '2000-02-02' );--使用select 查询语句向数据表中插入数据insert into test1 select * from student;
6.3 数据更新操作
update student set name = '王5' where id = 2;update student set score = 0;
6.4 数据删除操作
--数据删除操作delete from student where id =4; delete from student where birthday between '2000-03-03' and '2000-04-04';--truncate清空表truncate table student;--delete和truncate区别
truncate执行速度快
truncate不可指定条件
truncate不可以回滚
truncate不记录删除操作记录日志
7. PostgreSQL数据表主键和外键、约束
- 如何定义主键约束:
- 主键就是数据表中唯一的不重复的字段。
- 主键唯一
create temp(id int primary key;name varchar(30);salary nyumeric(9,2)
);create table temp1(id int,name varchar(30),salary numeric(9,2),constraint pk_temp1 primary key(id)
);
- 如何定义外键约束
- 主键和外键的作用
- 主键:
- 唯一标识一条记录
- 提高数据的检索效率
- 外键
- 保证数据的完整性
- 提高数据的检索效率
- 主键:
- 非空约束
- not null
- 唯一约束
- unique
- 默认值约束
- default 0.0
- 约束作用
- 维护数据的完整性
- 在业务层面保证数据正确性