[Introducción básica a postgresql] Cree tablas de datos, coloque datos permanentes en tablas ordinarias y coloque resultados intermedios en tablas temporales, con diseño SQL de caso comercial de tarjetas de crédito

Crear mesa

Contenido de la columna :

Contribuciones de código abierto :

Página de inicio personal : Mi página de inicio
Comunidad de gestión : Base de datos de código abierto
Lema: Cuando el cielo es fuerte, un caballero se esfuerza por superarse; cuando el terreno es bueno, un caballero porta grandes virtudes.

Serie de artículos

Prefacio

La base de datos postgresql es un dato relacional general que es comparable a los datos comerciales en bases de datos de código abierto y se está volviendo cada vez más popular en la industria.

Debido a que es una base de datos de código abierto, no solo divulga el código fuente, sino que también tiene muchos casos de uso y complementos fáciles de usar, por lo que gradualmente se ha convertido en el pionero y estándar de las bases de datos. entenderlo desde el uso hasta los principios;

Si está aprendiendo programación, también puede adquirir una gran cantidad de conocimientos de programación, estructuras de datos y habilidades de programación. También hay muchos diseños arquitectónicos exquisitos, ideas en capas e ideas que se pueden personalizar de manera flexible.

Esta columna presenta principalmente el uso básico de postgresql, el mantenimiento y la administración de bases de datos. A través de estos usos, puede comprender los principios de la base de datos y comprender lentamente qué tipo de base de datos es postgresql, qué puede hacer y cómo proporcionar una buena servicios. Lo más importante es que este conocimiento esté todo en la entrevista. Elementos requeridos.

Descripción general

Las operaciones más comunes al utilizar una base de datos son crear tablas, agregar, eliminar, modificar y consultar datos. Como unidad lógica del soporte de datos real, la tabla está conectada a cada módulo de la base de datos;

La definición de la tabla debe cumplir con los requisitos de integridad. La integridad incluye: integridad de la entidad, unicidad de los datos; integridad del dominio, los valores de cada campo son legales y válidos; integridad referencial, las restricciones de asociación entre tablas; naturaleza de integridad definida por el usuario. , se definen algunas restricciones adicionales en función de las necesidades comerciales;

Echemos un vistazo a cómo crear una tabla que satisfaga nuestras necesidades comerciales;

  • Sintaxis SQL para crear tablas
  • Definir campos y tipos de datos.
  • Establecer claves primarias y externas
  • Crear índice

Sintaxis para crear tablas

En PostgreSQL, hay dos métodos de almacenamiento para tablas.
Uno es una tabla común y corriente, que se almacenará en el directorio de la base de datos correspondiente y se comparte dentro de la base de datos, lo que significa que cualquiera con permiso puede acceder a ella; el otro es temporal
. , la tabla temporal se eliminará automáticamente cuando finalice la sesión o la transacción, es decir, se puede usar temporalmente, solo se puede usar en la sesión actual y otras sesiones no pueden ver su existencia;

Crear una tabla normal

La sintaxis básica es que CREATE TABLE 表名(类型 列名,...);el nombre de la tabla, el tipo y el nombre de la columna se pueden reemplazar, y el tipo está predefinido en la base de datos; el nombre no debe exceder los 64 caracteres;

CREATE TABLE COMPANY (  
    ID INT PRIMARY KEY NOT NULL,  
    NAME TEXT NOT NULL,  
    AGE INT NOT NULL,  
    ADDRESS CHAR(50),  
    SALARY REAL  
);

Si desea especificar un esquema, el nombre de la tabla debe escribirse en el formato nombre del esquema.nombre de la tabla, para que se cree bajo el esquema especificado;

Crear tabla temporal

Al crear una tabla temporal, debe utilizar palabras clave temp. La tabla creada no se puede ver cuando otro cliente inicia sesión; también se eliminará automáticamente después de que el cliente actual cierre sesión.

create temp table result(id int, slary real);

