Comprender la instrucción sql en un artículo

sql

sintaxis basica sql

Las declaraciones SQL deben comenzar con palabras clave y también deben terminar con; las declaraciones SQL se pueden escribir en una línea o en varias líneas

comandos comunes sql

INSERTAR EN (aumentar)

El comando INSERT INTO inserta nuevos datos en la base de datos, su uso es el siguiente:

INSERT INTO table_name( column1, column2....columnN)
VALUES ( value1, value2....valueN);

ELIMINAR (eliminar)

El comando DELETE se usa para eliminar datos de la base de datos y su uso es el siguiente:

DELETE FROM table_name
WHERE  {CONDITION};

ACTUALIZAR (cambiar)

El comando UPDATE se usa para actualizar los datos en la base de datos y su uso es el siguiente:

UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE  CONDITION ];

SELECCIONAR (marcar)

El comando SELECT se usa para consultar (seleccionar) datos de la base de datos y se usa de la siguiente manera:

SELECT column1, column2....columnN
FROM   table_name;

CREAR MESA

El comando CREATE TABLE se usa para crear una nueva tabla de datos y su uso es el siguiente:

CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);

ALTERAR TABLA

El comando ALTER TABLE se usa para modificar tablas de datos. ALTER TABLE se puede utilizar para modificar los campos de la tabla de datos, por ejemplo:

ALTER TABLE table_name {
   
   ADD|DROP|MODIFY} column_name {data_type};

También se puede utilizar para modificar el nombre de la tabla de datos, por ejemplo:

ALTER TABLE table_name RENAME TO new_table_name;

MESA PLEGABLE

El comando DROP TABLE se utiliza para eliminar una tabla de datos, su uso es el siguiente:

DROP TABLE table_name;

CREAR BASE DE DATOS

CREATE DATABASE se usa para crear una nueva base de datos, y su uso es el siguiente:

CREATE DATABASE database_name;

CREAR ÍNDICE

El comando CREATE INDEX se usa para crear un índice y su uso es el siguiente:

CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);

ÍNDICE DE GOTA

El comando DROP INDEX se utiliza para eliminar un índice, su uso es el siguiente:

ALTER TABLE table_name
DROP INDEX index_name;

Uso básico de comandos

crear base de datos

Utilice crear base de datos nombre_base de datos; se puede utilizar el comando
crear una base de datos denominada nombre_base_datos

show databases

para mostrar todos los nombres de bases de datos

Asegúrese de tener privilegios de administrador antes de crear

soltar base de datos

Use drop database nombre_base_de_datos;
para eliminar la base de datos y completar la ejecución. Antes de usar, asegúrese de que desea ejecutar;

usar nombre_de_base_de_datos

use database_name significa que desea usar la base de datos, debe asegurarse de que la base de datos exista claramente antes de usarla

MESA CRAETE

Crear una tabla Una vez que se crea la tabla, no se pueden cambiar las columnas, pero se pueden cambiar las filas.

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

PRIMARY KEY representa la clave principal

CREATE TABLE website (
    id      INT              NOT NULL   AUTO_INCREMENT,
    name    VARCHAR(20)      NOT NULL,
    url     VARCHAR(30)                 DEFAULT '',
    age     TINYINT UNSIGNED NOT NULL,
    alexa   INT UNSIGNED     NOT NULL,
    uv      FLOAT                       DEFAULT '0',
    country CHAR(3)          NOT NULL   DEFAULT '',
    PRIMARY KEY (`id`)
);

NOT NULL significa que los datos no pueden estar vacíos
AUTO_INCREMENT significa la secuencia de crecimiento automático;
DEFAULT significa el valor predeterminado del campo
PRIMARY KEY significa la clave principal

Después de crear la tabla, podemos ver la estructura de la tabla a través del siguiente comando

desc website
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| id      | int              | NO   | PRI | NULL    | auto_increment |
| name    | varchar(20)      | NO   |     | NULL    |                |
| url     | varchar(30)      | YES  |     |         |                |
| age     | tinyint unsigned | NO   |     | NULL    |                |
| alexa   | int unsigned     | NO   |     | NULL    |                |
| uv      | float            | YES  |     | 0       |                |
| country | char(3)          | NO   |     |         |                |
+---------+------------------+------+-----+---------+----------------+

MESA PLEGABLE

Cuando no desee utilizar una determinada tabla, puede intentar eliminarla,

drop table table_name

renombrar tabla

sql admite dos formas de cambiar el nombre de las tablas

