¿Cuáles son las diferencias funcionales entre SQL y Oracle?
Muchas empresas de software comprenden la importancia de desarrollar aplicaciones que no dependan de un tipo de base de datos específico (como Oracle, SQL Server, DB2), lo que permite a los clientes elegir la plataforma a la que están acostumbrados. En términos generales, los desarrolladores de software pueden identificar a sus clientes quiénes son responsables del mantenimiento de la base de datos y quiénes deben utilizar la plataforma y la personalización existentes.
En cuanto a las diferencias entre Oracle y SQL Server, ha habido muchos artículos que describen las diferencias generales entre los dos desde la perspectiva de la empresa y la perspectiva del administrador de la base de datos. En este artículo, le describiré las diferencias entre las plataformas SQL Server y Oracle desde la perspectiva de la aplicación, y discutiré varias formas posibles de desarrollar aplicaciones que no dependan de un entorno de base de datos. Al mismo tiempo, no discutiré las diferencias obvias entre las dos plataformas para aplicaciones, como la partición y la indexación de tablas.
Definir interfaces y lenguajes comunes. Hay algunos lenguajes e interfaces comunes que permiten que las aplicaciones no dependan de bases de datos. Presumiblemente, también se pueden aplicar a bases de datos relacionales de la misma manera: ANSI es un. Estándar nacional estadounidense. Según lo define la Oficina, es una organización de miembros voluntarios (operados con fondos privados) que desarrollan estándares reconocidos a nivel nacional en una amplia gama de áreas relacionadas con equipos y procedimientos. En el campo de la base de datos, ANSI define estándares para escribir comandos SQL, asumiendo que el comando se puede ejecutar en cualquier base de datos sin cambiar la sintaxis del comando. ODBC es la interfaz Open Database Connectivity (ODBC), definida por Microsoft, que permite a las aplicaciones acceder a datos en un sistema de gestión de bases de datos (DBMS), utilizando SQL como estándar para acceder a los datos. ODBC permite la máxima interconectividad, lo que significa que una única aplicación puede acceder a diferentes sistemas de gestión de bases de datos. Los usuarios finales de la aplicación pueden luego agregar un controlador de base de datos de conectividad abierta de bases de datos (ODBC) para vincular la aplicación con el sistema de administración de bases de datos de su elección. OLE DB es el sucesor de ODBC. Es un conjunto de componentes de software que permiten conectar cualquier componente de software "front-end" basado en VB, C++, Access, etc. a un back-end como SQL Server, Oracle,. DB2, MySQL, etc. En muchos casos, el componente OLE DB proporciona un rendimiento mucho mejor que el ODBC original. La API JDBC (Java Database Connectivity) es el estándar de la industria para conexiones independientes de bases de datos entre el lenguaje de programación Java y una amplia gama de bases de datos, bases de datos SQL y otras fuentes de datos tabulares (como hojas de cálculo o archivos de texto sin formato). La interfaz del programa de aplicación JDBD proporciona una interfaz del programa de aplicación a nivel de llamada para el acceso a la base de datos basada en SQL. Interfaz común en el mundo real Desafortunadamente, no todos los comandos a nivel de base de datos son ANSI y cada plataforma de base de datos tiene sus propias extensiones. Para ANSI o interfaz universal, en general, representa varias funciones, por lo que también puede significar la pérdida de competitividad en el desempeño. Para bases de datos pequeñas y aplicaciones pequeñas, mantener el acceso universal a la base de datos es simple, pero a medida que la base de datos y/o la aplicación se vuelve más grande y compleja, debe agregar funcionalidad al código.
Comparación de funciones comunes entre SQL Server y Oracle
---------Funciones matemáticas
1. p >S:seleccione valor abs(-1)
O:seleccione valor abs(-1) de doble
2. Redondo (grande)
S. :seleccione el valor del techo(-1.001)
O:seleccione el valor del techo(-1.001) de doble
3. Redondeo (pequeño)
S:seleccione el piso (-1.001) valor
O:seleccione valor de piso(-1.001) de doble
4. Redondeo (intercepción)
S:seleccione reparto (-1.002). como int) valor
O: seleccione el valor trunc(-1.002) de dual
5 Redondeo
S: seleccione el valor redondo(1.23456,4) 1.23460.
O:seleccione el valor redondo(1.23456,4) de dual 1.2346
6.e es la potencia de la base
S:seleccione Exp(1) valor 2,7182818284590451
O: seleccione el valor Exp(1) del dual 2,71828182
7. Tome el logaritmo de e como base
S: seleccione log(2,7182818284590451 ) valor 1
O: seleccione el valor ln(2.7182818284590451) de dual; 1
8. Tome 10 como logaritmo base
S: seleccione log10(10. ) valor 1
O: seleccione el valor log(10,10) de dual 1
9. valor 16
O:seleccione el valor de potencia(4,2) de dual 16
10. Saque la raíz cuadrada
S:seleccione el valor SQRT(4). 2
O:selecciona el valor SQRT(4) del dual 2
11 Encuentra la potencia de cualquier número a la base
S:selecciona la potencia(3. ,4) valor 81
O: seleccione el valor de potencia (3,4) de dual 81
12. Obtenga números aleatorios
S: seleccione rand(). valor
O: seleccione sys.dbms_random.value(0,1) valor de dual;
13. Obtenga el signo
S: seleccione signo (- 8) valor -1 p>
O: seleccione el valor del signo (-8) del dual -1
----------Funciones trigonométricas relacionadas
14. Pi
p>
S:SELECT PI() valor 3.1415926535897931
O: No sé
15. Los parámetros cos y tan están todos en radianes
Por ejemplo: seleccione el valor sin(PI()/2) y obtenga 1 (SQLServer)
>
16.Asin, Acos, Atan, Atan2 devuelve radianes
17 Intercambio de ángulos en radianes (SQLServer, Oracle no lo sabe)
GRADOS: radianes -> ángulos p> p>
RADIANOS: ángulo -> radianes
---------Comparación entre valores
18. p>
S:seleccione el valor máximo (valor) de
(seleccione 1 valor
unión
seleccione -2 valor
unión
selecciona 4 valores
unión
selecciona 3 valores)a
O:selecciona mayor(1,-2,4 ,3) valor de dual
19. Encuentre el valor mínimo del conjunto
S: seleccione el valor mínimo (valor) de
(seleccione 1 valor
unión
seleccione -2 valores
unión
seleccione 4 valores
unión
seleccione 3 valores)a p>
O: seleccione el valor mínimo (1,-2,4,3) de dual
20. F2 se reemplaza por 10)
S:seleccione el valor F1,IsNull(F2,10) de Tbl
O:seleccione el valor F1,nvl(F2,10) de Tbl p>
------- -Función de cadena
21. Buscar el número de serie del carácter
S: seleccione el valor ascii('a')
O: seleccione el valor ascii('a') de dual
22 Buscar caracteres de números de serie
S: seleccione el valor char(97)
O: seleccione el valor chr(97) de dual
Conexión 23
S: seleccione el valor '11'+'22'+'33'
O :seleccione CONCAT('11','22')| |33 valor de dual
Posición de subcadena 23. Devuelve 3
S:seleccione CHARINDEX('s',' sdsq',2) valor
O: seleccione el valor INSTR('sdsq','s',2) de dual
23. si se elimina el % medio del parámetro, se devolverá 7
// Este artículo es una reproducción de la investigación de C++Builder - /article.asp?i=996&d=dwn1rn
S:select patindex('%d%q%','sdsfasdqe') value
O: Oracle no lo encontró, pero instr puede controlar el número de ocurrencias a través del cuarto parámetro
seleccione el valor INSTR('sdsfasdqe','sd',1,2) de los retornos duales 6 p>
24. Buscar subcadenas
S: seleccione subcadena('abcd', 2,2) valor
O: seleccione el valor substr('abcd',2,2 ) de dual
25. En su lugar, la subcadena devuelve aijklm.
nef
S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') valor
O:SELECT Reemplazar('abcdef', 'bcd', 'ijklmn') valor de dual
26. Reemplazar todas las subcadenas
S:Reemplazar
O:select Translate('fasdbfasegas','fa','I' ) value desde dual
27. Longitud
S:len,datalength
O:length
28. p>
29. Ponga en mayúscula la primera letra de la palabra
S: No encontrado
O: seleccione el valor INITCAP('abcd dsaf df') de dual
30. Relleno izquierdo con espacios (si el primer parámetro de LPAD es un espacio, es lo mismo que la función de espacio)
S: seleccione espacio(10)+valor 'abcd' p>
O: seleccione el valor LPAD('abcd',14) de dual
31 Complete los espacios a la derecha (si el primer parámetro de RPAD es un espacio, es lo mismo que la función de espacio)
S:seleccione el valor 'abcd' +espacio(10)
O:seleccione el valor RPAD('abcd',14) de dual
32. Eliminar espacios
S:ltrim,rtrim
O:ltrim,rtrim,trim
33. :select REPLICATE('abcd',2) value
O: No encontrado
34. Comparación de similitud de pronunciación (las dos palabras devuelven el mismo valor y tienen la misma pronunciación) p>
S: SELECCIONAR SOUNDEX ('Smith'), SOUNDEX ('Smythe')
O:SELECCIONAR SOUNDEX ('Smith'), SOUNDEX ('Smythe') de dual
Utilice SELECT DIFFERENCE('Smithers', 'Smythers') en SQL Server Compare la diferencia de soundex
Devuelva 0-4, 4 es homófono, 1 es el más alto
-------------Función de fecha
35. Hora del sistema
S:seleccione el valor de getdate()
O:seleccione valor de sysdate de dual
36. Varios días antes y después
Suma y resta directamente con números enteros
37. S: seleccione el valor convert(char(10),getdate(),20)
O: seleccione el valor trunc(sysdate) de dual
seleccione to_char(sysdate,'yyyy-mm -dd') valor de dual
38. Encuentra la hora
S: selecciona convert(char(8),getdate(),108) value
O: seleccione el valor to_char(sysdate,'hh24:mm:ss') de dual
39. Obtenga otras partes de las funciones de fecha y hora
S:DATEPART y DATENAME (determinadas). por el primer parámetro)
O: El segundo parámetro de la función to_char determina
Parámetros-------------------------------- - Es necesario complementar la siguiente tabla
año yy, yyyy
trimestre qq, q (trimestre)
mes mm, m (m O no es válido)
día del año dy, y (O representa la semana)
día dd, d (d O no es válido)
semana semana, ww (la semana O no es válida)
día laborable dw (O no está claro)
Hora hh,hh12,hh24 (hh12,hh24 S no es válido)
minuto mi, n (n O no es válido)
segundo ss, s (s O no es válido)
milisegundo ms (O no es válido)
--------- ------------ --------------------------
40. del mes
S: No lo sé
p>O: seleccione el valor LAST_DAY(sysdate) de dual
41. semana (como el domingo)
S: No lo sé
O:SELECT Next_day(sysdate,7) vaule FROM DUAL;
Convertir cadena a hora
S: puede convertir directamente o seleccionar el valor cast('2004-09-08' como fecha y hora)
O:SELECT To_date('2004-01-05 22: 09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;
43. Encuentra la diferencia entre una determinada parte de dos fechas (como segundos)
S: seleccione el valor de dateiff(ss,getdate(),getdate()+12.3)
O: reste directamente dos fechas (por ejemplo, d1-d2=12.3)
SELECT (d1-d2)*24*60*60 vaule FROM DUAL;
44. Según la diferencia Encuentra la nueva fecha (como minutos)
S:select dateadd (mi,8,getdate()) valor
O:SELECT sysdate+8/60/24 vaule FROM DUAL
Buscar horas en diferentes zonas horarias
S: No lo sé
O: SELECCIONE New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL
-----Parámetros de zona horaria; , Beijing en el Distrito 8 Este debe ser Ydt-------
AST ADT Hora estándar del Atlántico
BST BDT Hora estándar del mar de Bering
CST CDT Hora estándar central
EST EDT Hora estándar del este
GMT Hora media de Greenwich
HST HDT Hora estándar de Alaska — Hawái
MST MDT Montaña Hora estándar
NST Hora estándar de Terranova
PST PDT Hora estándar del Pacífico
YST YDT Hora estándar de YUKON
Funciones de caracteres compatibles con Oracle y sus equivalentes de Microsoft SQL Server:
Funciones Oracle Microsoft SQL Server
Convertir caracteres a ASCII ASCII ASCII
Conexión de cadena CONC
AT (expresión + expresión)
Convertir ASCII a caracteres CHR CHAR
Devuelve el carácter inicial de la cadena (desde la izquierda) INSTR CHARINDEX
Convertir caracteres LOWER LOWER
Convertir caracteres a mayúsculas UPPER UPPER
Rellenar el lado izquierdo de la cadena LPAD N/A
Borrar el espacio en blanco inicial LTRIM LTRIM
Borrar espacios en blanco al final RTRIM RTRIM
Iniciar patrón en cadena INSTR PATINDEX
Repetir cadena RPAD REPLICATE varias veces
La representación fonética de una cadena SOUNDEX SOUNDEX
Una cadena de espacios repetidos RPAD SPACE
Convertir de datos digitales a datos de caracteres TO_CHAR STR
Subcadena SUBSTRING
p>Reemplazar carácter REPLACE STUFF
Escribir en mayúscula la primera letra de cada palabra en la cadena INITCAP N/A
Traducir la cadena TRANSLATE N/A
Longitud de la cadena LENGTH DATELENGTH o LEN
La cadena más grande de la lista GREATEST N/A
La cadena más pequeña de la lista MENOS N/A
Si es NULL, convierte la cadena NVL ISNULL p>
Función de fecha
Función Oracle Microsoft SQL Server
Adición de fecha (columna de fecha +/- valor) o
ADD_MONTHS DATEADD
La diferencia entre dos fechas (columna de fecha +/- valor) o
MONTHS_BETWEEN DATEDIFF
La fecha y hora actuales SYSDATE GETDATE()
La último día del mes LAST_DAY N/A
Conversión de zona horaria NEW_TIME N/A
El primer domingo después de la fecha NEXT_DAY N/A
Una cadena que representa una fecha TO_CHAR DATENAME
Un número entero que representa una fecha TO_NUMBER
(TO_CHAR)) DATEPART
Redondeo de fechas ROUND CONVERT
Truncamiento de fechas TRUNC CONVERT
Convertir cadena a fecha TO_DATE CONVERT
Convertir fecha si NULL NVL ISNULL
Función de conversión
Función Oracle Microsoft SQL Server p>
Convertir números a caracteres TO_CHAR CONVERT
Convertir caracteres a números TO_NUMBER CONVERT
Convertir fechas a caracteres TO_CHAR CONVERT
Convertir caracteres a fechas TO_DATE CONVERT
Convertir hexadecimal a binario HEX_TO_RAW CONVERT
Convertir binario a hexadecimal RAW_TO_HEX CONVERT p>
Otras funciones a nivel de fila
Función Oracle Microsoft SQL Server
Devuelve la primera expresión no vacía DECODE COALESCE
El valor de secuencia actual CURRVAL N/A
Siguiente valor de secuencia NEXTVAL N/A
Si exp1 = exp2, devuelve nulo
l DECODE NULLIF
Número de identificación de la cuenta de inicio de sesión del usuario UID SUSER_ID
Nombre de inicio de sesión del usuario USER SUSER_NAME
Número de identificación de la base de datos del usuario UID USER_ID
Usuario Nombre de la base de datos USER USER_NAME
Usuario actual CURRENT_USER CURRENT_USER
Entorno de usuario (pista de auditoría) USERENV N/A
Nivel en la cláusula CONNECT BY LEVEL N/ A
Función de agregación
Función Oracle Microsoft SQL Server
Promedio AVG AVG
Conteo COUNT COUNT
Máximo MAX MAX
Mínimo MIN MIN
Desviación estándar STDDEV STDEV o STDEVP
Suma SUM SUM
Varianza VARIANCE VAR o VARP
Oracle también tiene una función útil EXTRACT, que extrae y devuelve un dominio de tiempo específico en una expresión de fecha, hora o intervalo de tiempo:
EXTRACT(AÑO DESDE fecha)