La Red de Conocimientos Pedagógicos - Currículum vitae - Enciclopedia de aprendizaje de sentencias SQL

Enciclopedia de aprendizaje de sentencias SQL

Crear base de datos

Antes de crear, determine si la base de datos existe, si existe (seleccione * de sysdatabases donde nombre = 'nombre de la base de datos') suelte la base de datos 'nombre de la base de datos' y vaya a Crear BASE DE DATOS nombre de la base de datos < / p>

Eliminar base de datos

soltar base de datos dbname

Copia de seguridad del servidor SQL

--- Crear un dispositivo para los datos de copia de seguridad USE master EXEC sp_addumpdevice 'disk ', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- Iniciar copia de seguridad PUBLICACIONES DE LA BASE DE DATOS A testBack

Crear nueva tabla

crear tabla tabname(col1 tipo1 [ no nulo] [clave principal],col2 tipo2 [no nulo],..) Cree una nueva tabla basada en una tabla existente: A: cree la tabla tab_new como tab_old (use la tabla anterior para crear una tabla nueva) B: cree la tabla tab_new como seleccionar col1, col2... solo de la definición tab_old

Eliminar nueva tabla

soltar el nombre de la pestaña de la tabla

Agregar una columna

Modificar la tabla nombre de pestaña agregar columna tipo de columna Nota: las columnas no se pueden eliminar una vez agregadas. En DB2, el tipo de datos no se puede cambiar después de agregar la columna. Lo único que se puede cambiar es aumentar la longitud del tipo varchar.

Agregar clave principal

Modificar el nombre de la pestaña de la tabla agregar clave principal (col) Descripción: Eliminar clave principal: modificar el nombre de la pestaña de la tabla soltar la clave principal (col)

Crear índice

p>

crear índice [único] idxname en tabname(col….) Eliminar índice: colocar índice idxname en tabname Nota: El índice no se puede cambiar. Si desea cambiarlo, debe eliminarlo y. reconstruirlo.

Crear vista

crear vista nombre de vista como declaración de selección Eliminar vista: soltar vista nombre de vista

Algunas declaraciones SQL básicas simples

Seleccione: seleccione * de la tabla1 donde Insertar rango: insertar en la tabla1 (campo1, campo2) valores (valor1, valor2) Eliminar: eliminar de la tabla1 donde Actualizar rango: actualizar tabla1 establecer campo1=valor1 donde Buscar rango: seleccionar * de la tabla1 donde campo1 como '% valor1%' (todas las cadenas que contienen el patrón 'valor1') ---la sintaxis de like es muy sofisticada, verifique la información Ordenar: seleccione * de la tabla1 ordene por campo1,campo2 [desc] Total: seleccione recuento(*) como recuento total de tabla1 Suma: seleccione suma(campo1) como valor suma de la tabla1 Promedio: seleccione promedio(campo1) como valor promedio de la tabla1 Máximo: seleccione máx(campo1) como valor máximo de la tabla1 Mínimo: seleccione mínimo(campo1) como valor mínimo de la tabla1[separador]

Varios operadores de consulta avanzados

A: operador UNION El operador UNION combina otras dos tablas de resultados (como TABLA1 y TABLA2) y elimina cualquier fila duplicada en la tabla y deriva una tabla de resultados. Cuando se usa ALL con UNION (es decir, UNION ALL), las filas duplicadas no se eliminan. En ambos casos, cada fila de la tabla derivada proviene de TABLA1 o TABLA2. B: Operador EXCEPTO El operador EXCEPTO deriva una tabla de resultados incluyendo todas las filas que están en la TABLA1 pero no en la TABLA2 y eliminando cualquier fila duplicada. Cuando se usa TODO con EXCEPTO (EXCEPTO TODOS), las filas duplicadas no se eliminan. C: Operador INTERSECT El operador INTERSECT deriva una tabla de resultados incluyendo solo filas que están tanto en TABLA1 como en TABLA2 y eliminando cualquier fila duplicada. Cuando se usa TODO con INTERSECT (INTERSECT ALL), las filas duplicadas no se eliminan. Nota: varias filas de resultados de consultas que utilizan palabras de operador deben ser coherentes.

Usar combinación externa

A. combinación externa izquierda: combinación externa izquierda (unión izquierda): el conjunto de resultados incluye las filas coincidentes de la tabla unida y todas las filas de la tabla unida por la izquierda . SQL: seleccione a.a, a.b, a.c, b.c, b.d, b.f de LEFT OUT JOIN b ON a.a = b.c B: unión exterior derecha: unión exterior derecha (unión derecha): el conjunto de resultados incluye ambas filas de unión coincidentes de la tabla unida e Incluye todas las filas de la tabla de combinación derecha. C: unión externa completa: unión externa completa: no solo incluye filas coincidentes de la tabla de conexión simbólica, sino que también incluye todos los registros de las dos tablas conectadas.

[Editar este párrafo] Promoción

Copiar tabla