ALTER TABLE old_table_name  RENAME TO new_table_name; 
RENAME TABLE old_table _name TO new_table_name;

insertar datos


Hay dos formas principales de insertar datos en INSERT INTO

  1. Insertar datos de acuerdo con la columna especificada
INSERT INTO table_name (column1, column2, column3,...columnN) 
VALUES (value1, value2, value3,...valueN);
  1. Insertar datos en todas las columnas
INSERT INTO table_name VALUES (value1,value2,value3,...valueN);

primer ejemplo

insert into website values(1,'淘宝','https://www.tabao.com',10,2,100.1,'cn');
 insert into website values(2,'淘宝','https://www.tabao.com',10,2,100.1,'cn');

Segundo ejemplo

insert into website(name,url,uv) values('京东','https://www.jingdong.com',100.2);

Use seleccionar * del sitio web; para ver los datos en la tabla

+----+--------+--------------------------+-----+-------+--------+---------+
| id | name   | url                      | age | alexa | uv     | country |
+----+--------+--------------------------+-----+-------+--------+---------+
|  1 | 百度   | https://www.baidu.com    |  21 |     1 | 5010.5 | cn      |
|  2 | 淘宝   | https://www.tabao.com    |  10 |     2 |  100.1 | cn      |
|  3 | 京东   | https://www.jingdong.com |   2 |   100 |      0 | cn      |
+----+--------+--------------------------+-----+-------+--------+---------+
3 rows in set (0.00 sec)

Llenado mutuo entre mesas

Puede usar una tabla para completar otra tabla, pero la premisa es que la otra tabla también debe tener un conjunto de campos que puedan coincidir actualmente.

INSERT INTO first_table_name [(column1, column2, ... columnN)]
    SELECT column1, column2, ...columnN
    FROM second_table_name
    [WHERE condition];

selección de consulta

select devolverá una tabla temporal que muestra los datos que desea en el
formato

SELECT column1, column2, columnN
FROM table_name
WHERE conditions;

columna es el nombre de la clave;
nombre_tabla es el nombre de la tabla;
condiciones es el nombre de la condición de juicio

select name from website where id<2;

regresará

+--------+
| name   |
+--------+
| 百度   |
+--------+

las condiciones son opcionales y pueden ser ingresadas o no ingresadas
, si queremos ver todos los datos en la tabla, podemos usar

select * from website
+----+--------+--------------------------+-----+-------+--------+---------+
| id | name   | url                      | age | alexa | uv     | country |
+----+--------+--------------------------+-----+-------+--------+---------+
|  1 | 百度   | https://www.baidu.com    |  21 |     1 | 5010.5 | cn      |
|  2 | 淘宝   | https://www.tabao.com    |  10 |     2 |  100.1 | cn      |
|  3 | 京东   | https://www.jingdong.com |   2 |   100 |      0 | cn      |
+----+--------+--------------------------+-----+-------+--------+---------+

dónde

La cláusula where agrega condiciones de juicio, que se pueden usar en select update y delete

La condición después de donde puede ser <,>.=, u operadores lógicos como and, or, o juicios confusos como like y not like.

select * from website where id<5 and name like '%o%';

Significa id<5, y los datos con o en el nombre, el resultado es

+----+--------+------------------------+-----+-------+--------+---------+
| id | name   | url                    | age | alexa | uv     | country |
+----+--------+------------------------+-----+-------+--------+---------+
|  4 | google | https://www.goggle.com |  15 |    50 | 1000.2 | en      |
+----+--------+------------------------+-----+-------+--------+---------+

y和o

y significa y, o significa o, y puede entenderse como &&, o como ||

actualizar

Generalmente usamos actualizar con donde, de lo contrario, se cambiarán todos los datos, no recomendamos hacer esto

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

Ejemplo:
Antes de la modificación:

+----+----------------+--------------------------------+-----+-------+--------+---------+
| id | name           | url                            | age | alexa | uv     | country |
+----+----------------+--------------------------------+-----+-------+--------+---------+
|  1 | 百度           | https://www.baidu.com          |  21 |     1 | 5010.5 | cn      |
|  2 | 淘宝           | https://www.tabao.com          |  10 |     2 |  100.1 | cn      |
|  3 | 京东           | https://www.jingdong.com       |   2 |   100 |      0 | cn      |
|  4 | google         | https://www.goggle.com         |  15 |    50 | 1000.2 | en      |
|  5 | stack overflow | https://www.stack-overflow.com |  30 |    20 |  100.1 | en      |
+----+----------------+--------------------------------+-----+-------+--------+---------+

