Lenguaje SQL SQL Server 2005



Documentos relacionados
Lenguaje SQL SQL Server 2005

Lenguaje SQL. Marta E. Zorrilla, Eduardo Mora. Universidad de Cantabria. Departamento de Matemática Aplicada y Ciencias de la Computación

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

Bases de Datos Relacionales

Lenguaje SQL TSQL Marta Zorrilla

A.1. Definiciones de datos en SQL

Bases de Datos. Marta Elena Zorrilla Pantaleón Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN. Tema 03. Lenguaje SQL.

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

Tema 2 Modelos de Base de Datos. Profesor Luis Gmo. Zúñiga Mendoza UMCA

SQL (Structured Query Language)

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales.

m046a Curso Consultando SQL Server 2005/2008 con Transact-SQL, 15 h

Consultas con combinaciones

MANUAL BÁSICO DEL LENGUAJE SQL

Procedimientos para agrupar y resumir datos

Bases de Datos: Structured Query Language (SQL)

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Crear BD en. Isis Bonet Cruz, PhD

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

2- Creación de tablas y manejos de datos.

1. DML. Las subconsultas

8 SQL SERVER 2008 RA-MA

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS BASICAS EN SQL SERVER

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

SENTENCIAS Y CONSULTAS EN SQL SERVER

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

6- Combinación de tablas

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

Base de datos I Facultad de Ingeniería. Escuela de computación.

ÍNDICE. Introducción... Capítulo 1. Novedades, mejoras y requisitos para la instalación... 1

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

Bases de Datos 2. Teórico

Restricciones de Integridad

ADMINISTRACIÓN DE BASE DE DATOS

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

Objetos de la Base de Datos

Base de datos I Facultad de Ingeniería. Escuela de computación.

Repaso de Conceptos Básicos de Bases de Datos

T12 Vistas y tablas temporales

MySQL y Sesiones en PHP. Área de Ingeniería Telemática

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

CURSO DE SQL SERVER 2005

Diseño de bases de datos

Práctica 3. Consultas SQL

Oracle 12c DISEÑO Y PROGRAMACIÓN

Seguridad en SQL Server 2005

TEMA 20: CONCEPTOS BÁSICOS DE SQL

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server Barrios

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h

Administración y programación de Bases de Datos con SQL Server 2005

Tema: Creacion de una base de datos utilizando sintaxis Sql.

MANUALITO MS-SQL SERVER

Restricciones (constraints) FOREIGN KEY

ÍNDICE PRIMERA PARTE... 17

Curso Oficial Microsoft: LENGUAJE DE CONSULTA DE SQL SERVER. Duración : 35 Hrs.

Base de datos relacional

- Bases de Datos - - Diseño Físico - Luis D. García

Formato para prácticas de laboratorio

Tipos de datos de campo disponibles en Access (MDB)

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

Formato para prácticas de laboratorio

Guía práctica de SQL

Curso SQL Nivel Avanzado 1. Miguel Jurado García

Manual Práctico de SQL. ORIENTADO A SQL 7.0 Preparado por: Alvaro E. García alvaroegarcia@ubbi.com

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

SQL Los fundamentos del lenguaje

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

Microsoft SQL Server 2005

1

Implementación de funciones definidas por el usuario

Tema: Creacion de una base de datos utilizando sintaxis Sql.

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Tema 4. Manipulación de datos con SQL

Base de datos Procedimientos Almacenados y Funciones

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Capítulo 12: Indexación y asociación

3ra. Parte. Bases de Datos Relacionales

Trabajos de Ampliación. Bases de datos NoSQL.

Índice. iii. Objetivos... 24

8283: Administración y programación en Microsoft SQL Server 2012

El lenguaje SQL es un lenguaje estándar para el acceso y

SERVICIO NACIONAL DE APRENDIZAJE SENA

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Tema 33. El lenguaje SQL

ACERCA DE LOS AUTO RES... III AGRADECIMIENTOS... xi INTRODUCCION... Xl

SQL Server FEMEPA SQL Server 2000

5- Uso de sentencias avanzadas

Transcripción:

Lenguaje SQL SQL Server 2005 Marta E. Zorrilla Departamento de Matemática, Estadística y Computación Universidad de Cantabria Marta Zorrilla 2008-2009 1

Contenido Introducción. Introducción. Instrucciones Instrucciones de de Definición Definición de de Datos. Datos. Ejemplos. Ejemplos. Instrucciones Instrucciones de de Manipulación Manipulación de de Datos. Datos. Ejemplos. Ejemplos. Referencias bibliográficas: - Kalen Delaney. A fondo Microsoft SQL Server 2000. McGraw-Hill, 2001 - Henderson, K. SQL Server 2000 Stored Procedure & XML Programming, 2ª ed. 2002. - Henderson, K. The Guru's Guide to Transact-SQL. Addison-Wesley. 2000. - Sunderic, D. Microsoft SQL Server 2005 stored procedure programming in T-SQL &.NET. 2006 - Sql Server 2005. Ayuda online. Marta Zorrilla 2008-2009 2

Introducción SQL (Structured Query Language). Lenguaje declarativo de acceso a los datos. Estándar para las bases de datos relacionales. Incluye la capacidad de manipular tanto la estructura de la base de datos como sus datos. Aspectos de seguridad. Desarrollado en el Laboratorio de investigación de San José de IBM. Fue utilizado por primera vez en 1970. En 1986: ANSI (American National Standards Institute) e ISO (International Standards Organization) publicaron una norma, denominada SQL-86. Ésta ha tenido dos actualizaciones: SQL-89 y SQL-92. En la actualidad, se trabaja con el SQL:1999 y SQL:2003 Marta Zorrilla 2008-2009 3

SQL-92 y SQL-99 SQL-92 incorpora: Nuevos operadores relacionales: OUTER JOIN y JOIN SQL dinámico El parámetro SQLSTATE para gestión de errores Cursores de desplazamiento (scroll cursor). Modo de acceso (lectura o lectura/escritura) y nivel de aislamiento de las transacciones. Definir dominios (CREATE DOMAIN). En la actualidad, se trabaja con el SQL:1999 (revisado en SQL3). Las características más relevantes son: Nuevos tipos de datos: LOB, BOOLEAN, ROW, ARRAY, DISTINCT. Posibilidad de definir nuevos tipos de datos por parte del usuario (limitado). Disparadores (triggers), vistas actualizables (Indexed views) Cursores (punteros) sensitivos. Queries recursivos. Definición de roles de usuario Incorporación de las características de orientación a objetos: tipos de datos abstractos, generalización, herencia y polimorfismo. Marta Zorrilla 2008-2009 4