(Copiar solo estructura, nombre de la tabla fuente: a, nuevo nombre de la tabla: b) (Acceso disponible) método Método 1: seleccione * en b desde a donde 1<>1 Método 2: seleccione el 0 superior * en b de a

Copiar tabla

(Copiar datos, nombre de la tabla de origen: un nombre de tabla de destino: b) (Acceso disponible) insertar en b(a, b, c) seleccionar d,e,f de b;

Copia de tablas entre bases de datos

( Use rutas absolutas para datos específicos) (disponible con Access) inserte en b(a, b, c) seleccione d,e,f de b en 'base de datos específica' donde ejemplo de condición: ..de b en '"&Server.MapPath( ". "&"\data.mdb" &"' donde..

Subconsulta

(Nombre de tabla 1: a Nombre de tabla 2: b) seleccione a,b,c de a donde a IN (seleccione d de b o: seleccione a,b,c de a donde a IN (1,2,3)

Mostrar artículo, remitente y hora de la última respuesta

seleccione a.title,a.username,b.adddate de la tabla a,(seleccione max(adddate) adddate de la tabla donde table.title=a.title) b

Consulta de unión externa

(Nombre de la tabla 1: a Nombre de la tabla 2: b) seleccione a.a, a.b, a.c, b.c, b.d, b.f de a LEFT OUT JOIN b ON a.a = b.c

Consulta de vista en línea

(Nombre de tabla 1: a select * from (Seleccione a,b,c FROM a) T donde t.a > 1;

Uso de entre

entre límites consultar datos El rango incluye valores límite, no entre no incluye seleccionar * de la tabla1 donde el tiempo entre el tiempo1 y el tiempo2 seleccione a,b,c, de la tabla1 donde a no entre el valor 1 y el valor 2

en uso

seleccione * de la tabla 1 donde un [no] en ('valor 1', 'valor 2', 'valor 4', 'valor 6')

Elimine los elementos que ya están en el archivo principal tabla Información no encontrada en la tabla secundaria

Dos tablas relacionadas eliminadas de la tabla1 donde no existe (seleccione * de la tabla2 donde tabla1.field1=table2.field1

Problema de consulta conjunta de cuatro tablas

seleccione * de una unión interna izquierda b en a.a=b.b unión interna derecha c en a.a=c.c unión interna d en a.a=d.d donde.....

Programe cinco días por adelantado Recordatorio de minutos

SQL: seleccione * del programa donde fechadoiff('minuto',f hora de inicio,

getdate())>5

Una declaración SQL para completar la paginación de la base de datos

seleccione los 10 mejores b.* de (seleccione los 20 campos de clave principal principales, ordene el campo a partir del nombre de la tabla ordenando campo desc) a, nombre de la tabla b donde b. Campo de clave principal = a. Ordenar los campos de clave principal por a. rango

p>

Seleccionar ranking

Seleccione toda la información del registro con la a más grande en cada grupo de datos con el mismo valor b (se puede usar un uso similar para las clasificaciones mensuales del foro, el análisis mensual de los productos más vendidos, la clasificación por puntuaciones de temas, etc.) seleccione a,b,c de tablename ta donde a=(seleccione max(a) de tablename tb donde tb.b=ta.b )

Tabla de resultados derivada

Derive una tabla de resultados incluyendo todas las filas en la TablaA pero no en la TablaB y la TablaC y eliminando todas las filas duplicadas (seleccione una de la tablaA excepto (seleccione una de la tablaB ) excepto (seleccione un de la tabla C)

Seleccione aleatoriamente 10 registros

seleccione los 10 principales * del orden del nombre de la tabla mediante newid()

Seleccione registros aleatoriamente

seleccione newid()

Eliminar registros duplicados

Eliminar del nombre de tabla donde no está el ID (seleccione max(id) del grupo de nombre de tabla por col1,col2,...)

Enumerar todos los nombres de tablas en la base de datos

seleccione el nombre de sysobjects donde tipo='U'

Enumere todos los nombres de tablas

seleccione nombre de syscolumns donde id=object_id('TableName')

Disposición de la lista

Tipo de lista, proveedor, campos de piezas, organizados por campo de tipo, el caso puede implementar fácilmente múltiples selecciones, similar a caso en seleccionar.

seleccione el tipo, suma (vendedor de casos cuando 'A' luego finaliza PC en caso contrario 0), suma (vendedor de caso cuando finaliza 'C' y luego finaliza PC en resto 0), suma (vendedor de caso cuando finaliza 'B' y luego termina PC en otro caso 0) DEL grupo nombre de tabla por tipo muestra los resultados: tipo vendedor pcs Computadora A 1 Computadora A 1 CD B 2 CD A 2 Teléfono móvil B 3 Teléfono móvil C 3

Tabla de inicialización tabla1

TRUNCATE TABLE tabla1

Seleccione registros del 10 al 15

seleccione los 5 mejores * de (seleccione los 15 mejores * de la tabla orden por id asc) table_alias orden por id desc

Tipo de datos Conversión

declare @numid int declare @id varchar(50) set @numid=2005 set @id=convert(varchar,@numid) Complete la conversión del tipo de datos Int a varchar mediante la declaración anterior. las conversiones son similares. Consulte la función de conversión.

[Editar este párrafo] Consejos

El uso de 1=1, 1=2

es frecuente. utilizado en combinaciones de sentencias SQL" donde 1=1" significa seleccionar todo "donde 1=2" y no seleccionar todo, como por ejemplo: if @strWhere !=' start set @strSQL = 'select count(*) as Total from [ ' + @tblName + '] donde ' + @strDonde fin else comienza set @strSQL = 'selecciona recuento(*) como Total de [' + @tblName + ']' fin Podemos escribir directamente set @strSQL = 'selecciona recuento( *) como Total de [' + @tblName + '] donde 1=1 estable' + @strWhere

Reducir base de datos

--Reconstruir índice DBCC REINDEX DBCC INDEXDEFRAG --Reducir datos y registre DBCC SHRINKDB DBCC SHRINKFILE

Comprimir la base de datos

dbcc psikdatabase(dbname) Transfiera la base de datos al nuevo usuario con derechos de usuario existentes exec sp_change_users_login 'update_one','newname',' oldname' go

Verificar conjunto de copia de seguridad

RESTAURAR VERIFYONLY desde disk='E:\dvbbs.bak'

Reparar base de datos

Alterar BASE DE DATOS [dvbbs] SET SINGLE_USER GO DBCC CHECKDB( 'dvbbs',repair_allow_data_loss) CON TABLOCK GO Modificar BASE DE DATOS [dvbbs] SET MULTI_USER GO

Borrar registro

S

ET NOCOUNT ON DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT USE tablename -- El nombre de la base de datos que se va a operar Seleccione @LogicalFileName = 'tablename_log', -- Nombre del archivo de registro @MaxMinutes = 10, -- Límite de tiempo permitido ajustar el registro @NewSize = 1 - El tamaño del archivo de registro que desea configurar (M) - Configurar / inicializar DECLARAR @OriginalSize int Seleccione @OriginalSize = tamaño FROM sysfiles Donde nombre = @LogicalFileName Seleccione 'Tamaño original de. ' + db_name( ) + ' LOG es ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K páginas o ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfiles Donde nombre = @ LogicalFileName Crear TABLA DummyTrans (DummyColumn char (8000) no nulo) DECLARAR @Counter INT, @StartTime DATETIME, @TruncLog VARCHAR(255) Seleccionar @StartTime = GETDATE(), @TruncLog = 'BACKUP LOG ' + db_name( ) + 'CON TRUNCATE_ONLY' DBCC SHRINKFILE (@LogicalFileName, @NewSize) EXEC (@TruncLog) - Ajusta el registro si es necesario MIENTRAS @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) - el tiempo no ha expirado Y @OriginalSize = (Seleccione el tamaño DESDE sysfiles Donde nombre = @LogicalFileName) Y (@OriginalSize * 8/1024) > @NewSize BEGIN - Bucle externo Seleccione @Counter = 0 WHILE ((@Counter < @OriginalSize / 16) Y ( @Counter < 50000 )) BEGIN -- actualizar Insertar DummyTrans VALUES ('Rellenar registro') Eliminar DummyTrans Seleccionar @Counter = @Counter + 1 END EXEC (@TruncLog) END Seleccionar 'Tamaño final de ' + db_name() + ' LOG es ' + CONVERTIR( VARCHAR(30),tamaño) + ' 8K páginas o '

+ CONVERT(VARCHAR(30),(tamaño*8/1024)) + 'MB' FROM sysfiles Donde nombre = @LogicalFileName Drop TABLE DummyTrans SET NOCOUNT OFF

Cambiar una tabla

exec sp_changeobjectowner 'tablename','dbo'

Almacenar cambios en todas las tablas

Crear PROCEDIMIENTO dbo.User_ChangeObjectOwnerBatch @OldOwner como NVARCHAR(128), @NewOwner como NVARCHAR(128) AS DECLARE @ Nombre como NVARCHAR(128) DECLARAR @Propietario como NVARCHAR(128) DECLARAR @OwnerName como NVARCHAR(128) DECLARAR curObject CURSOR PARA seleccionar 'Nombre' = nombre, 'Propietario' = nombre_usuario(uid) de sysobjects donde nombre_usuario(uid)= @ Orden de OldOwner por nombre ABRIR curObject FETCH SIGUIENTE DE curObject EN @Name, @Owner MIENTRAS(@@FETCH_STATUS=0) COMIENZAR si @Owner=@OldOwner comienza a establecer @OwnerName = @OldOwner + '.' @OwnerName, @NewOwner end - seleccione @name,@NewOwner,@OldOwner FETCH NEXT FROM curObject INTO @Name, @Owner END close curObject desasignar curObject GO

Escribir datos directamente en un bucle en SQL SERVER

declarar @i int set @i=1 mientras que @i<30 comienza a insertar en los valores de prueba (ID de usuario) (@i) establece @i=@i+1 end