actualice el nombre del conjunto de sitios web = 'stack-overflow' donde id = 5;
después de la modificación:

+----+----------------+--------------------------------+-----+-------+--------+---------+
| id | name           | url                            | age | alexa | uv     | country |
+----+----------------+--------------------------------+-----+-------+--------+---------+
|  1 | 百度           | https://www.baidu.com          |  21 |     1 | 5010.5 | cn      |
|  2 | 淘宝           | https://www.tabao.com          |  10 |     2 |  100.1 | cn      |
|  3 | 京东           | https://www.jingdong.com       |   2 |   100 |      0 | cn      |
|  4 | google         | https://www.goggle.com         |  15 |    50 | 1000.2 | en      |
|  5 | stack-overflow | https://www.stack-overflow.com |  30 |    20 |  100.1 | en      |
+----+----------------+--------------------------------+-----+-------+--------+---------+

deleitar

Elimine los datos de la lista. El
uso es similar al de actualizar y se recomienda usar la instrucción where para filtrar.

me gusta

Me gusta y dónde se usan juntos para crear un efecto de coincidencia parcial.

Signo de porcentaje (%): Representa cero, uno o más caracteres arbitrarios.

Guión bajo (_): representa un solo carácter o número.

[charlist]: cualquier carácter individual en la lista de caracteres. Se puede usar un guión (-) para especificar un rango de caracteres según la codificación ASCII, por ejemplo:
[0-9] significa cualquier número del 0 al 9;
[az] significa letras minúsculas en inglés;
[a-zA-Z] significa Letras inglesas, no distingue entre mayúsculas y minúsculas;
[a-zA-Z0-9] significa letras inglesas y números arábigos.

[^charlist] o [!charlist]: cualquier carácter individual que no esté en la lista de caracteres. Como arriba, también se puede usar un guión (-) para especificar un rango de caracteres.

Ejemplo:

  1. DONDE uv LIKE '200%'
    encuentra valores en el campo uv que comienzan con 200.
  2. WHERE uv LIKE '%200%'
    encuentra valores que contienen 200 en el campo uv (200 puede estar en cualquier lugar al principio, al final o en el medio).
  3. WHERE uv LIKE '_00%'
    encuentra valores en el campo uv donde el segundo y tercer carácter son ambos 0.
  4. DONDE uv LIKE '2_%_%'
    encuentra cualquier valor en el campo uv que comience con 2 y tenga una longitud de al menos 3.
  5. DONDE uv LIKE '%2'
    busca valores terminados en 2 en el campo uv.
  6. DONDE name LIKE '%sh%'
    busca valores que contengan sh en el campo de nombre.
  7. DONDE nombre LIKE '[xyz]'
    encuentra valores que contienen al menos un carácter de xyz en el campo de nombre.
  8. DONDE name LIKE '[^ae]'
    encuentra valores que no contienen ninguno de los caracteres en ae en el campo de nombre.

parte superior

top también es una condición para juzgar que
la parte superior será seguida por un número para representar los primeros datos comenzando desde arriba.Para algunas bases de datos con una gran cantidad de datos, esto es muy necesario; se
ejecuta en el servidor sql

SELECT TOP 3 * FROM website;

Pero diferentes bases de datos tienen diferentes palabras clave,
por ejemplo, si usamos mysql, necesitamos usar limit en su lugar.

select * from website limit 3;

Si está utilizando Oracle, necesita ROWNUM en su lugar

SELECT * FROM website WHERE ROWNUM <= 3;

El significado de las tres declaraciones anteriores es el mismo, se pretende ver los primeros tres datos

ordenar por

order by se usa con la consulta, para ordenar la tabla temporal obtenida por la consulta

SELECT column_list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

Columna es el campo según el cual tomamos valores al ordenar
asc es en orden ascendente, desc es en orden descendente, el valor predeterminado es asc

+----+----------------+--------------------------------+-----+-------+--------+---------+
| id | name           | url                            | age | alexa | uv     | country |
+----+----------------+--------------------------------+-----+-------+--------+---------+
|  1 | 百度           | https://www.baidu.com          |  20 |     1 | 5010.5 | cn      |
|  2 | 淘宝           | https://www.tabao.com          |  20 |     2 |  100.1 | cn      |
|  3 | 京东           | https://www.jingdong.com       |  20 |   100 |      0 | cn      |
|  4 | google         | https://www.goggle.com         |  20 |    50 | 1000.2 | en      |
|  5 | stack-overflow | https://www.stack-overflow.com |  20 |    20 |  100.1 | en      |
+----+----------------+--------------------------------+-----+-------+--------+---------+
5 rows in set (0.01 sec)

