[Serie SQL] Aprenda PostgreSQL desde cero y aumente los permisos y el tiempo

[Serie SQL] Aprenda la subconsulta de bloqueo de transacciones de PostgreSQL desde cero_blog-CSDN de Edward.W icono-default.png?t=N6B9https://blog.csdn.net/u013379032/article/details/131841058El artículo anterior presentó transacciones, bloqueos y subconsultas

Las transacciones son un poco como operaciones atómicas: deben completarse, o se completan todas o no se completa ninguna, y las cosas no se pueden hacer a medias.

Hay dos tipos principales de bloqueos, bloqueos compartidos y bloqueos exclusivos, legibles pero no escribibles y no legibles ni escribibles, y bloqueos detallados a nivel de fila.

En cuanto a las subconsultas, en realidad son declaraciones de consulta SQL anidadas, que son algo similares a with.

Esta vez introduciremos el incremento automático de puntos, los permisos y el tiempo.

autocreciente

        El incremento automático, como sugiere el nombre, aumenta automáticamente y genera un número único cuando se insertan nuevos registros en la tabla.

        Cuando insertamos una tabla, siempre hay un número de ID. Esto generalmente está configurado para que se incremente automáticamente y puede mostrar cuántas filas hay. Sin embargo, este campo generalmente no lo insertamos nosotros, de lo contrario no sabríamos cuál es el ID de la última fila fue ¿Luego aumentarla e insertarla nuevamente? En este momento, todavía confiamos en las palabras clave de Postgres.

El incremento automático de PostgreSQL tiene tres alcances principales:

Smallserial 1-32767, debido a que ocupa 2 bytes en el disco, es 2 ^ 16, porque un byte tiene 8 bits y el rango máximo representado por 16 bits es 32767

serial 1-2147483647, ocupa 4 bytes en el disco, por lo que es 2^32

bigserial 1-9223372036854775801, ocupa 8 bytes en el disco, por lo que es 2^64

Veamos directamente un ejemplo:

#开始建表
CREATE TABLE biztest (  
 id SERIAL PRIMARY KEY,  
 name VARCHAR(255)  
);  

#插入数据
INSERT INTO biztest (name) VALUES ('张三'); 

testdb=# select * from biztest;
 id | name 
----+------
  1 | 张三
(1 row)

testdb=# INSERT INTO biztest (name) VALUES ('李四');  
INSERT 0 1
testdb=# select * from biztest;
 id | name 
----+------
  1 | 张三
  2 | 李四
(2 rows)

Aquí se crea una tabla y la etiqueta de serie se agrega al campo de identificación, lo que demuestra que este campo se puede incrementar automáticamente.

Puedes ver que cuando insertamos datos, no insertamos el valor de id, pero el id aumentará automáticamente.

Permisos

        Cuando se crea un objeto de base de datos, se asigna un propietario. Sólo su propietario puede modificar o eliminar un objeto de base de datos. Si desea permitir que otros roles de usuario lo utilicen, debe establecer permisos.

Existen principalmente los siguientes tipos de permisos:

1. Privilegios de acceso: determina quién puede consultar o modificar objetos o datos de bases de datos específicos. Los derechos de acceso se pueden controlar de varias maneras:

  • Permiso SELECCIONAR: permite a los usuarios consultar tablas, vistas u otros objetos de bases de datos específicos.
  • Permiso INSERTAR: permite a los usuarios insertar datos en tablas, vistas u otros objetos de base de datos específicos.
  • Permiso ACTUALIZAR: permite a un usuario modificar datos en una tabla, vista u otro objeto de base de datos específica.
  • Permiso ELIMINAR: permite a un usuario eliminar datos de una tabla, vista u otro objeto de base de datos específica.

2. Insertar privilegios: determina quién puede insertar datos en una tabla, vista u otro objeto de base de datos específica. Los permisos de inserción se pueden controlar de las siguientes maneras:

  • Permiso INSERTAR: permite a los usuarios insertar datos en tablas, vistas u otros objetos de base de datos específicos.
  • Permiso SELECCIONAR: permite a un usuario consultar una tabla, vista u otro objeto de base de datos específica en preparación para una operación de inserción.

3. Privilegios de consulta: determina quién puede consultar objetos o datos de bases de datos específicos. Los permisos de consulta se pueden controlar de las siguientes maneras:

  • Permiso SELECCIONAR: permite a los usuarios consultar tablas, vistas u otros objetos de bases de datos específicos.
  • Permiso JOIN: permite a los usuarios realizar operaciones de unión para conectar una tabla con otra tabla u otros objetos de la base de datos.

4. Modificar permisos (Actualizar privilegios): determina quién puede modificar objetos o datos específicos de la base de datos. Los permisos de modificación se pueden controlar de las siguientes maneras:

  • Permiso ACTUALIZAR: permite a un usuario modificar datos en una tabla, vista u otro objeto de base de datos específica.
  • Permiso ELIMINAR: permite a un usuario eliminar datos de una tabla, vista u otro objeto de base de datos específica.