Las tablas temporales se utilizan principalmente para almacenar algunos resultados intermedios. Por ejemplo, si necesita calcular algunos datos después de combinar varias tablas, primero puede colocar los resultados de la consulta en la tabla temporal y estos se pueden calcular lentamente;

Definiciones de campos y tipos de datos

Tipos de datos admitidos

La siguiente es una lista de tipos comunes admitidos por postgresql:

nombre Alias describir
Empezando tu8 Entero de 8 bytes con signo
gran serie serie8 Entero de 8 bytes que aumenta automáticamente
bit [ (n) ] Cadena de bits de longitud fija
poco variable [ (n) ] deambular [ (n) ] cadena de bits de longitud variable
booleano booleano Booleano lógico (verdadero/falso)
caja Caja ordinaria en avión.
bytea Datos binarios ("matriz de bytes")
carácter [ (n) ] carácter [ (n) ] Cadena de longitud fija
carácter variable [ (n) ] varchar [ (n) ] cadena de longitud variable
cidro Dirección de red IPv4 o IPv6
círculo círculo en el avión
fecha Fecha del calendario (año, mes, día)
Precisión doble flotador8 Número de coma flotante de doble precisión (8 bytes)
inet Dirección de host IPv4 o IPv6
entero int, int4 Entero de 4 bytes con signo
intervalo [ campos ] [ § ] período
json Datos JSON de texto
jsonb Datos binarios JSON, descompuestos
línea Cola infinitamente larga en el avión.
lsg segmento de recta en el plano
macadr Dirección MAC (control de acceso a medios)
Macaddr8 Dirección MAC (control de acceso a medios) (formato EUI-64)
dinero cantidad de moneda
numérico [ (p, s) ] decimal [ (p, s) ] Números exactos con precisión seleccionable.
camino camino geométrico en el plano
pg_lsn Número de secuencia de registro de PostgreSQL
pg_instantánea Instantánea de ID de transacción a nivel de usuario
punto Puntos geométricos en el plano.
polígono Camino geométrico cerrado en el plano.
real flotador4 Número de coma flotante de precisión simple (4 bytes)
pequeño int2 Entero de 2 bytes con signo
serie pequeña serie2 Entero de 2 bytes que aumenta automáticamente
de serie serie4 Entero de 4 bytes que aumenta automáticamente
texto cadena de longitud variable
hora [ § ] [ sin zona horaria ] Hora del día (sin zona horaria)
hora [ § ] con zona horaria timetz Hora del día, incluida la zona horaria.
marca de tiempo [ § ] [ sin zona horaria ] Fecha y hora (sin zona horaria)
marca de tiempo [ § ] con marca de tiempo de zona horariatz Fecha y hora, incluida la zona horaria

Los formatos admitidos son muy ricos, incluidos números, hora, formatos MAC y json, e incluso varias rutas. Aquí hay solo una lista parcial. Consulte el manual oficial para obtener más detalles;

Definición de campo

Cabe señalar aquí que el número máximo de columnas en una tabla no excede las 1600. De hecho, debido a las restricciones de longitud de los datos de los campos, el límite efectivo suele ser menor;

Configuración de clave primaria y clave externa

Por lo general, las claves primarias y externas se agregan a la tabla para lograr la integridad de la entidad y las restricciones de integridad referencial;

Clave primaria

La clave principal es la clave candidata que identifica de forma única las filas de la tabla. Una tabla tiene solo una clave principal, también llamada clave principal.

主键可以由一个字段或者多个字段组成,分别称为单字段主键或多字段主键。主键的值用于唯一地标识表中的某一条记录,在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。

主关键字是可选的,并且可在CREATE TABLE或ALTER TABLE语句中定义。

如果在创建表时没有加主键,可以修改表定义的方式添加;一般在批量加载数据时,先不指定主键,加载完成后再指定主键,会提升加载的性能;

要使用ALTER TABLE语句添加主键,可以使用以下语法:

ALTER TABLE table_name
ADD PRIMARY KEY (column_name);