seleccione * del pedido por alexa;

ordenar por alexa

seleccione * del pedido por alexa, uv,

Ordenar por uv cuando alexa son iguales

seleccionar * del sitio web ordenar por alexa desc, uv;

Según orden descendente de alexa, orden ascendente uv;

agrupar por

En algunos casos, se enfrentará el problema de agrupar, porque inevitablemente habrá algunos datos que son iguales entre las filas de la tabla.Podemos agrupar de acuerdo con los mismos datos, utilizando los siguientes métodos:

SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
ORDER BY column1, column2

La cláusula GROUP BY debe usarse con la declaración SELECT;
si hay una cláusula WHERE, entonces la cláusula WHERE debe colocarse antes de la cláusula GROUP BY;
si hay una cláusula ORDER BY, entonces la cláusula ORDER BY debe estar colocado después de la cláusula GROUP.

select name,sum(uv) from website group by name;

La suma de nombre y uv se muestra en la tabla temporal de la consulta, y el juicio se basa en el nombre

Cabe señalar que los datos que se muestran en la tabla deben ser los mismos en los que se basa más tarde

De acuerdo con la función de agregación sql, podemos reprocesar los datos en el grupo

La función SUM( ) puede sumar los valores del campo especificado; la
función COUNT( ) puede calcular el número de piezas de datos en un determinado grupo; la
función AVG( ) puede promediar los valores del campo especificado.

distinto

La palabra clave SQL DISTINCT debe usarse con la declaración SELECT para eliminar todos los registros duplicados en el conjunto de resultados, dejando solo un registro único.

A veces hay registros duplicados en la tabla de datos, si solo necesita uno de ellos, puede usar la palabra clave DISTINCT.

SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]

Los campos seguidos de distint deben repetirse todos antes de que puedan eliminarse.Después de la eliminación, la tabla original no se verá afectada, y los campos que se muestran en la nueva tabla temporal generada también son los campos después de distint;

restricciones sql

La restricción se refiere a las reglas que deben obedecer las columnas de datos de la tabla.Estas reglas se utilizan para limitar el tipo de datos insertados en la tabla, lo que puede garantizar la precisión y confiabilidad de cada dato.

Las restricciones pueden ser de nivel de columna o de tabla; las restricciones de nivel de columna se aplican solo a una columna, mientras que las restricciones de nivel de tabla se aplican a toda la tabla.

Aquí hay algunas restricciones comúnmente usadas en SQL:

NOT NULL: una restricción no nula que garantiza que no puede haber valores NULL en la columna.
DEFAULT: la restricción predeterminada, si no se especifica ningún valor, la columna proporcionará un valor predeterminado.
ÚNICO: Una restricción única que asegura que todos los valores en una columna sean diferentes.
PRIMARIO: Clave Clave principal, utilizada para identificar de forma única cada fila/registro en la base de datos.
FOREIGN: Clave clave externa, utilizada para identificar de forma única filas/registros de tablas en cualquier otra base de datos.
CHECK: Una restricción de verificación que asegura que todos los valores en una columna deben cumplir ciertas condiciones.
ÍNDICE: Índice, utilizado para recuperar u obtener rápidamente datos de la base de datos.

Crear restricciones

Al crear una tabla de datos, puede usar la declaración CREATE TABLE para especificar las reglas de restricción; después de crear la tabla de datos, también puede usar la declaración ALTER TABLE para agregar reglas de restricción.

eliminar restricción

Las restricciones definidas se pueden descartar mediante la instrucción ALTER TABLE con la opción DROP CONSTRAINT. Por ejemplo, para eliminar la clave principal en la tabla EMPLOYEES, use la siguiente instrucción:

ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;

nulo

La palabra clave nulo se usa para indicar un valor faltante o indefinido, indicando un valor nulo, no un valor 0 o un espacio

No podemos usar operadores de comparación como =, <, > para detectar valores NULL, pero debemos usar las palabras clave IS NULL o IS NOT NULL para detectar valores NULL.

Al crear una tabla de datos, puede especificar si cada valor es nulo o no

