SQL SERVER VS ORACLE

Anuncio
UNIVERSIDAD JOSE CARLOS MARIATEGUI
SQL SERVER VS ORACLE
EDUARDO ACEVEDO CACERES
11
SQL SERVER VS ORACLE
2011
Diferencias entre Oracle y MS SQL Server
1. Conceptos y Terminología
Última Actualización: 24/04/2001
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
La siguiente tabla muestra algunas diferencias en los conceptos y terminología entre
Oracle y MS SQL Server:
Oracle
MS SQL Server
Base de datos del motor
base de datos
base de datos del servidor
Base de datos (colección
de tablas)
esquema
base de datos
Funciones grupos
funciones
grupos
Base de datos de la cuenta
de administrador,
dba
propietario de la base
sa, dbo
Diccionario de
Los datos sobre la base de Datos
datos
- Una por cada
servidor
Base de datos de catálogo
- Uno por base de datos
"Maestro" base de datos
- Una por cada servidor
Bloques y extensiones
bloques y
extensiones
páginas y extensiones
Software de red
SQL * Net
Biblioteca de red
Flujo de datos de
protocolo
Sustrato de red
transparente
(TNS)
Secuencia de datos tabular
(TDS)
Entre mayúsculas y
minúsculas de los
nombres de tablas,
columnas, etc
entre
mayúsculas y
minúsculas
depende del orden de los
caracteres tipo, por defecto
es entre mayúsculas y
minúsculas
Sinónimos
el apoyo
No se admite
Readonly transacción
el apoyo
No se admite
15 de junio de 2011
Concepto / Plazo
SQL SERVER VS ORACLE
2011
2. Tipos de datos
Última Actualización: 06/06/1999
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
La siguiente tabla muestra los tipos de datos correspondientes en Oracle y MS SQL
Server:
Oracle
MS SQL Server
Cadena de
longitud fija
CHAR (n)
- Límite de 2 KB
CHAR (n), carácter (n)
- Límite de 255 (6,5)
- Límite de 8 KB (7.0)
Cadena de
longitud
variable
VARCHAR2 (n),
VARCHAR (n)
- Límite de 4 KB en
una columna
- Límite de 32 KB
en una variable
- VARCHAR es
obsoleto
VARCHAR (n), CHAR variable
(n), CHARACTER VARYING (n)
- Límite de 255 (6,5)
- Límite de 8 KB (7.0)
Entero
INTEGER,
INTEGER (n),
SMALLINT
INTEGER (4 bytes),
INT (4 bytes),
SMALLINT (2 bytes),
TINYINT (1 byte),
BIT (un poco)
Punto Fijo
Número, (n),
número (n, d),
Float, float (n),
FLOAT (n, d)
NUMÉRICO, numérico (n),
numérico (n, d),
DECIMAL, DECIMAL (n),
DECIMAL (n, d),
DEC, DEC (n), diciembre (n, d),
DINERO, smallmoney
De punto
flotante
DECIMAL
Float, float (n), de doble precisión,
REAL
Fecha
FECHA
DATETIME, smalldatetime,
TIMESTAMP
- TIMESTAMP de autoactualización
Binaria
RAW (n)
- Límite de 255
bytes
Binary (n), varbinary (n),
BINARY variable (n)
- Límite de 255 (6,5)
- Límite de 8 KB (7.0)
15 de junio de 2011
Tipo de datos
SQL SERVER VS ORACLE
2011
Grandes
cadenas
LONG, LONG
- Límite de 2 GB
- Límite de uno por TEXTO
cada fila de la tabla - Límite de 2 GB
CLOB
- Límite de 4 GB
Binary Large
LONG RAW
- Límite de 2 GB
- Límite de uno por IMAGEN
cada fila de la tabla - Límite de 2 GB
BLOB
- Límite de 4 GB
caracteres
multi-byte
NCHAR (n), NACIONAL CHAR
(n), de carácter nacional (n)
NCHAR (n)
NVARCHAR (n), NACIONAL
NVARCHAR (n)
VARIABLE CHAR (n),
NCLOB
CARÁCTER NACIONAL
- Los mismos
VARIABLE (n)
límites que CHAR,
Ntext, text NACIONAL
VARCHAR, CLOB
- Los mismos límites que CHAR,
VARCHAR, TEXT
OS Archivo
BFILE
supported> <No
Identificador de implícita columna
fila
ROWID
OS seguro
multinacional
(Utilizar una columna de
identidad)
MLSLABEL,
supported> <No
MLSLABEL RAW
Número único
de 128 bits
supported> <No
(UUID, GUID)
UNIQUEIDENTIFIER (versión
7.0)
Última Actualización: 14/06/2000
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
La siguiente tabla muestra las diferencias en los límites de Oracle y MS SQL
Server:
Descripción
Oracle
MS SQL Server
Columnas por tabla
1000
250 (6.5)
1024 (7.0)
Tamaño de la fila
ilimitado
1962 bytes (6,5)
8060 bytes (7,0)
15 de junio de 2011
3. Límites
SQL SERVER VS ORACLE
2011
- Incluye punteros, pero no
los datos, para el texto y
columnas de imágenes
LONG y LONG RAW
columnas por fila
1 (debe ser la
ilimitado (puntero de 16
última columna) bytes por)
ilimitado
LOB, TEXT, y columnas
(puntero de 16
de imágenes por fila
bytes por)
ilimitado (puntero de 16
bytes por)
Los índices agrupados
por tabla
1
1
No índices agrupados por
ilimitado
tabla
249
Columnas por índice
16
16
Índice de tamaño de fila
2k bytes
900 bytes
Identificador de longitud 30 caracteres
30 caracteres (6,5)
128 caracteres (7,0)
Tablas por
SELECCIONAR
16 (6.5)
256 (7.0)
ilimitado
El código fuente por
procedimiento
almacenado
Datos de los límites de
tipo
64KB (6.5)
250 MB (7.0)
(Ver tipos de datos )
4. Operadores
Última Actualización: 06/07/1999
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
Descripción
La concatenación de cadenas
Oracle
texto1 | | texto2
MS SQL Server
cadena1 cadena2 +
15 de junio de 2011
La mayoría de los operadores son los mismos en Oracle y MS SQL Server. Éstos
son algunos que se diferencian:
SQL SERVER VS ORACLE
2011
5. Funciones incorporadas
Última Actualización: 06/07/1999
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
Oracle y MS SQL Server ofrece muchas de las mismas funciones integradas. Por
ejemplo, ambos ofrecen ABS, CAD, REDONDO, superior, inferior, AVG,
COUNT, SUM, ASCII, etc La siguiente tabla muestra algunas de las funciones
correspondientes que no tienen el mismo nombre. Para obtener una lista completa
de más información, consulte "Migración de Aplicaciones de Oracle a SQL Server"
Oracle
MS SQL Server
Más pequeño> entero = n CEIL
TECHO
Módulo
MOD
%
Truncar número
TRUNCAR
<none>
Máximo o el mínimo
número o una cadena en
la lista
MAYOR,
POR LO MENOS
<none>
Traducir NULL para n
NVL
ISNULL
Return null si dos valores
DECODE
son iguales
NULLIF
La concatenación de
cadenas
CONCAT (cad1, cad2)
cad1 + cad2
Convierte ASCII a
caracteres
Comisión de Derechos
Humanos
CHAR
Capitalizar las letras
iniciales de las palabras
INITCAP
<none>
Buscar cadena en cadena INSTR
CHARINDEX
Encuentra el patrón en la
INSTR
cadena
PATINDEX
Cadena de longitud
DATALENGTH
LONGITUD
Pad cadena con espacios LPAD,
en blanco
RPAD
<none>
Recorte caracteres
LTRIM (str, caracteres),
iniciales o finales que no
<none>
RTRIM (str, caracteres)
sean espacios en blanco
Reemplazar caracteres en
CAMBIAR
la cadena
COSAS
Convertir el número de
STR, CAST
To_char
15 de junio de 2011
Descripción
SQL SERVER VS ORACLE
2011
Convertir cadena en
número
TO_NUMBER
CAST
Obtener subcadena de
una cadena
SUBSTR
SUBSTRING
Char para la traducción
TRADUCIR
en la cadena de caracteres
<none>
Además de la fecha
ADD_MONTH o +
DATEADD
Fecha de la resta
MONTHS_BETWEEN o
DATEDIFF
-
Último día del mes
LAST_DAY
<none>
Tiempo de conversión de
NEW_TIME
la zona
<none>
día de la semana
siguiente después de la
fecha especificada
<none>
Next_day
Convertir fecha a cadena To_char
DATENAME,
CONVERTIR
Convertir cadena a fecha TO_DATE
CAST
Convertir fecha con el
número
TO_NUMBER (to_char
DATEPART
(d))
Fecha de vuelta
RONDA
CONVERTIR
Fecha en que se trunca
TRUNCAR
CONVERTIR
Fecha actual
SYSDATE
GETDATE
Convertir hexadecimal a
HEXTORAW
binario
CAST
Convertir binario a
hexadecimal
RAWTOHEX
CONVERTIR
DECODE
CASO ...
CUANDO
o COALESCE
Si la declaración en una
expresión
entrada número de
identificación del usuario UID, EL USUARIO
o el nombre
SUSER_ID,
SUSER_NAME
Identificación del número
de bases de datos del
UID, EL USUARIO
usuario o el nombre
USER_ID,
USER_NAME
El usuario actual
USUARIO
USUARIO
15 de junio de 2011
serie
SQL SERVER VS ORACLE
2011
6. Las diferencias en la sintaxis SQL
Última Actualización: 03/21/2001
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
En la tabla siguiente se muestra la sintaxis utilizada en diferentes Oracle y MS SQL
Server para el mismo las operaciones de SQL:
Descripción
Oracle
MS SQL Server
FROM tabla1
LEFT OUTER
JOIN tabla2 ON
table1.column1 =
table2.column2
Combinación
externa
izquierda
DONDE column1 = Columna2 (+) Nota: La siguiente
sintaxis también es
compatible, pero
ya no se
recomienda:
DONDE column1
*= Columna2
FROM tabla1
RIGHT OUTER
JOIN tabla2 ON
table1.column1 =
table2.column2
Combinación
externa
completa
FROM tabla1
FULL OUTER
JOIN tabla2 ON
table1.column1 =
table2.column2
SELECT sin DE 'SELECT' hola mundo de la doble
'Hola mundo'
SELECT
datos de
CREATE TABLE AS SELECT
SELECT en una ...
SELECT ... INTO
15 de junio de 2011
Combinación
DONDE column1 (+) = Columna2 Nota: La siguiente
externa derecha
sintaxis también es
compatible, pero
ya no se
recomienda:
DONDE column1
=* Columna2
SQL SERVER VS ORACLE
2011
tabla
Intersección de
SELECT ... INTERSECT
dos
SELECT ...
SELECCIONA
SELECT ...
DONDE EXISTE
(SELECT ...)
SELECT ...
Resta de dos
DONDE NO
SELECT ... MENOS SELECT ...
SELECCIONA
EXISTE
(SELECT ...)
INSERT INTO SELECT ...
Crear una vista y
INSERT INTO
ella.
Actualizar datos
en una
UPDATE SELECT ...
combinación
Crear una vista y
INSERT INTO
ella.
UPDATE una
tabla basada en
supported> <No
criterios de otra
tabla
UPDATE FROM
tabla ...
Eliminar filas de
una tabla basada
supported> <No
en criterios de
otra tabla
DELETE FROM
tabla FROM ...
Quitar una
columna de una <No apoyado hasta Oracle 8i>
tabla
ALTER TABLE
nombre_tabla
DROP COLUMN
nombre_columna
Readonly
VISTA
CREATE VIEW ... CON
READONLY
GRANT SELECT
...
Punto para
Salvar
SAVEPOINT
SALVAR LA
TRANSACCIÓN
Tabla de
bloqueos
LOCK TABLE ... IN SHARE
MODE
SELECT ...
table_name
(TABLOCK)
bloqueo de tabla LOCK TABLE ... en modo
Exclusiva
exclusivo
SELECT ...
table_name
(TABLOCKX)
La reserva de
espacio de
índice
PCTFREE = 0
FILLFACTOR =
100
Declarar una
variable local
DECLARO tipo varname;
DECLARE @ tipo
varname
Inicializar una
DECLARO tipo varname: = valor; supported> <No
15 de junio de 2011
INSERT en un
JOIN
SQL SERVER VS ORACLE
2011
variable local
Declarar una
constante
varname DECLARAR
CONSTANTES tipo: = valor;
supported> <No
Asignar a una
variable
varname: valor =
valor SELECT INTO varname
SET @
nombre_var =
valor
SELECT @
nombre_var =
valor
Asignar a una
variable de un
cursor
FETCH NEXT
cursorname TRAER EN varname cursorname DE EN
varname
La declaración
de un cursor
CURSOR CurName (s param)
ES SELECT ...;
DECLARE
CURSOR
CurName PARA
SELECCIONAR
...
SI ... ENTONCES
ELSIF ... ENTONCES
Si la declaración
MÁS
ENDIF
SI ...
EMPEZAR ... FIN
Else begin ... FIN
While
MIENTRAS ... LAZO
END LOOP
MIENTRAS ...
EMPEZAR ... FIN
Otros lazos
PARA ... END LOOP
LAZO ... END LOOP
supported> <No
Bucle de salida SALIR, SALIR AL
BREAK,
CONTINUE
Impresión de
salida
IMPRESIÓN
DBMS_OUTPUT.PUT_LINE
Levante de error RAISE_APPLICATION_ERROR RAISERROR
Punto y coma (;)
required>
<Ninguna
Gracias a Tom Johnston para la captura de un error en este consejo. Tuve el
DOBLE DE en la columna equivocada.
15 de junio de 2011
Declaración de
terminación
SQL SERVER VS ORACLE
2011
7. Las diferencias en la semántica de SQL
Última Actualización: 06/06/1999
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
La siguiente tabla muestra algunas diferencias semánticas entre Oracle y MS SQL
Server:
Oracle
MS SQL Server
Comprometerse
Compromiso
explícito
declaración
requerida
Automática a menos que cometan
IMPLICIT_TRANSACTIONS
SET
Lectura de datos
no confirmados
Base de datos se
reversión
temporal interno
para reconstruir
los datos más
recientes
cometidos por los
lectores.
Dependiendo de las opciones,
lector puede leer datos sin
confirmar, o se ve obligado a
esperar para el escritor para
confirmar o deshacer.
Liberar los datos CERRAR
del cursor
CURSOR libera
todos los datos.
No se puede
volver a abrir.
CERRAR cursor no publicación
del informe. Usted debe llamar
explícitamente a CURSOR
DEALLOCATE. Hasta entonces,
puede volver a abrir el cursor.
Implícito de
conversión de
datos en una
declaración como
la siguiente
donde vc es una
columna de tipo
VARCHAR2:
En cada fila se
recupera de la
tabla, se realiza
un intento para
convertirlo en un
número para la
comparación con
123. Si cualquier
fila contiene un
valor que no se
SELECT *
FROM persona puede convertir
Siendo Vc = 123 en un número, un
error de tiempo
de ejecución.
El número 123 se convierte en la
cadena '123 'una vez, y luego los
datos se obtienen de la tabla. Si
cualquier fila contiene un valor que
no se puede convertir en un
número, simplemente no se
corresponde con '123 'y se salta sin
ningún error.
La conversión a
NULL
Configuración de una columna
VARCHAR a''la convierte en la
cadena vacía (no es NULL).
Marco una
columna
VARCHAR2
a''(la cadena
15 de junio de 2011
Descripción
SQL SERVER VS ORACLE
2011
vacía) se hace
nulo.
8. Las diferencias en la gestión de bases de datos
Última Actualización: 06/06/1999
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
La siguiente tabla muestra algunas diferencias en cómo se gestionan las bases de
datos en Oracle y MS SQL Server:
Descripción
Modelo de
base de datos
Oracle
MS SQL Server
No hay base Recién bases de datos creadas heredan
de datos
características (usuarios, etc) a partir de la
modelo
base de datos especial llamado "modelo".
9. Las diferencias en la administración de objetos de
base de datos
Última Actualización: 06/06/1999
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
La siguiente tabla muestra algunas diferencias en cómo los objetos de base de datos
(tablas, vistas, procedimientos almacenados, etc) se manejen de Oracle y MS SQL
Server:
Oracle
MS SQL Server
[[Servidor [.]] Base de datos [.] []
Propietario.] Tabla
[[Servidor [.]] Base de datos [.] []
Propietario.] Ampliar
Nombre
completo
[Esquema.] Tabla
[Esquema.]
Ampliar
Temp tablas
tabla # - Cualquier tabla
8i Pre: Las tablas
denominada a partir de un signo
temporales se deben
de número (#) se borra
eliminar
automáticamente cuando el
explícitamente
usuario cierra la sesión o del
procedimiento de los fines.
8i +: CREATE
# # Mesa - Igual que el anterior,
tabla temporal
excepto que la tabla es accesible a
global
otros usuarios.
Re-crear un
objeto
CREATE OR
REPLACE ...
Crear vista
CREAR FUERZA No se admite. Tablas utilizadas
LA GOTA ...
CREAR ...
15 de junio de 2011
Descripción
SQL SERVER VS ORACLE
antes de las
tablas
dependientes
DE VISTA
2011
por vista debe existir antes vista
puede ser creado.
10.Las diferencias en la Administración de usuarios
Última Actualización: 06/06/1999
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
La siguiente tabla muestra algunas diferencias en cómo los usuarios se gestionan de
Oracle y MS SQL Server:
Descripción
Oracle
Cada usuario puede ser
La pertenencia
miembro de cualquier
a grupos
número de grupos.
MS SQL Server
Cada usuario puede ser
miembro de un solo grupo
que no sea "pública".
11.Las diferencias en la integración con MS ADO, RDO,
etc.
Última Actualización: 06/06/1999
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
La siguiente tabla muestra las diferentes técnicas utilizadas en Oracle y MS SQL
Server para interactuar con MS ADO, RDO, etc:
Oracle
Devuelve un
identificador de un
Devolver un conjunto
cursor.
de registros a la
Para más información:
persona que llama
Véase el artículo de KB
Q174679 de MS.
MS SQL Server
SELECT sin cláusula
INTO;
Selecciona varias tales
regresar varios
conjuntos de registros
15 de junio de 2011
Descripción
SQL SERVER VS ORACLE
2011
12.Las diferencias Varios
Última Actualización: 06/06/1999
Se aplica a: Oracle 7.3 +, MS SQL Server 6.5 +
La siguiente tabla muestra las diferencias entre los diversos Oracle y MS SQL
Server:
Oracle
MS SQL Server
IDENTIDAD
columna de una
tabla
Generar números únicos
CREATE
SEQUENCE
Cascada SUPR
DELETE
(Uso de
CASCADE ... disparadores)
Llamar a una función definida por el
usuario a partir de una instrucción
el apoyo
SQL (como la columna de SELECT o
expresión en la cláusula WHERE)
No se admite
15 de junio de 2011
Descripción
Descargar