Id_user: valores enteros, por lo que el tipo será int, limitémoslo a 10 caracteres: int (10).
name es un valor de cadena varchar, limitémoslo a 20 caracteres: varchar (20).
email es un valor de cadena varchar, limitémoslo a 50 caracteres - varchar(50).
contraseña - valor de cadena varchar, limitémoslo a 15 caracteres - varchar (15).
Todos los valores de campo son obligatorios, por lo que debe agregar NO tipo NULO.
id_user int(10) NO NULO
nombre varchar (20) NO NULO
correo electrónico varchar (50) NO NULO
La primera columna, como recordará del modelo conceptual de nuestra base de datos, es la clave principal (es decir, sus valores son únicos e identifican de manera única un registro). Es posible seguir la singularidad por su cuenta, pero no es racional. Hay un atributo especial en SQL para esto: AUTOINCREMENTO, que al acceder a la tabla para añadir datos, calcula el valor máximo de esta columna, aumenta en 1 el valor resultante y lo pone en la columna. Por lo tanto, se genera automáticamente un número único en esta columna y, por lo tanto, el tipo NOT NULL es redundante. Entonces, asignemos un atributo a una columna con una clave principal:
nombre varchar (20) NO NULO
correo electrónico varchar (50) NO NULO
contraseña varchar (15) NO NULO
Ahora debemos especificar que el campo id_user es la clave principal. Para hacer esto, SQL usa palabra clave CLAVE PRIMARIA(), el nombre del campo clave se indica entre paréntesis. Hagamos cambios:
id_usuario int(10) AUTO_INCREMENTO
nombre varchar (20) NO NULO
correo electrónico varchar (50) NO NULO
contraseña varchar (15) NO NULO
CLAVE PRINCIPAL (id_usuario)
Entonces, la tabla está lista y su versión final se ve así:
Crear usuarios de tabla (
id_usuario int(10) INCREMENTO_AUTO,
nombre varchar (20) NO NULO,
correo electrónico varchar (50) NO NULO,
contraseña varchar (15) NO NULO,
CLAVE PRINCIPAL (id_usuario)
);
Ahora tratemos la segunda tabla: temas (temas). Argumentando de manera similar, tenemos los siguientes campos:
id_autor int(10) NO NULO
CLAVE PRINCIPAL (id_topic)
Pero en nuestro modelo de base de datos, el campo id_author es una clave externa, es decir solo puede tener valores que estén en el campo id_user de la tabla de usuarios. Para especificar esto en SQL hay una palabra clave CLAVE EXTERNA(), que tiene la siguiente sintaxis:
CLAVE EXTERNA (column_name_which_is_foreign_key) REFERENCES parent_table_name (parent_column_name);
Especifiquemos que id_author es una clave externa:
id_topic int(10) INCREMENTO_AUTO
topic_name varchar(100) NO NULO
id_autor int(10) NO NULO
CLAVE PRINCIPAL (id_topic)
CLAVE EXTRANJERA (id_autor) REFERENCIAS usuarios (id_usuario)
La tabla está lista, y su versión final se ve así:
Crear temas de tabla (
id_topic int(10) INCREMENTO_AUTO,
topic_name varchar(100) NO NULO,
CLAVE PRINCIPAL (id_topic),
CLAVE EXTRANJERA (id_autor) REFERENCIAS usuarios (id_usuario)
);
Queda la última tabla: publicaciones (mensajes). Todo es similar aquí, solo dos claves foráneas:
Crear publicaciones en la tabla (
id_post int(10) INCREMENTO_AUTO,
texto del mensaje NO NULO,
id_autor int(10) NO NULO,
id_topic int(10) NO NULO,
CLAVE PRIMARIA (id_post),
CLAVE EXTRANJERA (id_autor) REFERENCIAS usuarios (id_usuario),
CLAVE EXTRANJERA (id_topic) REFERENCIAS temas (id_topic)
);
Tenga en cuenta que una tabla puede tener varias claves externas y solo puede haber una clave principal en MySQL. En la primera lección, eliminamos nuestra base de datos del foro, es hora de crearla nuevamente.
lanzamos servidor mysql(Inicio - Programas - MySQL - Mi servidor SQL 5.1 - MySQL Command Line Client), ingrese una contraseña, cree una base de datos de foro (create database forum;), selecciónala para usarla (use forum;) y crea nuestras tres tablas:
Tenga en cuenta que un comando se puede escribir en varias líneas usando la tecla Intro (MySQL sustituye automáticamente un carácter de nueva línea ->), y solo después de que el separador (punto y coma) presione la tecla Intro, la consulta se ejecutará.
Recuerde, si hace algo mal, siempre puede descartar una tabla o toda la base de datos usando la instrucción DROP. arreglar algo en línea de comando extremadamente inconveniente, por lo que a veces (especialmente en etapa inicial) es más fácil escribir consultas en algún editor, como el Bloc de notas, y luego copiarlas y pegarlas en el cuadro negro.
Entonces, las tablas se crean para asegurarse de esto, recordemos el equipo. mostrar tablas:
Y finalmente, veamos la estructura de nuestra última tabla de publicaciones:
Ahora los significados de todos los campos de la estructura, excepto el campo DEFAULT, quedan claros. Este es el campo de valor predeterminado. Podríamos especificar un valor predeterminado para alguna columna (o para todas). Por ejemplo, si tuviéramos un campo llamado "Casado\Casado" y de tipo ENUM ("sí", "no"), entonces tendría sentido convertir uno de los valores en el valor predeterminado. La sintaxis sería:
Enumeración casada ("sí", "no") NOT NULL predeterminado ("sí")
Aquellos. esta palabra clave se escribe con un espacio después del tipo de datos y el valor predeterminado se indica entre paréntesis.
Pero volvamos a nuestras mesas. Ahora necesitamos ingresar datos en nuestras tablas. En los sitios web, generalmente ingresa información en algunos formularios html, luego un script en algún idioma (php, java ...) extrae estos datos del formulario y los ingresa a la base de datos. Lo hace por medio de una consulta SQL para ingresar datos en la base de datos. Todavía no sabemos cómo escribir scripts en php, pero ahora aprenderemos cómo enviar consultas SQL para ingresar datos.
Para ello se utiliza el operador INSERTAR. La sintaxis se puede utilizar de dos maneras. La primera opción se utiliza para ingresar datos en todos los campos de la tabla:
INSERTAR EN VALORES de table_name ("first_column_value", "second_column_value", ..., "last_column_value");
INSERTAR EN LOS VALORES de los usuarios ("1","sergey"," [correo electrónico protegido]", "1111");
La segunda opción se utiliza para ingresar datos en algunos campos de la tabla:
INSERT INTO nombre_tabla ("nombre_columna", "nombre_columna") VALUES ("valor_primera_columna", "valor_segundo_columna");
INSERTAR EN USUARIOS (nombre, email, contraseña) VALORES ("valera", " [correo electrónico protegido]", "2222");
Si tuviéramos campos con el tipo NULL, es decir opcional, también podríamos ignorarlos. Pero si intenta dejar vacío el campo con el valor NOT NULL, el servidor emitirá un mensaje de error y no cumplirá con la solicitud. Además, al ingresar datos, el servidor verifica las relaciones entre las tablas. Por lo tanto, no puede completar un campo que sea una clave externa con un valor que no esté en la tabla relacionada. Verificará esto ingresando datos en las dos tablas restantes.
Pero primero, agreguemos información sobre algunos usuarios más. Para agregar varias líneas a la vez, solo necesita enumerar los corchetes con valores separados por comas:
Ahora agreguemos datos a la segunda tabla: temas. Todo es igual, pero debemos recordar que los valores en el campo id_autor deben estar presentes en la tabla de usuarios (usuarios):
Ahora intentemos agregar otro tema, pero con un id_author que no está en la tabla de usuarios (dado que solo agregamos 5 usuarios a la tabla de usuarios, id=6 no existe):
El servidor da error y dice que no puede ingresar tal línea, porque el campo de clave externa tiene un valor que no está en la tabla de usuarios relacionados.
Ahora agreguemos algunas filas a la tabla de publicaciones (mensajes), recordando que tenemos 2 claves externas, es decir El id_author y id_topic que ingresaremos deben estar presentes en sus tablas asociadas:
Así que tenemos 3 tablas que tienen datos. Surge la pregunta: cómo ver qué datos se almacenan en las tablas. Esto es lo que haremos en la próxima lección.
Trabajar con bases de datos está directamente relacionado con el cambio de tablas y los datos que contienen. Pero antes de iniciar las acciones, se debe crear la tabla. Para automatizar este proceso, hay un especial: "CREAR TABLA".
Antes de tratar con el proceso de creación de tablas usando el comando "CREATE TABLE" de MS SQL, vale la pena detenerse en lo que necesita saber antes de usar la función.
En primer lugar, debe encontrar un nombre para la tabla: debe ser único en comparación con otros en la base de datos y seguir algunas reglas. El nombre debe comenzar con una letra (a-z), seguido de letras, números y guiones bajos, y la frase resultante no debe ser palabra reservada. La longitud del nombre de la tabla no debe exceder los 18 caracteres.
Una vez que haya decidido el nombre, debe desarrollar una estructura: proponga nombres para las columnas, piense en el tipo de datos que se usa en ellas y qué campos deben completarse. También vale la pena definir inmediatamente los campos de claves primarias y externas, así como las posibles restricciones en los valores de los datos.
Los matices restantes de la tabla se pueden corregir fácilmente, por lo que en la etapa de creación de la tabla es posible que no estén completamente pensados.
Habiendo desarrollado la estructura de la tabla, puede proceder a su creación. Esto es bastante fácil de hacer usando la función SQL "CREATE TABLE". En él, el usuario debe especificar el nombre de la tabla inventada anteriormente y la lista de columnas, indicando el tipo y el nombre de cada una de ellas. La sintaxis de la función es la siguiente:
CREAR TABLA nombre_tabla
((tipo de datos nombre_columna …| restricción_tabla)
[,(tipo de datos nombre_columna …| restricción_tabla)]…)
Los argumentos utilizados en la construcción de una función significan lo siguiente:
También es posible utilizar dos argumentos de función más:
En ellos, el usuario puede especificar las restricciones requeridas para el trabajo o las condiciones para llenar la tabla.
Al escribir una consulta con una función, a veces es necesario establecer reglas para completar los campos. Para hacer esto, debe agregar atributos de funciones especiales que definan un conjunto particular de condiciones.
Para determinar si una celda puede contener un valor vacío, después de especificar el nombre y el tipo de columna, se debe escribir una de las palabras clave: NULL (puede haber valores vacíos) o NOT NULL (el campo debe ser llenado).
A la hora de crear una tabla, en la mayoría de los casos es necesario unificar cada registro para evitar tener dos idénticos. Para esto, la numeración de líneas se usa con mayor frecuencia. Y, para no requerir que el usuario conozca el último número disponible en la tabla, basta con especificar la columna de clave principal en la función "CREAR TABLA" escribiendo la palabra clave "Clave principal" después del campo correspondiente. La mayoría de las veces, es por la clave principal que las tablas se unen entre sí.
La propiedad de clave externa "CLAVE EXTERNA" se utiliza para proporcionar un vínculo con la clave principal. Al especificar esta propiedad para una columna, puede asegurarse de que este campo contenga un valor que coincida con uno de los que se encuentran en la columna de clave principal de la misma tabla o de otra. De esta manera, se puede asegurar la consistencia de los datos.
Para proporcionar una comprobación con respecto a un conjunto o definición determinados, utilice el atributo CHECK. Se escribe en último lugar en la lista de argumentos de función y tiene algún valor como parámetro privado. expresión booleana. Con su ayuda, puede limitar la lista de valores posibles, por ejemplo, usando solo las letras "M" y "F" en el campo "Género" de la tabla.
Además de los presentados, la función tiene muchos más atributos específicos, pero se usan con mucha menos frecuencia en la práctica.
Para comprender completamente cómo funciona la función, vale la pena considerar en la práctica cómo funciona CREATE TABLE (SQL). El siguiente ejemplo crea la tabla que se muestra en la figura:
CREAR TABLA Personalizado
(ID CHAR(10) NOT NULL Clave principal,
Nombre_personalizado CHAR(20),
dirección_personalizadaCHAR(30),
CHAR ciudad_personalizada(20),
Custom_CountryCHAR(20),
ArcDateCHAR(20))
Como puede ver, el parámetro de la posible ausencia de un valor en la celda (NULL) se puede omitir, ya que se usa por defecto.
Si necesitaba guardar el conjunto de datos resultante devuelto por una consulta SQL, entonces este artículo será de su interés, ya que consideraremos instrucción SELECCIONAR EN, con el que puedes crear una nueva tabla en Microsoft SQL Server y llenarla con el resultado consulta SQL.
Comenzaremos, por supuesto, describiendo la declaración SELECT INTO en sí, y luego pasaremos a los ejemplos.
SELECCIONAR EN- una declaración en el lenguaje en T-SQL, que crea una nueva tabla e inserta las filas resultantes de la consulta SQL en ella. Estructura de la tabla, es decir el número y los nombres de las columnas, así como los tipos de datos y las propiedades de nulabilidad, se basarán en columnas ( expresiones) especificado en la lista de selección de origen en la instrucción SELECT. Por lo general, la declaración SELECT INTO se usa para combinar datos en una tabla de varias tablas, vistas, incluidos algunos datos calculados.
La declaración SELECT INTO requiere el permiso CREATE TABLE en la base de datos en la que se creará la nueva tabla.
La instrucción SELECT INTO tiene dos argumentos:
Ejecutaré todos los ejemplos en Microsoft SQL Server 2016 Express DBMS.
Para empezar, creemos dos tablas y llenémoslas con datos, combinaremos estas tablas en los ejemplos.
CREAR TABLA TestTable( IDENTIDAD(1,1) NO NULO, NO NULO, (100) NO NULO, NULO) ON GO CREAR TABLA TestTable2( IDENTIDAD(1,1) NO NULO, (100) NO NULO) ON GO INSERTAR EN TestTable VALORES (1,"Teclado", 100), (1, "Ratón", 50), (2, "Teléfono", 300) IR A INSERTAR EN TestTable2 VALORES (" Componentes de la computadora"), ("Dispositivos móviles") IR SELECCIONAR * DESDE TestTable SELECCIONAR * DESDE TestTable2
Imaginemos que necesitamos fusionar dos tablas y almacenar el resultado en una nueva tabla ( por ejemplo, necesitamos obtener productos con el nombre de la categoría a la que pertenecen).
Operación SELECT INTO SELECT T1.ProductId, T2.CategoryName, T1.ProductName, T1.Price INTO TestTable3 FROM TestTable T1 LEFT JOIN TestTable2 T2 ON T1.CategoryId = T2.CategoryId --Selección de datos de una nueva tabla SELECT * FROM TestTable3
Como resultado, creamos una tabla llamada TestTable3 y la llenamos con los datos combinados.
Ahora digamos que necesitamos datos agrupados, por ejemplo, información sobre la cantidad de productos en una determinada categoría, mientras que necesitamos almacenar estos datos en una tabla temporal, por ejemplo, usaremos esta información solo en declaraciones SQL, por lo que no es necesario crear una tabla completa.
Cree una tabla temporal (#TestTable) usando SELECT INTO SELECT T2.CategoryName, COUNT(T1.ProductId) AS CntProduct INTO #TestTable FROM TestTable T1 LEFT JOIN TestTable2 T2 ON T1.CategoryId = T2.CategoryId GROUP BY T2.CategoryName -- Obtener datos de una tabla temporal SELECT * FROM #TestTable
Como puede ver, logramos crear una tabla temporal #TestTable y llenarla con datos agrupados.
Así que usted y yo examinamos la declaración SELECT INTO en el lenguaje T-SQL, en mi libro "The Way of the T-SQL Programmer" hablo en detalle sobre todas las construcciones. T-SQL (recomiendo leer), ¡y eso es todo por ahora!