CREATE TABLE website (
    id      INT              NOT NULL   AUTO_INCREMENT,
    name    VARCHAR(20)      NOT NULL,
    url     VARCHAR(30),
    age     TINYINT UNSIGNED NOT NULL,
    alexa   INT UNSIGNED     NOT NULL,
    uv      FLOAT                       DEFAULT '0',
    country CHAR(3)          NOT NULL   DEFAULT '',
    PRIMARY KEY (`id`)
);

La palabra clave NOT NULL indica que el campo no puede ser nulo y se debe especificar un valor específico para el campo al insertar o actualizar registros. Los campos url y uv no usan la palabra clave NOT NULL, lo que significa que siguen siendo los predeterminados, lo que permite NULL. Tenga en cuenta que el campo uv especifica un valor predeterminado de 0, si no se proporciona ningún valor para el campo, su valor será 0; el campo url no especifica un valor predeterminado, y si no se proporciona ningún valor para el campo, su valor será ser NULO.

seleccione * del sitio web donde la edad no es nula
para consultar todas las filas cuya edad no es nula

no nulo

De forma predeterminada, se permite que el nombre del campo sea nulo, pero si a veces no queremos que sea nulo, podemos agregar no nulo (restricción no nula), luego debemos proporcionar un dato

null no significa que no hay valor, significa que el valor es desconocido.Si
ya hemos creado la tabla, entonces podemos usarla si queremos agregar una dependencia no nula

ALTER TABLE website
MODIFY url VARCHAR(30) NOT NULL;

defecto

Las restricciones SQL DEFAULT se utilizan para especificar un valor predeterminado para un campo.Al insertar datos en una tabla mediante una instrucción INSERT INTO, si no se proporciona un valor específico para el campo, se utiliza el valor predeterminado.

CREATE TABLE website (
    id      INT              NOT NULL   AUTO_INCREMENT,
    name    VARCHAR(20)      NOT NULL,
    url     VARCHAR(30),
    age     TINYINT UNSIGNED NOT NULL,
    alexa   INT UNSIGNED     NOT NULL,
    uv      FLOAT                       DEFAULT '10.0',
    country CHAR(3)          NOT NULL   DEFAULT '',
    PRIMARY KEY (`id`)
);

Si la tabla del sitio web ya se ha creado, la restricción DEFAULT se puede agregar al campo uv usando la declaración ALTER TABLE de la siguiente manera:

ALTER TABLE website
MODIFY uv FLOAT DEFAULT '10.0';

Las restricciones predeterminadas también se pueden eliminar con la ayuda de la declaración ALTER TABLE, de la siguiente manera:

ALTER TABLE website
ALTER COLUMN uv DROP DEFAULT;

único

Único significa un valor único en la tabla, y no pueden aparecer valores duplicados en otros registros.

La diferencia entre clave única y principal es que la clave principal no puede aparecer como nula, mientras que única permite que una parte de los datos sea nula.

Entonces podemos entender como

clave principal = único+no nulo
Un dato puede tener múltiples valores que son únicos, pero solo se puede usar un valor como clave principal

CREATE TABLE website (
    id      INT              NOT NULL   AUTO_INCREMENT,
    name    VARCHAR(20)      NOT NULL,
    url     VARCHAR(30),
    age     TINYINT UNSIGNED NOT NULL,
    alexa   INT UNSIGNED     NOT NULL   UNIQUE,
    uv      FLOAT                       DEFAULT '0',
    country CHAR(3)          NOT NULL,
    PRIMARY KEY (`id`)
);

Si la tabla ya está creada, entonces queremos agregar una restricción única a alexa, podemos:

ALTER TABLE website
MODIFY alexa UNIQUE;

me gustaría usar para múltiples adiciones

ALTER TABLE website
ADD CONSTRAINT myUniqueConstraint UNIQUE(alexa, url);

eliminar único

ALTER TABLE website
DROP INDEX myUniqueConstraint;

Clave primaria

La clave principal puede constar de uno o más campos, un identificador único

Si tanto la tabla del sitio web como el campo de identificación ya existen, puede usar el comando ALTER TABLE para agregar la clave principal con la siguiente sintaxis:

sitio web ALTER TABLE AGREGAR CLAVE PRIMARIA (id);

Si la tabla del sitio web ya existe, puede agregar la clave principal en los campos de id y url usando la siguiente instrucción SQL:

sitio web ALTER TABLE
ADD CONSTRAINT PK_CUSTID PRIMARY KEY (id, url);

Utilice la siguiente instrucción para descartar la restricción de clave principal de una tabla:

ALTER TABLE sitio web DROP PRIMARY KEY;

clave externa

Las claves externas de SQL (clave externa) se utilizan para unir dos tablas y mantener sincronizados los datos de las dos tablas.