5. Privilegios de control: determina quién puede realizar cambios en los objetos de la base de datos, como agregar, eliminar, modificar columnas o restricciones, etc. Los permisos de control se pueden controlar de las siguientes maneras:

  • Permiso ALTER: permite a un usuario realizar cambios en una tabla, vista u otro objeto de base de datos específica, como agregar, modificar o eliminar columnas.
  • Permiso DROP: permite al usuario eliminar tablas, vistas u otros objetos de base de datos específicos.

Ejemplos de operación específicos:

#创建一个叫做guest的角色
testdb=# create role guest;
CREATE ROLE


#授予这个角色students表的select权限
testdb=# grant select on students to guest;
GRANT

#授予sutends表的全部权限
testdb=# grant all on students to guest;
GRANT


#回收授权
testdb=# revoke all on students from guest;
REVOKE

#删除用户
testdb=# 
testdb=# drop user guest;
DROP ROLE
testdb=#

hora y fecha

        Además de los tipos básicos de la base de datos, los más especiales deberían ser la hora y la fecha. PostgreSQL admite los siguientes tipos de fecha y hora:

  1. Tipo de tiempo: PostgreSQL admite múltiples tipos de tiempo, incluidos tipos de marca de tiempo (como marca de tiempo, tipo de marca de tiempo) y tipos de intervalo de tiempo (como tipo de intervalo). Entre ellos, el tipo timeSTAMPTZ contiene información de zona horaria, mientras que el tipo de marca de tiempo no contiene información de zona horaria. El tipo de intervalo representa un intervalo de tiempo, como minutos, horas, días, meses, años, etc.
  2. Tipo de fecha: PostgreSQL admite tipos de fecha, incluidos tipos de fecha (como el tipo de fecha) y tipos de fecha y hora (como el tipo de fecha y hora). El tipo de fecha representa una fecha, mientras que el tipo de fecha y hora representa una fecha y hora.
  3. Funciones de fecha y hora: PostgreSQL proporciona una gran cantidad de funciones de fecha y hora, como obtener la hora actual, obtener la fecha actual, obtener la marca de tiempo actual, calcular diferencias horarias, etc. Por ejemplo, puede usar la función now() para obtener la hora actual, la función current_date para obtener la fecha actual y la función epoch para obtener la marca de tiempo actual.
  4. Formato de fecha y hora: PostgreSQL proporciona funciones de formato de fecha y hora, como la función to_char(), la función to_date(), la función to_timestamp(), etc. Estas funciones pueden convertir horas y fechas a diferentes formatos, como cadenas, tipos de fecha y hora, etc.

Vayamos directamente al ejemplo:

#创建一个表,里面包含了很多timestamptz和date的日期用于示例

testdb=# create table teacher(
testdb(# id serial primary key,
testdb(# create_at timestamptz not null default now(),
testdb(# update_at timestamptz not null default now(),
testdb(# birthdate date not null
testdb(# );
CREATE TABLE

#我们插入一个date类型,timestamptz已经设定了default,就不插入了
testdb=# insert into teacher (birthdate) values (current_date);
INSERT 0 1


testdb=# select * from teacher;
 id |           create_at           |           update_at           | birthdate  
----+-------------------------------+-------------------------------+------------
  1 | 2023-07-21 14:05:51.588512+00 | 2023-07-21 14:05:51.588512+00 | 2023-07-21
(1 row)

Las siguientes son algunas de las funciones más utilizadas:

  1. now(): obtiene la marca de tiempo actual.
  2. current_date: obtiene la fecha actual.
  3. current_time: obtiene la hora actual.
  4. época: obtiene la marca de tiempo actual en segundos.
  5. extract(): extrae la unidad de tiempo especificada (como año, mes, día, hora, minuto, etc.) del valor de fecha y hora.
  6. date_trunc(): trunca el valor de fecha y hora a la unidad de tiempo especificada (como año, mes, día, hora, minuto, etc.).
  7. date_add(): suma o resta la unidad de tiempo especificada (como año, mes, día, hora, minuto, etc.) del valor de fecha y hora.
  8. date_diff(): Calcula la diferencia horaria (en días, semanas, meses, años, etc.) entre dos valores de fecha y hora.
  9. date_format(): formatea el valor de fecha y hora en el formato especificado.
  10. date_parser(): analiza una cadena en un valor de fecha y hora.
  11. time_add(): suma o resta la unidad de tiempo especificada (como horas, minutos, etc.) del valor de tiempo.
  12. time_diff(): Calcula la diferencia horaria (en horas, minutos, etc.) entre dos valores de tiempo.
  13. time_format(): formatea el valor de tiempo en el formato especificado.
  14. time_parser(): analiza una cadena en un valor de tiempo.
  15. intervalo_add(): suma o resta la unidad de tiempo especificada (como minutos, horas, días, etc.) del valor del intervalo de tiempo.
  16. intervalo_diff(): Calcula la diferencia de tiempo (en unidades de tiempo específicas) entre dos valores de intervalo.
  17. intervalo_format(): formatea el valor del intervalo de tiempo en el formato especificado.
  18. intervalo_parser(): analiza una cadena en un valor de intervalo de tiempo.

Supongo que te gusta

Origin blog.csdn.net/u013379032/article/details/131860669
Recomendado
Clasificación