SQL:2003 Nuevos tipos de datos: MULTISET, BIGINT y XML Columnas calculadas en tablas (valores escalares) Funciones escalares y que devuelven tablas Creación de tablas: LIKE, AS MERGE: permite la combinación de operaciones de inserción y actualización en una sola instrucción Generadores de secuencia. Nuevas funciones escalares, de agregación, de clasificación (RANK, ROW_NUMBER...) Marta Zorrilla 2008-2009 5

Lenguaje de definición n de datos SQL Server 2005 (Parte 1)

Instrucciones de Definición n de Datos (IDD) Las IDD comprenden todas las operaciones necesarias para implantar y mantener un esquema relacional. Con ellas, se describen los datos y su agrupamiento formando tablas, así como las restricciones que deben cumplir. Las IDD permiten crear, modificar y eliminar tablas, así como todos los componentes que las definen: campos, índices, claves, etc. y las restricciones que sean precisas. Principales instrucciones: CREATE DATABASE CREATE TABLE ALTER TABLE CREATE INDEX CREATE VIEW CREATE TRIGGER CREATE PROCEDURE / FUNCTION CREATE RULE DROP objeto Cláusula CONSTRAINT Marta Zorrilla 2008-2009 7

IDD I : CREATE DATABASE Para crear una base de datos. Su sintaxis es: CREATE DATABASE nombrebd [[ ON ON [[ < fichero fichero > [[,...n,...n]]] ] [[,, < grupo_fichero > [[,...n,...n]]] ] ]] [[ LOG LOG ON ON {{ < fichero fichero > [[,...n,...n]]}}] ] [[ COLLATE collation_name ]] [[ FOR FOR LOAD LOAD FOR FOR ATTACH ]] < fichero fichero > ::= ::= [[ PRIMARY ]] (([[ NAME NAME = logical_file_name,,]] FILENAME = 'os_file_name' [[,, SIZE SIZE = size size ]] [[,, MAXSIZE = {{ max_size UNLIMITED }}]] [[,, FILEGROWTH = growth_increment ]]))[ [,...n,...n]] < grupo_fichero > ::= ::= FILEGROUP filegroup_name < fichero fichero > [[,...n,...n]] nombrebd: nombrebd: es es el el nombre nombre de de la la BD BD que que se se va va a a crear. crear. collation_name: collation_name: mapa mapa de de caracteres caracteres logical_file_name logical_file_name :: nombre nombre lógico lógico del del fichero. fichero. os_file_name os_file_name :: nombre nombre físico físico del del fichero. fichero. size: size: es es el el tamaño tamaño del del fichero. fichero. max_size: max_size: es es el el tamaño tamaño máximo máximo del del fichero. fichero. growth_increment growth_increment :: incremento incremento del del fichero. fichero. filegroup_name: filegroup_name: nombre nombre grupo grupo de de archivos archivos Marta Zorrilla 2008-2009 8

IDD I : CREATE DATABASE. Ejemplo CREATE DATABASE [compras] ON ON (NAME (NAME = N'compras', FILENAME = N'C:\data\compras.mdf',, SIZE SIZE = 2, 2, MAXSIZE = 3000,FILEGROWTH = 10%) 10%) LOG LOG ON ON (NAME (NAME = N'compras_log', FILENAME = N'C:\data\compras_log.LDF',, SIZE SIZE = 1, 1, FILEGROWTH = 10%) 10%) COLLATE Modern_Spanish_CI_AS Marta Zorrilla 2008-2009 9

Páginas y extensiones PÁGINA: es la unidad fundamental de almacenamiento de datos en Microsoft SQL Server. Su tamaño es de 8 KB. Esto significa que las bases de datos de SQL Server 2005 tienen 128 páginas por cada megabyte. El inicio de cada página es un encabezado de 96 bytes utilizado para almacenar información del sistema, como el tipo de página, la cantidad de espacio libre en la página y el Id. del objeto propietario de la página. En SQL Server, las filas no pueden continuar en otras páginas. En SQL Server, la máxima cantidad de datos contenidos en una fila es de 8060 bytes, sin incluir los tipos de dato text, ntext e image. Al final de cada página se encuentra una tabla de desplazamiento de filas. La tabla de desplazamiento de filas contiene una entrada por cada fila de la página y cada entrada registra la posición del primer byte de la fila con respecto al principio de la página. Las entradas de la tabla de desplazamiento de filas están en orden inverso a la secuencia de las filas de la página Las EXTENSIONES son la unidad básica en la que se asigna espacio a las tablas e índices. Una extensión consta de 8 páginas contiguas, es decir 64 KB. Esto significa que las bases de datos de SQL Server tienen 16 extensiones por megabyte. Marta Zorrilla 2008-2009 10

SQL Server database Data (file).mdf or.ndf Log (file).ldf Tablas e índices Extents = 8 páginas continuas de 8 KB Datos se almacenan en Páginas de 8 KB Tamaño máx. fila 8060 bytes 128 páginas por MB Cabecera Filas de datos Matriz desplazamientos Cada archivo se divide en páginas de 8 Kb numeradas de 0 hasta x, donde x viene definido por el tamaño del fichero. Acceder a una página: ID de BD, ID de fichero y nº de pág Fichero mdf: punto de comienzo de la BD, en sysfiles apunta los ficheros que constituyen la BD y además almacena las tablas del sistema. Marta Zorrilla 2008-2009 11