Una clave externa consta de uno o más campos en una tabla, y la clave externa de una tabla se usa para apuntar a la clave principal de otra tabla. La tabla que contiene la clave foránea se denomina tabla esclava y la tabla a la que se apunta se denomina tabla maestra. Los datos de la tabla esclava están restringidos por la tabla maestra. Al insertar o actualizar datos en la tabla esclava, el valor de la clave externa debe existir en la clave principal de la tabla maestra.

Algunas notas sobre las restricciones de clave externa:

  • Una tabla puede tener varias claves externas, pero solo una clave principal.
  • Las restricciones de clave externa se utilizan para evitar la destrucción de la asociación entre dos tablas y garantizar la integridad y coherencia de los datos.
  • Una restricción de clave externa evita que datos ilegales entren en un campo de clave externa porque su valor debe existir en la clave principal a la que apunta.
  • El tipo de clave externa de la tabla esclava debe ser el mismo que el tipo de clave principal de la tabla maestra.
  • Al eliminar/actualizar un registro de la tabla maestra, puede elegir eliminar/actualizar registros relacionados en la tabla esclava al mismo tiempo, o puede elegir no eliminar/actualizar, puede establecer esto al definir la clave externa.
  • Al eliminar un registro en la tabla maestra, primero se deben eliminar los registros asociados en la tabla esclava; de lo contrario, los registros en la tabla maestra no se eliminarán.
  • Al eliminar la tabla maestra, la tabla esclava debe eliminarse primero; de lo contrario, la tabla maestra no se puede eliminar.

Si ya creó la tabla de pedidos y no tiene claves foráneas configuradas, puede usar el comando ALTER TABLE para agregar claves foráneas de la siguiente manera:

ALTER TABLE `order`
ADD FOREIGN KEY (uid) REFERENCES user (id);

Para descartar una restricción de clave externa, use la siguiente instrucción SQL:

ALTER TABLE `order`
DROP FOREIGN KEY;

Claves primarias frente a claves foráneas
Aquí hay algunas diferencias importantes entre las claves primarias y foráneas de SQL:

  • Las claves primarias no pueden contener valores NULL, las claves externas pueden contener valores NULL.
  • La clave primaria de cada registro debe ser única y no puede repetirse, mientras que las claves foráneas de diferentes registros pueden ser iguales.
  • Solo puede haber una clave principal en una tabla, pero puede haber varias claves externas.
  • De forma predeterminada, el motor de la base de datos crea automáticamente índices para las claves principales; las claves externas no lo hacen, y debe crear índices manualmente para las claves externas.

controlar

Check es una restricción de verificación, es decir, dada una condición, cuando se cumple esta condición, los datos se pueden agregar a este campo

CREATE TABLE website (
    id      INT              NOT NULL   AUTO_INCREMENT,
    name    VARCHAR(20)      NOT NULL,
    url     VARCHAR(30),
    age     TINYINT UNSIGNED NOT NULL CHECK(age<=25),
    alexa   INT UNSIGNED     NOT NULL CHECK(alexa<=10000),
    uv      FLOAT                       DEFAULT '0',
    country CHAR(3)          NOT NULL ,
    PRIMARY KEY (id)
);

o

CREATE TABLE website (
    id      INT              NOT NULL   AUTO_INCREMENT,
    name    VARCHAR(20)      NOT NULL,
    url     VARCHAR(30),
    age     TINYINT UNSIGNED NOT NULL,
    alexa   INT UNSIGNED     NOT NULL,
    uv      FLOAT                       DEFAULT '0',
    country CHAR(3)          NOT NULL ,
    PRIMARY KEY (id),
    CONSTRAINT myCheck CHECK(age<=25 AND alexa<=10000)
);

Si ya creó la tabla del sitio web y desea agregar una restricción al campo de edad, puede usar la siguiente declaración:

ALTER TABLE website
MODIFY age TINYINT UNSIGNED NOT NULL CHECK(age<=25);

Si desea agregar restricciones a varios campos, puede usar la siguiente sintaxis:

ALTER TABLE website
ADD CONSTRAINT myCheck CHECK(age<=25 AND alexa<=10000);

Para eliminar una restricción CHECK, use la siguiente sintaxis: (esta sintaxis no se aplica a mysql)

ALTER TABLE website
DROP CONSTRAINT myCheck;

Supongo que te gusta

Origin blog.csdn.net/weixin_44846765/article/details/125268638
Recomendado
Clasificación