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] p>
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 p>
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 p>
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