IDD II : CREATE TABLE Para incorporar una tabla nueva a la base de datos. Su sintaxis es: CREATE TABLE [[ nombredb.[ propietario ]].. propietario. ]] tabla tabla (campo1 tipo tipo [(tamaño)] [NOT [NOT NULL] NULL] [restricción_un_campo1 [[......] ]] [, [, campo2 tipo tipo [(tamaño)] [NOT [NOT NULL] NULL] [restricción_un_campo2 [[......] ]] [, [,...]] [, [, restricción_varios_campos [, [,...]...]]]) ) [[ ON ON { grupo_fichero DEFAULT } ]] [[ TEXTIMAGE_ON { grupo_fichero DEFAULT } ]] tabla: tabla: es es el el nombre nombre de de la la tabla tabla que que se se va va a a crear. crear. campo1, campo1, campo2: campo2: son son nombres nombres de de campos. campos. Debe Debe crearse crearse al al menos menos un un campo. campo. tipo: tipo: es es el el tipo tipo de de dato dato asociado asociado al al campo. campo. tamaño: tamaño: es es el el tamaño tamaño del del campo campo en en caracteres caracteres (solamente (solamente para para campos campos de de tipo tipo Texto). Texto). restricción_un_campo1, restricción_un_campo2: son son cláusulas cláusulas CONSTRAINT CONSTRAINTque que afectan afectan a a un un único único campo. campo. restricción_varios_campos: es es una una cláusula cláusula CONSTRAINT CONSTRAINTque que define define un un índice índice de de múltiples múltiples campos. campos. ON: ON: Especifica Especifica el el grupo grupo de de archivos archivos en en el el que que se se almacena almacena la la tabla. tabla. Marta TEXTIMAGE_ON: TEXTIMAGE_ON: Zorrilla indica indicaen en qué quégrupo de de archivos archivos 2008-2009 se se almacenan almacenanlas las columnas columnas text, text, ntext ntexte e image. image. 12

IDD I : CREATE DATABASE TABLE. Ejemplo CREATE CREATE DATABASE DATABASE MyDB MyDB ON ON PRIMARY PRIMARY (( NAME='MyDB_Primary', FILENAME= FILENAME= 'c:\program 'c:\programfiles\microsoft Files\MicrosoftSQL SQL Server\MSSQL.1\MSSQL\data\MyDB_Prm.mdf', SIZE=4MB, SIZE=4MB, MAXSIZE=10MB, MAXSIZE=10MB, FILEGROWTH=1MB), FILEGROWTH=1MB), FILEGROUP FILEGROUPMyDB_FG1 (( NAME NAME = 'MyDB_FG1_Dat1', 'MyDB_FG1_Dat1', FILENAME FILENAME = 'c:\program 'c:\programfiles\microsoft Files\MicrosoftSQL SQL Server\MSSQL.1\MSSQL\data\MyDB_FG1_1.ndf', SIZE SIZE = 1MB, 1MB, MAXSIZE=10MB, MAXSIZE=10MB, FILEGROWTH=1MB), FILEGROWTH=1MB), (( NAME NAME = 'MyDB_FG1_Dat2', 'MyDB_FG1_Dat2', FILENAME FILENAME = 'c:\program 'c:\programfiles\microsoft Files\MicrosoftSQL SQL Server\MSSQL.1\MSSQL\data\MyDB_FG1_2.ndf', SIZE SIZE = 1MB, 1MB, MAXSIZE=10MB, MAXSIZE=10MB, FILEGROWTH=1MB) FILEGROWTH=1MB) LOG LOG ON ON (( NAME='MyDB_log', NAME='MyDB_log', FILENAME FILENAME = 'c:\program 'c:\programfiles\microsoft Files\MicrosoftSQL SQL Server\MSSQL.1\MSSQL\data\MyDB.ldf', SIZE=1MB, SIZE=1MB, MAXSIZE=10MB, MAXSIZE=10MB, FILEGROWTH=1MB); FILEGROWTH=1MB); CREATE CREATE TABLE TABLEMyTable (( cola cola int intprimary KEY, KEY, colb colbchar(8) char(8) )) ON Marta Zorrilla ONMyDB_FG1; 2008-2009 13

IDD III : ALTER TABLE Para modificar el diseño de una tabla que ya existe en la base de datos. Su sintaxis es: ALTER ALTER TABLE tabla tabla {{ ADD ADD [COLUMN] campo campo tipo[(tamaño)] [NOT [NOT NULL] NULL] [restricción_un_campo] [[ WITH WITH CHECK WITH WITH NOCHECK ]] ADD ADD {{ restricción_tabla }}[[,...n,...n]] ALTER ALTER COLUMN {{ campo campo tipo tipo [(tamaño)] }} DROP DROP {COLUMN campo campo CONSTRAINT nombre_restricción} {{ ENABLE DISABLE }} TRIGGER {{ ALL ALL nombre_trigger [[,...n,...n]]}} {{ CHECK NOCHECK }} CONSTRAINT {{ ALL ALL nombre_restricción[,...n,...n]]}}} tabla: tabla: es es el el nombre nombre de de la la tabla tabla que que se se va va a a modificar. modificar. campo: campo: es es el el nombre nombre del del campo campo que que se se va va a a añadir añadir o o modificar modificar en en la la tabla tabla.. tipo: tipo: es es el el tipo tipo de de dato dato que que se se asigna asigna a a campo. campo. tamaño: tamaño: es es el el tamaño tamaño del del campo campo en en caracteres caracteres (solamente (solamente para para campos campos de de tipo tipo Texto). Texto). restricción_un_campo: restricción_un_campo: es es una una cláusula cláusula CONSTRAINT CONSTRAINTque que afectan afectan a a un un único único campo. campo. restricción_tabla: restricción_tabla: es es una una cláusula cláusula CONSTRAINT CONSTRAINTque que afecta afecta a a varios varioscampos. nombre_restricción: nombre_restricción: es es el el nombre nombre de de la la restricción restricción que que se se va va a a eliminar eliminaro o ha ha habilitar/deshabilitar. habilitar/deshabilitar. nombre_trigger: nombre_trigger: es es el el nombre nombre del del desencadenador desencadenador que que se se va va a a eliminar eliminaro o ha ha habilitar/deshabilitar. habilitar/deshabilitar. Marta Zorrilla 2008-2009 14

IDD IV : CLÁUSULA CONSTRAINT SOBRE UN SOLO CAMPO Se utiliza en instrucciones CREATE TABLE y ALTER TABLE para crear o eliminar restricciones. Esta cláusula puede referirse a un campo de la tabla. La restricción Primary Key y Unique generan índice, Foreign key no. CONSTRAINT CONSTRAINT nombre nombre { { [ [ NULL NULL NOT NOT NULL NULL ] ] [ [ { { PRIMARY PRIMARY KEY KEY UNIQUE UNIQUE } } [ [ CLUSTERED CLUSTERED NONCLUSTERED NONCLUSTERED ] ] [ [ WITH WITH FILLFACTOR FILLFACTOR = = factor_relleno factor_relleno ] ] [ [ ON ON {grupo_ficheros {grupo_ficheros DEFAULT} DEFAULT} ] ] ] ] ] [ [ [ FOREIGN FOREIGN KEY KEY ] ] REFERENCES REFERENCES otra_tabla[ otra_tabla[ (campo_externo1) (campo_externo1) ] ] [ [ ON ON DELETE DELETE {NO {NO ACTION ACTION CASCADE CASCADE SET SET NULL NULL SET SET DEFAULT DEFAULT } } ] ] [ [ ON ON UPDATE UPDATE {NO {NO ACTION ACTION CASCADE CASCADE SET SET NULL NULL SET SET DEFAULT DEFAULT } } ] ] [ [ NOT NOT FOR FOR REPLICATION REPLICATION ] ] ] ] CHECK CHECK [ [ NOT NOT FOR FOR REPLICATION REPLICATION ] ] ( ( expresión_lógica expresión_lógica ) ) } } nombre: nombre: es es el el nombre nombre de de la la restricción restricción que que se se va va a a crear. crear. otra_tabla: otra_tabla: es es el el nombre nombre de de la la tabla tabla a a la la que que se se hace hace referencia. referencia. campo_externo1: campo_externo1: son son los los nombres nombres de de los los campos campos de de la la otra_tabla otra_tablaa a los los que que se se hace hace referencia. referencia. factor_relleno: factor_relleno: especifica especifica cuánto cuánto se se debe debe llenar llenar cada cada página página de de índice índice utilizada utilizada para para almacenar almacenar los los datos datos de de índice.entre índice.entre 00 y y 100. 100. Por Por defecto defecto 0. 0. grupo_ficheros: grupo_ficheros: indica indica dónde dónde se se almacena almacena la la tabla tabla expresión_lógica: Marta expresión_lógica: Expresión Zorrilla Expresión que que devuelve devuelve true trueo 2008-2009 o false false 15

