网站快速优化排名官网,辽宁省建设厅网站中级职称公示,wordpress视频网站采集器,教育门户网站源码1.数据类型
1.数字类型
类型 长度 说明 范围 与其他db比较
Smallint 2字节 小范围整数类型 32768到32767
integer 4字节 整数类型 2147483648到2147483647
bigint 8字节 大范围整数类型 -9233203685477808到9223203685477807
decimal 可变 用户指定 精度小…1.数据类型
1.数字类型
类型 长度 说明 范围 与其他db比较
Smallint 2字节 小范围整数类型 32768到32767
integer 4字节 整数类型 2147483648到2147483647
bigint 8字节 大范围整数类型 -9233203685477808到9223203685477807
decimal 可变 用户指定 精度小数点前131072位小数点后16383位
numeric 可变 用户指定 精度小数点前131072位小数点后16383位
real 4字节 变长不精确 6位十进制精度
double precision 8字节 变长不精确 15位十进制精度
smallserial 2字节 smallint I自增序列 1到32767
serial 4字节 Integer自增序列 1到2147483647
bigserial 8字节 bigint自增序列 1到922372036854775807
money 8字节 金钱类型
字符类型 类型 长度 说明 varchar(n),character varying(n) 变长 字符最大数有限制 char(n),character(n) 定长 固定长度字符串字符数没达到最大值则使用空白填充 text 变长 无长度限制
日期时间
类型 长度 说明 范围 与其他db比较 基本操作
2.1数据库操作
//创建数据库
CREATE DATABASE 库名
//在创建数据库时指定参数信息 WITH OWNER:所有者 ENCODING:编码格式
CREATE DATABASE 库名 WITH OWNER postgres ENCODING ‘utf-8’
//修改数据库名称
ALTER DATABASE 旧库名 RENAME TO 新库名
//修改连接限制数
ALTER DATABASE 库名 CONNECTION LIMIT 20
//删除数据库
DROP DATABASE 库名
2.2表操作
//创建表
CREATE TABLE 表名(
字段1 类型1,
字段2 类型2
);
例:
一,class_info表
create table class_info
( id serial not null constraint class_info_pk primary key, name varchar, write_date timestamp
);
serial not null constraint student_pk primary key,
serial 列被设置为 not null并且有一个名为 student_pk 的主键约束。
主键的作用是确保表中的每个数据行都可以被唯一地标识并且主键值不能重复或为空。在创建主键约束后系统会自动检查插入的数据是否违反了主键的唯一性要求如果有重复的主键值或缺少主键值就会抛出错误阻止插入操作。 comment on table student is 学生表; comment on column student.name is 名称;
给名为 student 的表添加注释注释内容为 学生表用于描述表的作用或用途。 -- id serial not null 表示id自增 -- id integer not null 表示id不自增 二,studen 表 create table student
( id serial not null constraint student_pk primary key, name varchar, class_id integer references class_info(id), //references 外键 height numeric, weight numeric, write_date timestamp
);
//外键
外来键是一个(或数个)指向另外一个表格主键的栏位。
假设我们有两个表格一个 CUSTOMER 表格里面记录了所有顾客的资料另一个 ORDERS 表格里面记录了所有顾客订购的资料。在这里的一个限制就是所有的订购资料中的顾客都一定是要跟在 CUSTOMER 表格中存在。在这里我们就会在 ORDERS 表格中设定一个外来键而这个外来键是指向 CUSTOMER 表格中的主键。这样一来我们就可以确定所有在 ORDERS 表格中的顾客都存在 CUSTOMER 表格中。换句话说ORDERS表格之中不能有任何顾客是不存在于 CUSTOMER 表格中的资料。 CUSTOMER 表格 栏位名 性质 SID 主键 Last_Name First_Name
ORDERS 表格 栏位名 性质 Order_ID 主键 Order_Date Customer_SID 外来键 Amount 2.3表操作
//修改表名
ALTER TABLE 旧表名 RENAME TO 新表名
//修改字段名
ALTER TABLE 表名 RENAME 旧字段 TO 新字段
//修改字段类型
ALTER TABLE 表名 ALTER COLUMN 字段 TYPE 类型(VARCHAR(40))
//删除字段
ALTER TABLE 表名 DROP COLUMN 字段
//添加字段
ALTER TABLE 表名 ADD COLUMN 字段 类型 //删除表
DROP TABLE 表名
//删除前进行判断
DROP TABLE IF EXISTS 表名
一般drop table if exists是数据库里面的后面接表名如drop table if exists xxx_book意思就是如果数据库中存在xxx_book表就把它从数据库中drop掉。 2.4往表中插入数据
//插入数据
INSERT INTO 表名 VALUES(1,阿道夫,2022-10-10,NULL)
//指定字段插入数据
INSERT INTO 表名 (id,name) VALUES (‘2’,’王老五’); 批量导入
//将表数据插入到新表中
INSERT INTO 新表名 SELECT * FROM 表名;
//指定字段批量插入
INSERT INTO student1 (id,name) SELECT id, name FROM student;
往新表中插入其他表的指定字段数据
INSERT INTO employee (e_id, name) SELECT id, name FROM company WHERE name IS NOT NULL;
//往employee(e_id) 和 (name) 字段 插入 company表的 id name字段的值 如果name不为空的话 2.5 修改表数据
//更新数据将id等于2的用户名改成张三 ,如果不指定更新条件会全局更新
UPDATE 表名 SET name ‘张三’ WHERE id 2 2.6删除表数据
//删除id等于2的表数据
DELETE FROM 表名 WHERE id 2
//删除id在1到3的表数据
DELETE FROM student WHERE id BETWEEN 1 and 3; //清空数据表DELETE from student;
TRUNCATE TABLE student; 2.7表查询
//查询所有字段内容
SELECT * FROM 表名
//批量字段查询
SELECT id, name FROM student;
// 多表查询
SELECT student.name, student1.name FROM student;
// 给表取别名后查询简化代码
SELECT s.id, s.name FROM student s; 2.7.1单表指定条件查询
//in关键字查询 查询id为135的成员
SELECT id,name FROM 表名 WHERE id IN (1,3,5)
//between and 关键字查询在什么之间
SELECT id,name,birthday FROM 表名 WHERE birthday BETWEEN 2020-10-10 AND 2024-10-10
//模糊查询,查询所有姓张的用户
SElECT id, name FROM 表名 WHERE name LIKE ‘张%’ 2.7.2单表指定条件复杂查询 //查询所有字段内容
SELECT * FROM student;
//只显示前3条数据
SELECT * FROM student LIMIT 3;
//查询三条数据从第二条开始
SELECT * FROM student LIMIT 3 OFFSET 2;
//查询姓名非空内容
SELECT id,name FROM student where name is NOT null;
// 1 or 3 1与3 ;ORDER BY id ASC 按id升序 ORDER BY id DESC 按id降序 默认升序
SELECT id,name FROM student where id1 OR id3 ORDER BY id ; 2.7.3 多表查询
//创建一个班级表id为主键 id int PRIMARY KEY,
//创建学生表id为主键classid为外键关联表class的id
CONSTRAINT pk_student_id FOREIGN KEY(classid) REFERENCES class(id) //隐式内连接关联classid显示student成员所在班级
SELECT student.id, class.id,student.name, class.name FROM student, class WHERE student.classid class.id;
//显示内连接,INNER JOIN不返回空值LEFT JOIN 左连接RIGHT JOIN 右连接不能匹配的数据也返回
//INNER JOIN所以结果中只返回匹配的数据不会有空值出现。
SELECT student.id, class.id,student.name, class.name
FROM student INNER JOIN class ON student.classid class.id ; 例子:
SELECT c.id, c.name,c.address,e.huji,e.work_time,e.phone
FROM employee AS e
INNER JOIN company AS c ON e.e_id c.id; 子查询
子查询或称为内部查询、嵌套查询指的是在 PostgreSQL 查询中的 WHERE 子句中嵌入查询语句。
一个 SELECT 语句的查询结果能够作为另一个语句的输入值
//EXISTS关键字子查询
SELECT * FROM student WHERE EXISTS
(SELECT class.id FROM class WHERE class.name 二班 AND student.classid class.id); //IN 关键字子查询
SELECT * FROM student WHERE student.classid IN
(SELECT class.id FROM class WHERE class.name 二班 ); 查询结果合并操作
UNION 可去重复 执行速度慢
UNION ALL 不可去重复 执行速度快
运算符 3.1算术运算符 - * %
3.2比较运算符 返回t f
3.3 逻辑运算符 NOT(逻辑非) AND(逻辑与) OR(逻辑或) //判断2是否在1~3之间 T
SELECT 2 BETWEEN 1 AND 3; //判断2是否在234集合中 T
SELECT 2 in (2,3,4); //like运算符模糊匹配 %代表多个字符 _代表一个字符
SELECT abc LIKE a%, --T abc LIKE _a_, --F abc LIKE _b_, --T abc NOT LIKE _b_; --F SELECT LEAST(1,2,3), --返回最小值1 GREATEST(1,2,3); --返回最大值3 函数
4.1数值函数 SELECT 函数字段名 from 表名 !!!!!
4.2字符串函数 SELECT 函数字段名 from 表名!!!!
4.3日期时间函数 CURRENT_DATA 2023-08-03
CURRENT_TIME 18:18:01.41219808
NOW 2023-08-03 18:18:01.41219808 EXTRACT使用 (相当于转换时间格式) 自定义函数
CREATE FUNCTION //声明创建函数
ADD(INTEGER,INTEGER) //定义函数名称 RETURNS INTEGER //定义函数返回值
ASSELECT $1 $2; //定义函数体 LANGUAGE SQL //用以实现函数的语言名字
RETURNS NULL ON NULL INPUT; //定义参数为NULL时处理情况 例子: 数据库索引 使用索引的优缺点 优点 通过创建唯一的索引可以保证数据库表中每一行数据的唯一性。 可以大大提高查询速度 加速表与表之间的连接 减少查询中分组和排序的时间 缺点 创建和维护索引耗费时间数据量越多耗费的时间越多 索引需要占用物理空间 对表的数据进行增加、删除、修改的时候索引也需要动态维护降低了数据的维护速度。 //-- 创建索引 此处默认使用B-tree
CREATE INDEX student_name_index ON student(name);
//-- 删除索引
DROP INDEX student_name_index; 数据库视图
使用视图具有 简单化、安全性、逻辑数据独立性
--创建视图top3展示id,name,birthday 条件是id3 并且按id降序
CREATE VIEW top3 AS SELECT id,name,birthday FROM student where id 3 ORDER BY id desc;
--查看视图
SELECT * FROM top3; --删除视图 DROP VIEW top3; 主键 外键
主键 使用PRIMARY KEY语句设置为主键
外键 CONSTRAINT pk_student_id FOREIGN KEY(classid) REFERENCES class(id) 关联其他表的主键 约束
主键与约束的区别主键的值是非空加唯一且一个表只能有一个主键可以有多个约束 // UNIQUE 唯一约束// NOT NULL 非空约束// DEFAULT 默认值约束
例子:
CREATE TABLE student(
id INT UNIQUE, // UNIQUE 唯一约束
name VARCHAR(30) NOT NULL, // NOT NULL 非空约束
birthday DATE,
score NUMERIC(5,2) DEFAULT 0.0 // DEFAULT 默认值约束
);