其中,table_name是要添加主键的表名,column_name是要指定为主键的列名。

请注意,添加主键之前,确保表中没有重复的值存在于该列中。如果存在重复值,将无法添加主键。

示例:
假设有一个名为users的表,其中有一个名为id的列,您想将其指定为主键。可以使用以下语句:

ALTER TABLE users
ADD PRIMARY KEY (id);

这将使id列成为users表的主键。

外键

外键是指一个表中的一个或多个字段,它们的值与另一个表中的字段值相对应,用来表示两个表之间的联系。

需要注意的是,一个表的外键,在引用表中一定是主键,这样对应关系是明确的;

外键的创建也同样可以CREATE TABLE或ALTER TABLE语句中定义;

要使用ALTER TABLE语句添加外键,可以使用以下语法:

示例:
假设有两个表:学生表(students)和课程表(courses)。学生表中有一个学生ID字段(student_id),课程表中有一个课程ID字段(course_id)。如果要记录每个学生所选的课程,可以在学生表中添加一个外键,指向课程表中的课程ID字段。可以使用以下语句:

ALTER TABLE students
ADD FOREIGN KEY (student_id) REFERENCES courses(course_id);

这将使学生表中的student_id列成为外键,指向课程表中的course_id列。

创建索引

索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。它是针对表而建立的,由数据页面以外的索引页面组成,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。索引数据一般非常小,可以快速加载到内存进行查找,再根据查找到的索引项找到数据表的数据项;

创建索引的语句示例:

CREATE INDEX index_name ON table_name (column_name);

语句中,index_name 是索引的名称,table_name 是表的名称,column_name 是要创建索引的列的名称。可以根据需要指定多个列,以创建复合索引。

索引创建时,默认创建的索引算法为btree,当然还有基于hash的索引,gin索引,gist索引等;这些在之后会介绍到;

选择经常用于查询条件的列作为索引列,这样索引才能被有效利用。如果查询条件中不包含索引列,那么索引将不会被使用。

案例演示

设计银行信用卡中心的数据库需要考虑以下几个方面:

  • 客户信息:包括客户的姓名、身份证号码、联系方式等。
  • 交易信息:包括交易时间、交易金额、交易类型等。
  • 账户信息:包括账户号码、账户余额、账户状态等。
  • 风险信息:包括信用评分、逾期次数、欠款金额等。

以下是一些银行信用卡中心的数据库设计示例和相应的SQL语句:

创建客户表:

CREATE TABLE customers (
  customer_id INT PRIMARY KEY,
  name VARCHAR(50),
  address VARCHAR(100),
  phone_number VARCHAR(20),
  email VARCHAR(50)
);

创建交易表:

CREATE TABLE transactions (
  transaction_id INT PRIMARY KEY,
  customer_id INT,
  transaction_date DATE,
  transaction_amount DECIMAL(10,2),
  transaction_type VARCHAR(20),
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

创建账户表:

CREATE TABLE accounts (
  account_number INT PRIMARY KEY,
  customer_id INT,
  account_balance DECIMAL(10,2),
  account_status VARCHAR(20),
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

创建风险信息表:

CREATE TABLE risk_info (
  customer_id INT PRIMARY KEY,
  credit_score INT,
  delinquency_count INT,
  arrears_amount DECIMAL(10,2),
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

查询客户的交易记录:

SELECT customers.name, transactions.transaction_date, transactions.transaction_amount, transactions.transaction_type
FROM customers
JOIN transactions ON customers.customer_id = transactions.customer_id;

查询客户的账户信息:

SELECT customers.name, accounts.account_number, accounts.account_balance, accounts.account_status
FROM customers
JOIN accounts ON customers.customer_id = accounts.customer_id;

结尾

非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!

作者邮箱:[email protected]
如有错误或者疏漏欢迎指出,互相学习。

注:未经同意,不得转载!

Supongo que te gusta

Origin blog.csdn.net/senllang/article/details/132794862
Recomendado
Clasificación