IDD V: CLÁUSULA CONSTRAINT SOBRE TABLA CONSTRAINT CONSTRAINTnombre {{ [[{{ PRIMARY PRIMARY KEY KEY UNIQUE UNIQUE }} [[ CLUSTERED CLUSTERED NONCLUSTERED NONCLUSTERED ]] {{(principal1 (principal1[ [ ASC ASC DESC DESC ]][ [,, principal2 principal2 [, [,...]...]] ]))} } [[ WITH WITH FILLFACTOR FILLFACTOR = factor_relleno] factor_relleno] [[ ON ON {{ grupo_ficheros grupo_ficheros DEFAULT DEFAULT }}] ] ]] FOREIGN FOREIGN KEY KEY [[(referencia1 (referencia1[,[, referencia2 referencia2 [, [,...]...]] ]))] ] REFERENCES REFERENCES otra_tabla otra_tabla [[(campo_externo1 (campo_externo1[ [,...,... campo_externo2 campo_externo2 ]]))] ] [[ ON ON DELETE DELETE {NO {NO ACTION ACTION CASCADE CASCADE SET SET NULL NULL SET SET DEFAULT DEFAULT }}] ] [[ ON ON UPDATE UPDATE {NO {NO ACTION ACTION CASCADE CASCADE SET SET NULL NULL SET SET DEFAULT DEFAULT }}] ] [[ NOT NOT FOR FOR REPLICATION REPLICATION ]] CHECK CHECK [[ NOT NOT FOR FOR REPLICATION REPLICATION ]] (expresión_lógica (expresión_lógica) ) }} nombre: nombre: es es el el nombre nombre de de la la restricción restricción que que se se va va a a crear. crear. principal1, principal1, principal2: principal2: son son los los nombres nombres de de los los campos campos que que compondrán compondrán la la clave clave principal. principal. referencia1, referencia1, referencia2: referencia2: son son los los nombres nombres de de los los campos campos que que hacen hacen referencia referencia a a otros otros de de otra otra tabla. tabla. otra_tabla: otra_tabla: es es el el nombre nombre de de la la tabla tabla a a la la que que se se hace hace referencia. referencia. campo_externo1, campo_externo1, campo_externo2: campo_externo2: son son los los nombres nombres de de los los campos campos de de la la otra_tabla otra_tablaa a los los que que se se hace hace referencia. referencia. expresión_lógica: expresión_lógica: criterio criterio que que se se ha ha de de cumplir. cumplir. Devuelve Devuelve true trueo o false false Marta Zorrilla 2008-2009 16

Ejemplo La La base base de de datos datos trata trata de de informatizar informatizar el el proceso proceso de de compras compras de de una una empresa. empresa. Esto Esto es, es, recoger recoger los los pedidos pedidos de de los los artículos, artículos, contemplados contemplados en en su su catálogo, catálogo, que que compran compran a proveedores proveedores ya ya conocidos. conocidos. Reglas: Reglas: --No No puede puede seleccionar seleccionar un un artículo artículo descatalogado. descatalogado. --Si Si el el stock stock alcanza alcanza el el mínimo mínimo establecido, establecido, se se ha ha de de notificar notificar como como un un evento. evento. Marta Zorrilla 2008-2009 17

IDD: CREATE TABLE Ejemplos Escribir las instrucciones SQL necesarias para construir la base de datos cuyo esquema de relaciones es: CREATE CREATE TABLE TABLE Lineas Lineas (( CREATE CREATE TABLE TABLE numped numped Proveedores Proveedores INTEGER INTEGER (( NOT NOT NULL, NULL, codigpro codigpro CHAR(4) CHAR(4) numlin numlin NOT SMALLINT NOT SMALLINT NULL NULL NOT NOT CONSTRAINT CONSTRAINT NULL, NULL, id_pro id_pro PRIMARY PRIMARY KEY, KEY, CREATE CREATE TABLE cifpro TABLE Articulos cifpro CHAR(12) codigart Articulos ( CREATE CHAR(12) codigart NOT CHAR(6) ( CREATE TABLE TABLE Pedidos Pedidos ( NOT CHAR(6) ( NULL NULL NOT NOT CONSTRAINT CONSTRAINT NULL, NULL, u_cif u_cifunique, codigart nombrprocodigart CHAR(6) CHAR(30) unilin CHAR(6) NOT CHAR(30) unilin FLOAT NOT FLOAT NOT NULL, NOT NULL NOT NULL CONSTRAINT NOT NULL, CONSTRAINT id_art id_artprimary KEY, numped KEY, numped INTEGER INTEGER NULL, NOT NOT NULL, NULL NULL CONSTRAINT CONSTRAINT id_ped id_pedprimary KEY, KEY, descrart direcpro direcpro CHAR(30) descrart CHAR(40) preunlinchar(40) NOT CHAR(30) NOT MONEY NOT MONEY NULL, NOT NULL, fechaped NOT NULL, fechaped DATETIME DATETIMENULL, NOT NOT NOT NULL, NULL, NULL NULL DEFAULT DEFAULT getdate(), getdate(), preunart cpostpro cpostprochar(5) preunart MONEY desculinmoney NOT NOT NOT FLOAT FLOAT NULL NOT NULL, codigpro NULL NOT CHECK NULL, codigpro CHAR(4) CHAR(4) NOT CHECK NOT NOT NULL NULL NULL, (cpostpro NULL, (cpostpro CHECK CHECK like like (desculin>=0 (desculin>=0 '[0-9][0-9][0-9][0-9][0-9]'), and anddesculin<=100), desculin<=100), stockart localpro stockart INTEGER localpro CHAR(20) CHAR(20) totallin INTEGER NOT totallin NOT AS NOT AS ([preunlin] ([preunlin] NULL, NOT NULL NULL CHECK NULL, **[unilin] CHECK (stockart [unilin]**(1 (1 [desculin] (stockart >0), ivaped >0), ivaped FLOAT FLOAT NOT NOT NULL NULL CHECK CHECK (ivaped>0 (ivaped>0 // 100)), 100)), and andivaped<100), stockmin telefpro telefpro CONSTRAINT stockmin INTEGER CONSTRAINT CHAR(17) INTEGER NOT CHAR(17) NOT NOT id_lin id_lin NULL, NULL, PRIMARY NOT NULL NULL CHECK PRIMARY KEY CHECK (stockmin>0), fentrped KEY (numped, (stockmin>0), fentrped DATETIME DATETIME NOT NOT NULL, NULL, (numped, numlin), numlin), fecbaja faxpro faxpro fecbaja DATETIME) CONSTRAINT CHAR(17), DATETIME) CONSTRAINT CHAR(17), f_pro f_prof_ped FOREIGN f_ped FOREIGN FOREIGN FOREIGN KEY KEY (codigpro) KEY (codigpro) KEY (numped) (numped) REFERENCES REFERENCES Proveedores Proveedores Pedidos Pedidos (codigpro), (codigpro), (numped), (numped), emailpro emailpro CONSTRAINT CONSTRAINT CHAR(25), CHAR(25), c_fecha c_fecha f_art f_art CHECK CHECK FOREIGN FOREIGN (fechaped<=fentrped)) KEY KEY (codigart) (codigart) REFERENCES REFERENCES Articulos Articulos (codigart)) (codigart)) procepro procepro CHAR(10) CHAR(10) NOT NOT NULL NULL CHECK CHECK (procepro (procepro in in ('UE', ('UE','No 'No UE'))) UE'))) Marta Zorrilla 2008-2009 18

IDD : ALTER TABLE. Ejemplos ALTER ALTER TABLE [dbo].[proveedores] ADD ADD CONSTRAINT [id_pro] [id_pro] PRIMARY KEY KEY CLUSTERED (([codigpro] )) ON ON [PRIMARY] GO GO ALTER ALTER TABLE [dbo].[pedidos] WITH WITH NOCHECK ADD ADD CONSTRAINT [DF_Pedidos_fechaped] DEFAULT (getdate()) FOR FOR [fechaped], CONSTRAINT [c_fecha] CHECK ([fechaped] <= <= [fentrped]), CHECK ([ivaped] > 0 and and [ivaped] < 100) 100) GO GO ALTER ALTER TABLE [dbo].[proveedores] ADD ADD CONSTRAINT [u_cif] [u_cif] UNIQUE NONCLUSTERED (([cifpro] [cifpro])) ON ON [PRIMARY],, CHECK ([cpostpro] like like '[0-9][0-9][0-9][0-9][0-9]'), CHECK ([procepro] = 'No 'No UE' UE' or or [procepro] = 'UE') 'UE') GO GO Marta Zorrilla 2008-2009 19

IDD VI : CREATE INDEX Para crear un índice nuevo en una tabla que ya existe en la base de datos. Su sintaxis es: CREATE [[ UNIQUE ]][[ CLUSTERED NONCLUSTERED ]] INDEX INDEXíndice ON ON {tabla {tabla vista vista }}(campo1 [[{ASC {ASC DESC DESC }] }][,[, campo2 [{ASC DESC}],...])...]) [[ WITH WITH < opción_índice > [[,...n],...n]]] [[ ON ON grupo_ficheros ]] < opción_índice > :: :: = {{ PAD_INDEX FILLFACTOR = factor_relleno IGNORE_DUP_KEY DROP_EXISTING STATISTICS_NORECOMPUTE SORT_IN_TEMPDB }} UNIQUE: UNIQUE: señala señala que que el el índice índice es es de de unicidad, unicidad, en en caso caso contrario contrario permitirá permitirárepetición repetición de de valores. valores. índice: índice: es es el el nombre nombre del del índice índice que que se se va va a a crear. crear. tabla/vista: tabla/vista: es es el el nombre nombre de de una una tabla/vista tabla/vista existente existente a a la la que que estará estaráasociado asociado el el índice. índice. campo1, campo1, campo2: campo2: son son los los nombres nombres de de los los campos campos que que van van a a formar formar el el índice. índice. Puede Puede ser ser un un solo solo campo. campo. Para Para forzar forzar una una ordenación ordenación descendente descendente de de un un campo, campo, hay hay que que utilizar utilizar la la palabra palabra reservada reservada DESC; DESC; sino sino se se especifica especifica o o se se escribe escribe ASC, ASC, se se entiende entiende que que la la ordenación ordenación es es ascendente. ascendente. CREATE INDEX INDEXFK_Lineas ON ONLineas (codigart) Marta Zorrilla 2008-2009 20

SQL Server 2005 Tabla del catálogo: sysindexes Índice cluster Índice no cluster Marta Zorrilla 2008-2009 21

Tipos de datos Consideraciones Consideraciones previas: previas: Qué tipo de información se va a almacenar. Por ejemplo, no se Qué tipo de información se va a almacenar. Por ejemplo, no se pueden guardar caracteres en un campo cuyo tipo de datos sea pueden guardar caracteres en un campo cuyo tipo de datos sea numérico. numérico. El espacio de almacenamiento necesario (dimensionar el campo). El espacio de almacenamiento necesario (dimensionar el campo). Qué tipo de operaciones se van a realizar con los valores del campo. Qué tipo de operaciones se van a realizar con los valores del campo. Pues, por ejemplo, no se puede calcular la suma de dos cadenas de Pues, por ejemplo, no se puede calcular la suma de dos cadenas de texto. texto. Si se desea ordenar o indexar por ese campo. Los criterios de Si se desea ordenar o indexar por ese campo. Los criterios de ordenación difieren en función del tipo de dato, así, los números ordenación difieren en función del tipo de dato, así, los números almacenados en un campo texto se ordenan según el valor de su almacenados en un campo texto se ordenan según el valor de su código ASCII (1,10,11,2,20,...) que no coincide con la ordenación código ASCII (1,10,11,2,20,...) que no coincide con la ordenación numérica. numérica. Marta Zorrilla 2008-2009 22

Tipos de datos en SQL Server 2005 I NUMÉRICOS bigint Datos enteros (números enteros) comprendidos entre -2^63 (-9223372036854775808) y 2^63-1 (9223372036854775807). int Datos enteros (números enteros) comprendidos entre -2^31 (-2.147.483.648) y 2^31-1 (2.147.483.647). smallint Datos enteros comprendidos entre 2^15 (-32.768) y 2^15-1 (32.767). tinyint Datos enteros comprendidos 0 y 255. bit Datos enteros con valor 1 ó 0. decimal Datos de precisión y escala numérica fijas comprendidos entre -10^38 +1 y 10^38 1. numeric Funcionalmente equivalente a decimal. money Valores de moneda comprendidos entre -2^63 (-922.337.203.685.477,5808) y 2^63-1 (+922.337.203.685.477,5807), con una precisión de una diezmilésima de la unidad monetaria. smallmoney Valores de moneda comprendidos entre -214.748,3648 y +214.748,3647, con una precisión de una diezmilésima de la unidad monetaria. float Números con precisión de coma flotante comprendidos entre -1,79E + 308 y 1,79E + 308. real Números con precisión de coma flotante comprendidos entre -3,40E + 38 y 3,40E + 38. Marta Zorrilla 2008-2009 23

Tipos de datos en SQL Server 2005 II FECHAS datetime Datos de fecha y hora comprendidos entre el 1 de enero de 1753 y el 31 de diciembre de 9999, con una precisión de 3,33 milisegundos. smalldatetime Datos de fecha y hora comprendidos entre el 1 de enero de 1900 y el 6 de junio de 2079, con una precisión de un minuto. CADENAS DE CARACTERES char Datos de caracteres no Unicode de longitud fija con una longitud máxima de 8.000 caracteres. varchar Datos no Unicode de longitud variable con un máximo de 8.000 caracteres. text Datos no Unicode de longitud variable con una longitud máxima de 2^31-1 (2.147.483.647) caracteres. nchar Datos Unicode de longitud variable con una longitud máxima de 4.000 caracteres. nvarchar Datos Unicode de longitud variable con una longitud máxima de 4.000 caracteres. ntext Datos Unicode de longitud variable con una longitud máxima de 2^30-1 (1.073.741.823) caracteres. Marta Zorrilla 2008-2009 24

Tipos de datos en SQL Server 2005 III BINARIOS binary Datos binarios de longitud fija con una longitud máxima de 8.000 bytes. varbinary Datos binarios de longitud variable con una longitud máxima de 8.000 bytes. image Datos binarios de longitud variable con una longitud máxima de 2^31-1 (2.147.483.647) bytes. OTROS TIPOS DE DATOS cursor Una referencia a un cursor. sql_variant Un tipo de datos que almacena valores de varios tipos de datos aceptados en SQL Server, excepto text, ntext, timestamp y sql_variant. table Un tipo de datos especial que se utiliza para almacenar un conjunto de resultados para un proceso posterior. timestamp Un número único para toda la base de datos que se actualiza cada vez que se actualiza una fila. (sinónimo rowversion) uniqueiden Un identificador exclusivo global (GUID), necesario para replicación tifier xml Almacena una instancia de XML Marta Zorrilla 2008-2009 25

Tipo de dato Autonumérico: : IDENTITY IDENTITY [[(semilla,, incremento) ]] semilla: semilla: valor valor de de inicio. inicio. incremento: incremento: incremento incrementoque que se se aplica aplica CREATE TABLE TABLE dbo.herramientas( ID ID INT INT IDENTITY(1,1) NOT NOT NULL NULL PRIMARY KEY, KEY, Nombre VARCHAR(40) NOT NOT NULL NULL )) -- --insertamos valores valores INSERT INTO INTO dbo.herramientas (Nombre )) VALUES ( Martillo') INSERT INTO INTO dbo.herramientas (Nombre )) VALUES ( Taladro') -- --si si borramos, Martillo, se se pierde pierde el el ID ID 1. 1. Para Para reutilizarlo SET SET IDENTITY_INSERT dbo.tool ON ON INSERT INTO INTO dbo.herramientas (ID, (ID, Nombre) VALUES (1, (1, Serrucho') Marta Zorrilla 2008-2009 26

Tipos definidos por el usuario: CREATE TYPE CREATE TYPE TYPE [[ nombre_schema. ]] nombre {{ FROM FROM tipo_base [[(( precision [[,, escala escala ]])) ]] [[ NULL NULL NOT NOT NULL NULL ]] EXTERNAL NAME NAME assembly_name [[.class_name ]] }}[[; ;]] nombre: nombre: es es el el nombre nombre del del tipo tipo de de dato dato que que se se va va a a crear. crear. tipo_base: tipo_base: tipo tipo de de dato dato base base en en el el que que se se a`poya a`poya CREATE TYPE TYPEiva iva FROM FROMfloat NOT NOT NULL NULL ;; Marta Zorrilla 2008-2009 27

CREATE RULE y DEFAULT (no estándar) Para crear una regla para ser utilizada en un tipo de dato definido por el usuario en la base de datos. Su sintaxis es: CREATE RULE RULEnombre AS ASexpresion_condicional nombre: nombre: es es el el nombre nombre de de la la función función que que se se va va a a crear. crear. expresion_condicional: expresion_condicional: criterio criterio que que debe debe cumplir cumplir la la regla regla Para crear un valor por defecto utilizable en un tipo de dato definido por usuario en la base de datos. Su sintaxis es: CREATE DEFAULT nombre AS ASexpresion_constante nombre: nombre: es es el el nombre nombre de de la la función función que que se se va va a a crear. crear. expresion_constante: expresion_constante: valor valor Marta Zorrilla 2008-2009 28

CREATE RULE y DEFAULT: ejemplo Objetivo crear un tipo de dato definido por el usuario, denominado iva CREATE RULE RULEr_porcentaje AS AS @valor>=0 and and @valor<=100 CREATE DEFAULT d_iva d_iva AS AS16 16 EXEC EXEC sp_addtype iva, iva, 'float', 'float','not 'notnull' null' go go EXEC EXEC sp_bindrule 'r_porcentaje', 'iva' 'iva' go go EXEC EXEC sp_bindefault 'd_iva', 'd_iva','iva' 'iva' Marta Zorrilla 2008-2009 29

Manipulación n de datos SQL Server 2005

Instrucciones de Manipulación n de Datos (IMD) I Las Las IMD IMD permiten actuar sobre los los propios datos. Las Las operaciones básicas de de manipulación de de datos son: son: insertar, modificar, borrar y consultar. Las Las tres tres primeras permiten alterar el el contenido de de la la base base de de datos. La La última consiste en en localizar datos para para su su observación. Principales instrucciones: INSERT UPDATE DELETE SELECT Marta Zorrilla 2008-2009 31

IMD II : INSERT Permite añadir una o más filas en una tabla. La sintaxis para insertar una sola fila es: INSERT INTO INTO destino destino [(campo1[, campo2[,...]])]...]])] VALUES (valor1[, valor2[, valor2[,...]])...]]) La sintaxis para insertar varias filas es: INSERT INTO INTO destino destino [(campo1[, campo2[,...]])]...]])] Instrucción_SELECT destino: es el nombre de la tabla o vista donde se van a añadir filas. campo1, campo2: son los nombres de los campos donde se van a añadir los datos. valor1, valor2: son los valores que tomarán los campos en la nueva fila que se van a insertar. Cada valor se asigna al campo que corresponde a la posición del valor en la lista, así, valor1 se asigna al campo1, valor2 al campo2, y así sucesivamente. Por su frecuencia, cabe mencionar que los valores que se asignen a campos de texto deben escribirse entre comillas simples ('texto'). Instrucción_SELECT: es la instrucción SELECT cuya ejecución proporcionará las filas a insertar. Marta Zorrilla 2008-2009 32

IMD III : UPDATE Permite modificar información existente en una o varias filas de una tabla. Su sintaxis es: UPDATE destino destinoset campo1=nuevovalor1 [, [, campo2=nuevovalor2 [, [,...]] [WHERE condición] destino: es el nombre de la tabla o vista en la que se desea modificar datos. campo1, campo2: son los nombres de los campos que van a modificar su valor. nuevovalor1, nuevovalor2: son expresiones que determinan los valores que van a tomar los campos de las filas que se van a actualizar. condición: es una expresión lógica que determina qué filas se actualizarán. Sólo se actualizarán las filas que satisfagan la expresión. Si no se incluye cláusula WHERE (no hay condición) se modificarán todas las filas de la tabla. Marta Zorrilla 2008-2009 33

IMD IV : DELETE Permite eliminar una o varias filas de una tabla. Su sintaxis es: DELETE FROM FROM destino destino [WHERE condición] destino: es el nombre de la tabla o vista cuyas filas se van a eliminar. condición: es una expresión lógica que determina qué filas se borrarán. Sólo se borrarán las filas que satisfagan la expresión. Si no se incluye cláusula WHERE (no hay condición) se borrarán todas las filas de la tabla. Marta Zorrilla 2008-2009 34

IMD V : INSERT, UPDATE, DELETE Ejemplos Insertar una nueva fila en la tabla Proveedores. INSERT INSERT INTO INTO Proveedores Proveedores (codigpro, (codigpro, cifpro, cifpro, nombrpro, nombrpro, direcpro, direcpro, cpostpro, cpostpro, localpro, localpro, telefpro, telefpro, faxpro, faxpro, procepro) procepro) VALUES VALUES ('P005', ('P005', 'A39144325', 'A39144325', 'Angulo 'Angulo Lastra, Lastra, Antonio', Antonio', 'Hernán 'Hernán Cortés,18', Cortés,18', '39002', '39002', 'Santander', 'Santander', '(34) '(34) 942 942 202 202 022', 022', '(34) '(34) 942 942 202 202 022', 022', 'UE') 'UE') Incorporar el e-mail del proveedor Luis Gil Laso, con valor mailto:gil@unican.es. UPDATE UPDATE Proveedores Proveedores SET SET emailpro='mailto:gil@unican.es' emailpro='mailto:gil@unican.es' WHERE WHERE codigpro='p004' codigpro='p004' Borrar todos los proveedores de Santander. DELETE DELETE FROM FROM Proveedores Proveedores WHERE WHERE localpro='santander' localpro='santander' Marta Zorrilla 2008-2009 35

Datos Marta Zorrilla 2008-2009 36

Importación/Exportación n de datos Instrucción Instrucción INSERT INSERT / / SELECT SELECT Import/Export Import/Export data (sólo SQL Server 2005) data (sólo SQL Server 2005) Conexión Conexión ODBC/OLEDB ODBC/OLEDB Herramienta Herramienta Integration Integration Services Services o o Gráfica, Gráfica, basada basada en en objetos objetos o o Origen/destino Origen/destino de de datos datos (OLEDB, (OLEDB, ODBC) ODBC) o o Transformaciones Transformaciones más más complejas complejas Marta Zorrilla 2008-2009 37

IMD VI : SELECT Está dedicada a obtener información de la base de datos. El resultado de su ejecución, si existe, siempre tiene estructura de una tabla y los campos de sus filas responden a la lista de selección. Tiene enormes posibilidades, lo que hace que su sintaxis presente muchas variantes. SELECT SELECT [[ predicado predicado ]] Lista_de_selección Lista_de_selección [INTO [INTOtabla_temporal] FROM FROMlista_de_tablas [WHERE [WHEREcondición ]] [GROUP [GROUP BY BYlista_campos_group_by] [HAVING [HAVINGcondición_group_by] [ORDER [ORDER BY BYcolum1 {{[ASC] [ASC] DESC DESC }}[,[, colum2 colum2 {{[ASC] [ASC] DESC DESC }, },......] ]] Marta Zorrilla 2008-2009 38

IMD VII : SELECT predicado: puede tomar uno de los siguientes valores: ALL, DISTINCT o TOP número_de_filas (devuelve el número de registros especificado según una cláusula ORDER BY). Puede utilizar el predicado para limitar el número de registros devueltos. Si no especifica ninguno, el valor predeterminado es ALL. Lista_de_selección: es el conjunto de los elementos que serán aportados como respuesta. Éstos, pueden ser expresiones y funciones separados por comas, aunque generalmente responden a una de las siguientes alternativas: { * tabla.* [tabla.]campo1 [AS alias1] [, [tabla.]campo2 [AS alias2],...] funciones} o * especifica que se seleccionan todos los campos de la tabla o tablas a las que se accede. o tabla: es el nombre de la tabla que contiene los campos de la que se van a seleccionar los registros. o campo1, campo2: son los nombres de los campos que contienen los datos que desea recuperar. o alias1, alias2: Los nombres que se van a utilizar como encabezados de columnas en vez de los nombres de columnas originales en tabla. o funciones: funciones definidas por el usuario, anteponer el propietario. tabla_temporal: es el nombre de la tabla que se creará para almacenar los registros obtenidos. lista_de_tablas: representa el nombre de la tabla o las tablas que contienen los datos a los que se desea acceder. condición: es una expresión lógica con los criterios de selección de registros. lista_campos_group_by: son los nombres de los campos que se van a utilizar para agrupar los registros. condición_group_by: son las condiciones que se imponen sobre el criterio de agrupamiento. colum1, colum2: son nombres de elementos de la lista de selección o la posición que ocupan en ella. ASC quiere decir ordenación ascendente (es la opción por defecto) y DESC significa ordenación descendente. Marta Zorrilla 2008-2009 39

IMD VIII : SELECT Búsquedas Sencillas Búsquedas Cualificadas Condiciones de Comparación Condiciones de Combinación Condiciones de Subsentencia Con Operadores Con Pred.. BETWEEN... AND... Con Pred.. IN (lista_de_valores) Con Pred.. LIKE cadena_caracteres Con Pred.. NULL Simple Múltiple Autocombinación Combinación n Externa De Comparación Con Predicado IN Con Predicado EXISTS Marta Zorrilla 2008-2009 40

IMD IX : SELECT Funciones de Grupo Funciones de Fecha Agrupamiento de Datos Condición n de Agrupamiento Ordenación n del Resultado Guardar Resultado en una Tabla Unión, n, Intersección n y Excepción n de Sentencias Uso de funciones almacenadas Marta Zorrilla 2008-2009 41

IMD X : SELECT Búsquedas Sencillas (Ejemplos) Obtener el contenido de la tabla Articulos. SELECT ** FROM FROMArticulos Listar el nombre y el teléfono de todos los Proveedores. SELECT nombrpro as as Nombre, telefpro telefpro as as Telf Telf FROM FROMProveedores Marta Zorrilla 2008-2009 42

IMD XI : SELECT Búsquedas Cualificadas. Cond. de Comparación n 1 (Ejemplos) Las condiciones de comparación son expresiones lógicas que permiten comparar una columna o expresión con otra columna, expresión o lista de columnas. Pueden adoptar una de las formas siguientes: exp expoperador_de_comparación exp exp exp exp [NOT] [NOT] BETWEEN exp expand exp exp exp exp [NOT] [NOT] IN IN (lista (lista de de valores) campo campo [NOT] [NOT] LIKE LIKE 'cadena_de_caracteres' campo campo IS IS [NOT] [NOT] NULL NULL Encontrar los artículos cuyo precio unitario sea superior a 180 y su stock sea inferior o igual a 100. SELECT ** FROM FROMArticulos WHERE preunart > 180 180 AND ANDstockart <= <= 100 100 Marta Zorrilla 2008-2009 43

IMD XII : SELECT Búsquedas Cualificadas. Cond. de Comparación n 2 (Ejemplos) Listar los artículos cuyo precio unitario esté comprendido entre 180 y 300. SELECT ** FROM FROMArticulos WHERE preunart BETWEEN 180 180 AND AND300 Hallar todos los proveedores de las ciudades de Santander, Madrid y Barcelona. SELECT codigpro, nombrpro, direcpro, cpostpro, localpro FROM FROMProveedores WHERE localpro IN IN ('Santander', 'Madrid', 'Barcelona') Marta Zorrilla 2008-2009 44

IMD XIII : SELECT Búsquedas Cualificadas. Cond. de Comparación n 3 (Ejemplos) Encontrar todos los proveedores cuyo primer apellido comience por una letra comprendida entre la A y la J. SELECT codigpro, nombrpro, direcpro, cpostpro, localpro FROM FROMProveedores WHERE nombrpro LIKE LIKE '[A-J]%' Hallar todos los proveedores de los que no se tenga información sobre su correo electrónico. SELECT codigpro, nombrpro, direcpro, cpostpro, localpro, telefpro telefpro FROM FROMProveedores WHERE emailpro IS IS NULL NULL Marta Zorrilla 2008-2009 45

IMD XIV : SELECT Búsquedas Cualificadas. Cond. de Combinación Combinación n Simple (Ejemplo) Las búsquedas cualificadas son las que afectan a datos de más de una tabla. Una Una Combinación Simple Simplees es aquella aquella en en la la que quela la condición de de la la cláusula FROM FROM (o (o WHERE) contiene una una comparación de de igualdad entre entre campos pertenecientes a dos dos tablas tablas distintas. Listar todos los proveedores a los que se ha efectuado algún pedido entre el 20/1/2006 y el 15/9/2006. SELECT DISTINCT Proveedores.codigpro, nombrpro, direcpro, localpro FROM FROM Proveedores INNER INNER JOIN JOINPedidos ON ONProveedores.codigpro = Pedidos.codigpro WHERE fechaped BETWEEN '2006/01/20' AND AND '2006/09/15' Marta Zorrilla 2008-2009 46

IMD XIV : SELECT Búsquedas Cualificadas. Cond. de Combinación Combinación n Simple (Ejemplo. Continuación) n) SELECT DISTINCT Proveedores.codigpro, nombrpro, direcpro, localpro FROM FROM Proveedores INNER INNER JOIN JOIN Pedidos ON ONProveedores.codigpro = Pedidos.codigpro WHERE fechaped BETWEEN '2006/01/20' AND AND '2006/09/15' Información de proceso Marta Zorrilla 2008-2009 47

IMD XV : SELECT Búsquedas Cualificadas. Cond. de Combinación Combinación n Múltiple M (Ejemplo) Una Una Combinación Múltiple es es aquella aquella combinación que que relaciona varios varios campos de de más más de de dos dos tablas. tablas. Encontrar todos los artículos que han sido pedidos entre el 15/5/2006 y el 30/5/2006. SELECT DISTINCT Articulos.codigart, descrart FROM FROMPedidos INNER INNER JOIN JOIN (Lineas (Lineas INNER INNER JOIN JOINArticulos ON ONLineas.codigart = Articulos.codigart) ON ONPedidos.numped = Lineas.numped WHERE fechaped BETWEEN '2006/05/15' AND AND '2006/05/30' Marta Zorrilla 2008-2009 48

IMD XVI : SELECT Búsquedas Cualificadas. Cond. de Combinación Autocombinación (Ejemplo) Una Una Autocombinación es es una una combinación de de una una tabla tabla con con ella ella misma. misma. Localizar todos los pedidos que tienen varias líneas del mismo artículo. SELECT x.numped, x.numlin, x.codigart FROM FROMLineas Lineasx, x, Lineas Lineasy WHERE x.numped = y.numped AND AND x.numlin <> <> y.numlin AND ANDx.codigart = y.codigart Marta Zorrilla 2008-2009 49

IMD XVI : SELECT Búsquedas Cualificadas. Cond. de Combinación Autocombinación (Ejemplo) Localizar todos los pedidos que tienen varias líneas del mismo artículo. SELECT x.numped, x.numlin, x.codigart FROM FROMLineas Lineasx, x, Lineas Lineasy WHERE x.numped = y.numped AND AND x.numlin <> <> y.numlin AND AND x.codigart = y.codigart Información de proceso Acceso X Acceso X Acceso X Acceso Y Acceso Y Acceso Y Marta Zorrilla 2008-2009 50