Вы находитесь на странице: 1из 18

SQL 2000.

--Veamos ejemplos para agregar una columna


en una tabla
/*
ALTER
OBJETO
Nombre
ADD
Nom_Columna Tipo de Dato
ALTER OBJETO(TABLE): Como objeto puede
ser una tabla, vista o
base de datos, observamos que vamos a trabajar
una tabla
Nombre: Debemos determinar el nombre de la
tabla
ADD: Nos indica que vamos aadir una
columna
Nom_Columna: Debemos de digitar el nombre
de la Columna
Tipo de Dato: Determinamos el tipo de dato */
USE RONELD
ALTER TABLE DATOS ADD Fecha
DateTime
ALTER TABLE DATOS ADD Fe_Nac
DateTime, Fec_Ing DateTime, Inicio DateTime
SELECT * FROM DATOS
------------------------------------------------------------------- Veamos ejemplos para eliminar una columna
/* ALTER TABLE Nombre DROP COLUMN
Nom_Columna
ALTER TABLE: la tabla, vista o base de datos,
observamos que vamos a trabajar una tabla
Nombre: Debemos determinar el nombre de la
tabla
DROP: Nos indica que vamos a eliminar una
columna
COLUMN: Indica que trabajamos sobre una
columna
Nom_Columna: Debemos de digitar el nombre
de la
Columna a eliminar*/
USE RONELD
ALTER TABLE DATOS DROP COLUMN
FECHA
ALTER TABLE DATOS DROP COLUMN
FE_NAC,FEC_ING,INICIO
SELECT * FROM DATOS
-------------------------------------------------------------------OTROS EJEMPLOS A AGREGAR Y
ELIMINAR COLUMNAS
USE RONELD
ALTER TABLE DATOS ADD FECHA
DATETIME DEFAULT '14/08/1975'
SELECT * FROM DATOS

Doc.: RONELD F. ORTIZ FIGUEROA

E-mail: roflu64@msn.com

-----------------------------------------------------------------ALTER TABLE DATOS DROP COLUMN


FECHA
/* Como observamos el transact anterior nos
muestra un mensaje
de erro por que al agregar una columna hemos
determinado que
por defecto se muestre una fecha determinada
por eso debemos de
eliminar de la siguiente manera */
ALTER TABLE DATOS
DROP
CONSTRAINT
DF__DATOS__FECHA__1ED998B2
ALTER TABLE DATOS DROP COLUMN
FECHA
SELECT * FROM DATOS
/* Como podemos observar estos dos transact
funcionan, el
cdigo que se digita al final no siempre es el
mismo ya que
cada servidor y columna nos va a mostrar
cdigos diferentes*/
-----------------------------------------------------------------/* Visualizar todas las bases de datos de nuestro
servidor,
para ello debemos de usar la base de datos
MASTER */
USE MASTER
SELECT * FROM SYSDATABASES
-----------------------------------------------------------------/* Visualizar todas las tablas de una base de
datos de nuestro
servidor para ello debemos de utilizar una base
de datos, en este
transact vamos a visualizar todas las tablas del
sistema y usuario*/
USE RONELD
SELECT * FROM SYSOBJECTS
-----------------------------------------------------------------/* Visualizar solo las tablas de usuario de una
base de datos*/
USE RONELD
SELECT * FROM SYSOBJECTS WHERE
XTYPE='U'
-----------------------------------------------------------------select * from sysusers

Pgina 1 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

/* Seleccionar de una columna datos determinados utilizando la Clausula IN; esta


sentencia nos indica que se va a comparar el nombre de columna del lado izquierdo de
la palabra y lo compara con todos los criterios que se muestran al lado derecho, pero
debemos de separar por comas nuestra lista para ello debemos de emplear el siguiente
transact*/
--------------------Ejemplo--------------------------USE RONELD
SELECT * FROM DATOS
SELECT * FROM DATOS WHERE EDAD IN(33,15,41)
/* Seleccionar de una columna datos determinados utilizando la Clausula BETWEEN;
esta sentencia nos indica que se va a comparar el nombre de columna del lado izquierdo
de la palabra y lo compara con el rango que se muestra al lado derecho, pero lo debemos
de separar con el conector lgico AND para ello debemos de emplear el siguiente
transact*/
--------------------Ejemplo--------------------------USE RONELD
SELECT * FROM DATOS
SELECT * FROM DATOS WHERE EDAD BETWEEN 15 AND 41
-- Es lo mismo utilizar
SELECT * FROM DATOS WHERE EDAD >=15 AND EDAD <=41
--Utilizando el NOT BETWEEN, nos muestra a todos los datos
--que no se encuentran en el rango
SELECT * FROM DATOS
SELECT * FROM DATOS WHERE EDAD NOT BETWEEN 15 AND 41
/* Seleccionar de una columna datos determinados utilizando la Clausula LIKE; esta
sentencia nos indica
que se va a comparar el nombre de columna del lado izquierdo de la palabra y lo
compara con determinados caracteres que representan lo siguiente
% Sustituye todo una cadena
_ Sustituye un caracter
[]Sustituye un intervalo de caracter [A-C]
[^]Sustituye cualquier caracter que no se encuentre en el intervalo para ello debemos
de emplear el siguiente transact*/
--------------------Ejemplo--------------------------USE RONELD
SELECT * FROM DATOS
--Muestra a todos los nombres que empiezan con la letra R
SELECT * FROM DATOS WHERE NOMBRES LIKE 'R%'
--Muestra a todos los nombres que terminan con la letra D
SELECT * FROM DATOS WHERE NOMBRES LIKE '%D'
--Muestra a todos los nombres que empiezan con las letras de la L-R
--Debemos de tener en cuenta el abecedario
SELECT * FROM DATOS WHERE NOMBRES LIKE '[L-R]%'
SELECT * FROM DATOS WHERE NOMBRES LIKE '[R-L]%'
--Muestra a todos los nombres que no se encuentren en el rango A-O
SELECT * FROM DATOS WHERE NOMBRES LIKE '[^A-O]%'
/*Crear una Columna Autoincrementable para ello
utilizamos IDENTITY despus de la columna, para
ello debemos de utilizar campos de tipo int*/
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 2 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

CREATE TABLE DOCENTES


(POSICION INT IDENTITY(1,1),
NOMBRES VARCHAR(35) NOT NULL,
APELLIDOS VARCHAR(35)NOT NULL,
ESPECIALIDAD VARCHAR(35)NOT NULL)
INSERT DOCENTES(NOMBRES,APELLIDOS,ESPECIALIDAD)
VALUES('RONELD','ORTIZ','COMP. E INF.')
/* Creando CONSTRAINT
PRIMARY KEY Clave primaria
CHECK Chequea el valor que se va a ingresar en la columna
UNIQUE Los Valores de la columna deben ser nicas
DEFAULT Determina un valor por defecto si no se ingresa el valor a la columna
*/
DROP TABLE ALMACEN
CREATE TABLE ALMACEN
(ID_PRODUCTO CHAR(4) NOT NULL CHECK(ID_PRODUCTO LIKE'[R][0-9][09][0-9]')
PRIMARY KEY(ID_PRODUCTO),
DESCRIPCION VARCHAR(35),
FE_INGRESO DATETIME NOT NULL DEFAULT GETDATE(),
CANTIDAD INT NOT NULL CHECK(CANTIDAD>0),
PRECIO DECIMAL(10,2),
RUC CHAR(11) NOT NULL CHECK(RUC>10000000000)UNIQUE)
SELECT * FROM ALMACEN
INSERT ALMACEN (ID_PRODUCTO,DESCRIPCION,CANTIDAD,PRECIO,RUC)
VALUES
('R001','MOUSE LOGITECH',15,12.5,'10099890555')
GO
SELECT * FROM ALMACEN
GO
ALTER TABLE ALMACEN
ADD TOTAL AS (CANTIDAD * PRECIO)
GO
SELECT * FROM ALMACEN
GO
ALTER TABLE ALMACEN
ADD SUBTOTAL AS ((CANTIDAD * PRECIO) / 1.19)
GO
SELECT * FROM ALMACEN
GO
ALTER TABLE ALMACEN
ADD IGV AS ((CANTIDAD * PRECIO)-((CANTIDAD * PRECIO) / 1.19))
GO
SELECT * FROM ALMACEN

/* Creando CONSTRAINT
PRIMARY KEY Clave primaria
CHECK Chequea el valor que se va a ingresar en la columna
UNIQUE Los Valores de la columna deben ser nicas
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 3 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

DEFAULT Determina un valor por defecto si no se ingresa el valor a la columna


*/
CREATE TABLE ALMACEN
(ID_PRODUCTO CHAR(4) NOT NULL,
DESCRIPCION VARCHAR(35),
FE_INGRESO DATETIME NOT NULL,
CANTIDAD INT NOT NULL,
PRECIO DECIMAL(10,2),
RUC CHAR(11) NOT NULL)
SELECT * FROM ALMACEN
--CREANDO CONSTRAINT
SELECT * FROM SYSOBJECTS WHERE XTYPE='U'
ALTER TABLE ALMACEN
ADD CONSTRAINT CK_ALMACEN_IDPRODUCTO
CHECK(ID_PRODUCTO LIKE'[R][0-9][0-9][0-9]')
ALTER TABLE ALMACEN
ADD CONSTRAINT PK_ALMACEN_IDPRODUCTO
PRIMARY KEY(ID_PRODUCTO)
ALTER TABLE ALMACEN
ADD CONSTRAINT DF_ALMACEN_FEINGRESO
DEFAULT GETDATE() FOR FE_INGRESO
ALTER TABLE ALMACEN
ADD CONSTRAINT CK_ALMACEN_CANTIDAD
CHECK(CANTIDAD>0)
ALTER TABLE ALMACEN
ADD CONSTRAINT CK_ALMACEN_RUC
CHECK(RUC>10000000000)
ALTER TABLE ALMACEN
ADD CONSTRAINT UQ_ALMACEN_RUC
UNIQUE(RUC)
SELECT * FROM ALMACEN
INSERT ALMACEN (ID_PRODUCTO,DESCRIPCION,CANTIDAD,PRECIO,RUC)
VALUES
('R001','MOUSE LOGITECH',15,12.5,'10099890555')
INSERT ALMACEN (ID_PRODUCTO,DESCRIPCION,CANTIDAD,PRECIO,RUC)
VALUES
('R002','MOUSE LOGITECH',15,12.5,'10099890555')

Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 4 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

DECLARACIN DE VARIABLES
Locales: Se definen por los usuarios y empiezan con el signo @
/*VARIABLE LOCAL*/
DECLARE @NOM VARCHAR(25)
SET @NOM='%L%'
SELECT * FROM RONELD..DATOS WHERE NOMBRES LIKE @NOM
GO

/*VARIABLES LOCALES*/
DECLARE @NOM1 VARCHAR(25), @APE1 VARCHAR(25), @ED1 INT
SET @NOM1='%L%'
SET @APE1='%A'
SET @ED1=21
SELECT * FROM RONELD..DATOS WHERE NOMBRES LIKE @NOM1 AND
APELLIDOS LIKE @APE1 AND EDAD>@ED1

/*VARIABLE GLOBALES */
GO
SET DATEFORMAT DMY
SELECT GETDATE()

GO
SELECT GETDATE() AS 'DA Y HORA ACTUAL',
@@CONNECTIONS AS 'NMERO DE CONEXIN'

GO
SELECT @@CPU_BUSY AS 'TIEMPO EN MILESEGUNDOS DEL CPU',
GETDATE() AS 'HASTA LA HORA ACTUAL'

GO
SELECT @@LANGUAGE AS 'NOMBRE DEL LENGUAJE'

GO
--NMERO MXIMO DE CONEXIONES
SELECT @@MAX_CONNECTIONS

GO
SELECT @@VERSION

Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 5 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

GO
/*ELIMINAR TODA UNA TABLA */
DELETE RONELD..DATOS
GO
/*ELIMINAR REGISTROS SEGN CONDICIONES */
DECLARE @ED1 INT
SET @ED1=21
DELETE RONELD..DATOS WHERE EDAD=@ED1
GO
/*MODIFICAR REGISTROS */
UPDATE RONELD..DATOS SET EDAD=17,CODIGO='RON'
WHERE EDAD=25
GO
SELECT * FROM RONELD..DATOS
GO
/*MOSTRAR UN SELECT, ORDENANDO SEGN UNA COLUMNA*/
SELECT * FROM RONELD..DATOS ORDER BY NOMBRES

GO
--MOSTRANDO EN FORMA ASCENDENTE
SELECT * FROM RONELD..DATOS ORDER BY APELLIDOS ASC

GO
--MOSTRAR EN FORMA DESCENDENTE
SELECT * FROM RONELD..DATOS ORDER BY EDAD DESC
GO
/*TRABAJANDO CON FECHAS*/
--MOSTRAR EL DA ACTUAL DEL SISTEMA
SELECT DAY(GETDATE()) AS 'DA ACTUAL'

GO
--MOSTRAR EL MES ACTUAL DEL SISTEMA
SELECT MONTH(GETDATE()) AS 'MES ACTUAL'
GO
--MOSTRAR EL AO ACTUAL DEL SISTEMA
SELECT YEAR(GETDATE()) AS 'AO ACTUAL'
GO
--MOSTRAR UNA PARTE DE LA FECHA
SELECT DATEPART(MM,GETDATE()) AS 'DA MOSTRADO'
GO
--MOSTRAR EL NOMBRE DEL DA O MES
SELECT DATENAME(MONTH,GETDATE()) AS 'NOMBRE DEL MES'
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 6 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

FUNCIONES
/* PRINCIPALES FUNCIONES */
/* SUBSTRING ESTA FUNCIN PERMITE SUBTRAER DE UN CAMPO
DETERMINADO LA CANTIDAD DE CARACTERES, A PARTIR DE UNA
POSICIN DETERMINADA
SUBSTRING(TEXTO, POSICIN, CANTIDAD DE CARACTERES)*/
SELECT SUBSTRING(VENDEDOR,1,3) AS VENDEDOR FROM KARDEX
GO
/* ASCII= DEVUELVE EL CDIGO ASCII DE UN CARACTER*/
SELECT ASCII(SUBSTRING(VENDEDOR,1,1)) AS VENDEDOR FROM KARDEX
GO
/*CHAR= DEVUELVE EL CARACTER DE UN NMERO INGRESADO*/
SELECT CHAR(62)
GO
/* CASE= EVALA UNA SERIE DE CONDICIONES, EL CUAL
DEVUELVE UN RESULTADO DE ACUERDO A UNA CONDICIN*/
SELECT NOMBRES,TOTAL, 'SITUACIN DEL CLIENTE'=
CASE
WHEN (TOTAL=0)
THEN 'CLIENTE -- PUNTUAL'
WHEN (TOTAL>0 AND TOTAL<100)
THEN 'CLIENTE -- CASI PUNTUAL'
WHEN (TOTAL>=100 AND TOTAL<300)
THEN 'CLIENTE -- POCO PUNTUAL'
ELSE 'CLIENTE -- MOROSO'
END
FROM KARDEX
GO
/* CONVERT= CONVIERTE UN TIPO DE DATO A OTRO*/
SELECT 'ANSI:',CONVERT (VARCHAR(30),GETDATE(),102) AS STYLE UNION
SELECT 'JAPONES:',CONVERT (VARCHAR(30),GETDATE(),111) UNION
SELECT 'EUROPEO:',CONVERT (VARCHAR(30),GETDATE(),113)
GO
SELECT CONVERT(VARCHAR(30),FECHA,101) AS FECHA FROM KARDEX
GO
/* COUNT= DEVUELVE EL NMERO DE REGISTROS O ELEMENTOS*/
SELECT COUNT(*) AS 'TOTAL DE REGISTRO' FROM KARDEX
GO
/* DISTINCT= DEVUELVE EL NMERO DE REGISTROS QUE
SON NICOS EN UNA COLUMNA*/
SELECT COUNT(DISTINCT VENDEDOR) AS 'TOTAL DE NOMBRES' FROM
KARDEX
GO
/*DATEADD= DEVUELVE UN DATO TIPO FECHA AADIDO A UN
DETERMINADO
DATO QUE PUEDE SER= MES, DA, AO */
DECLARE @F1 DATETIME,@F2 DATETIME
SET @F1='16/05/2009'
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 7 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

SELECT DATEADD(DAY,3,@F1) AS 'DA',DATEADD(MONTH,3,@F1) AS 'MES'


,DATEADD(YEAR,3,@F1) AS 'AO'
GO
/*DATEDIFF= DEVUELVE LA CANTIDAD EN TIEMPO DE DOS FECHAS */
DECLARE @F1 DATETIME,@F2 DATETIME
SET @F1='16/05/2009'
SET @F2='14/08/2009'
SELECT DATEDIFF(DAY,@F1,@F2) AS 'DA',DATEDIFF(MONTH,@F1,@F2) AS
'MES'
,DATEDIFF(YEAR,@F1,@F2) AS 'AO'
GO
/*REVERSE= DEVULVE UN CARACTER AL REVS */
SELECT NOMBRES,REVERSE(NOMBRES) AS 'NOMBRE AL REVS' FROM
KARDEX
GO
/*AVG= DEVUELVE EL PROMEDIO DE DATOS TIPO NMERO*/
SELECT AVG(TOTAL) AS 'PROMEDIO' FROM KARDEX
GO
/*MAX= DEVUELVE EL VALOR MXIMO DE DATOS TIPO NMERO*/
SELECT MAX(TOTAL) AS 'MXIMO' FROM KARDEX
GO
/*MIN= DEVUELVE EL VALOR MNIMO DE DATOS TIPO NMERO*/
SELECT MIN(TOTAL) AS 'MXIMO' FROM KARDEX
GO
/*SUM= DEVUELVE LA SUMA DE DATOS TIPO NMERO*/
SELECT SUM(TOTAL) AS 'SUMA' FROM KARDEX
GO
/*ROUND= REDONDEA UN NMERO DECIMAL A UNA CANTIDAD
DETERMINADA DE DECIMALES*/
SELECT ROUND(35.25,1)
GO
/*VAR= DEVUELVE LA VARIANZA ESTADSTICA */
SELECT VAR(TOTAL) AS 'VARIANZA' FROM KARDEX
GO
/*----------------------------------------------------------*/
/* GENERANDO VALORES A UNA COLUMNA */
/* IDENTITY= AUMENTA UN VALOR A UN REGISTRO */
SELECT IDENTITY(INT, 1,5) AS 'AUMENTO' INTO RONELD
SELECT * FROM RONELD
GO
/* NEWID, UNIQUEIDENTIFIER ESTOS DOS VALORES DEBEN
DE SER USADOS JUNTOS Y SE ALMACENAN COMO 16 BYTE
BINARY STRING */
DECLARE @DATO UNIQUEIDENTIFIER
SET @DATO = NEWID()
PRINT 'VALOR DE LA VARIABLE DATO ES: '+ CONVERT(VARCHAR(255),
@DATO)
/* */
DECLARE @DATO UNIQUEIDENTIFIER
SET @DATO = NEWID()
SELECT @DATO AS 'VALOR DE LA VARIABLE DATO ES: '
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 8 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

SENTENCIAS DE CONTROL
IF
/* SENTENCIA DE CONTROL IF */
IF EXISTS(SELECT * FROM SYSDATABASES WHERE NAME='TELESUP')
BEGIN
PRINT 'LA BASE DE DATOS TELESUP YA EXISTE'
END
ELSE
BEGIN
CREATE DATABASE TELESUP
ON PRIMARY
(NAME='TELESUP_DATA1',
FILENAME='C:\RONELD\TELESUP.MDF',
SIZE=1,
MAXSIZE=2,
FILEGROWTH=1),
(NAME='TELESUP_DATA2',
FILENAME='C:\RONELD\TELESUP.NDF',
SIZE=1,
MAXSIZE=2,
FILEGROWTH=1)
LOG ON
(NAME='TELESUP_LOG',
FILENAME='C:\RONELD\TELESUP.LDF',
SIZE=1,
MAXSIZE=2,
FILEGROWTH=1)
END
GO
USE TELESUP
GO
/* CREANDO UNA TABLA, PARA ELLO DETERMINAMOS
SI LA TABLA EXISTE O NO */
IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='ESTUDIANTE')
BEGIN
PRINT 'LA TABLA YA EXISTE'
END
ELSE
BEGIN
CREATE TABLE ESTUDIANTE
(ID_CODIGO CHAR(6) NOT NULL,
APELLIDOS VARCHAR(60) NOT NULL,
NOMBRES VARCHAR(60) NOT NULL,
FEC_NAC DATETIME NOT NULL,
ESPECIALIDAD VARCHAR(40) NOT NULL)
ALTER TABLE ESTUDIANTE
ADD CONSTRAINT PK_ESTUDIANTE_IDCODIGO
PRIMARY KEY (ID_CODIGO)
END
/* TRABAJAR O IMPORTAR LA HOJA KARDEX PARA CREAR
LA TABLA KARDEX$; LUEGO CAMBIE DE NOMBRE A "KARDEX" */
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 9 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

USE TELESUP
GO
SELECT * FROM KARDEX
GO
SELECT AVG(TOTAL) FROM KARDEX WHERE VENDEDOR = 'SANCHEZ
SANCHEZ JUAN'
GO
IF (SELECT AVG(TOTAL) FROM KARDEX WHERE VENDEDOR = 'SANCHEZ
SANCHEZ JUAN')<250
BEGIN
SELECT SUBSTRING(NOMBRES, 1, 35) AS NOMBRES
FROM KARDEX
WHERE VENDEDOR = 'SANCHEZ SANCHEZ JUAN'
END
ELSE
SELECT ROUND(AVG(TOTAL),2) AS 'PROMEDIO: ' FROM KARDEX
WHERE VENDEDOR = 'SANCHEZ SANCHEZ JUAN'
GO
WHILE
WHILE (SELECT MIN(TOTAL) FROM KARDEX) < 1000
BEGIN
SELECT MIN(TOTAL) FROM KARDEX
IF (SELECT MIN(TOTAL)FROM KARDEX) < 1000
BEGIN
PRINT 'PROBANDO CDIGO'
BREAK
END
ELSE
CONTINUE
END
PRINT 'TRMINAMOS DE EJECUTAR'
/* PROCEDIMIENTOS */
/* CREAR PROCEDIMIENTOS
CREATE PROCEDURE NOMBRE VARIABLES
AS
SENTENCIA O ACCIN A REALIZAR */
GO
CREATE PROCEDURE INGRESAR
@ID_CODIGO CHAR(6),
@APELLIDOS VARCHAR(60),
@NOMBRES VARCHAR(60),
@FEC_NAC DATETIME,
@ESPECIALIDAD CHAR(8)
AS
INSERT INTO ESTUDIANTE VALUES (
@ID_CODIGO,
@APELLIDOS,
@NOMBRES,
@FEC_NAC,
@ESPECIALIDAD)
/* EJECUTAR EL PROCEDIMIENTO
EXEC NOMBRE VALORES O VARIABLES A UTILIZAR */
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 10 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

EXEC
INGRESAR
'D-0001','ESCALANTE
RODRGUEZ','JORGE
ANTONIO','14/08/1975','COMPUTACIN E INFORMTICA'
GO
/* MOSTRAR SI SE EJECUTO EL PROCEDIMIENTO */
SELECT * FROM ESTUDIANTE
/* ELIMINAR EL PROCEDIMIENTO CREADO
DROP PROCEDURE NOMBRE DEL PROCEDIMIENTO */
DROP PROCEDURE INGRESAR
GO
CREATE PROCEDURE FILTRO
@VENDEDOR VARCHAR(60)
AS
SELECT * FROM KARDEX WHERE VENDEDOR=@VENDEDOR
EXEC FILTRO 'SANCHEZ SANCHEZ JUAN'
GO
CREATE PROCEDURE SUMA
@N1 INT, @N2 INT
AS
DECLARE @S INT
SET @S=@N1+@N2
SELECT @S
GO
EXEC SUMA 14,10
GO
/* CREAR UN PROCEDIMIENTO QUE CUENTE CUANTOS SON DGITOS
PARES, IMPARES O CEROS DE UN NMERO DE 4 DGITOS*/
CREATE PROCEDURE MIENTRAS @N INT
AS
DECLARE @PAR INT, @IMPAR INT, @CERO INT, @RES INT
SET @CERO=0
SET @PAR=0
SET @IMPAR=0
SET @RES=0
IF LEN(@N)>4
SELECT 'TIENE QUE INGRESAR UN NMERO DE 4 DGITOS'
ELSE
WHILE (@N<>0)
BEGIN
SET @RES=@N % 10
SET @N=@N / 10
IF @RES=0
SET @CERO=@CERO+1
ELSE
IF (@RES % 2)=0
SET @PAR=@PAR+1
ELSE
SET @IMPAR=@IMPAR+1
END
SELECT 'PAR'=@PAR,'IMPAR'=@IMPAR,'CERO'=@CERO
GO
EXEC MIENTRAS 3157

Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 11 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

MODIFICANDO TIPOS DE DATOS DE UNA TABLA


ALTER TABLE TABLA
ALTER COLUMN COLUMNA
USE TELESUP
/* PARA REALIZAR LOS DEMS EJEMPLOS DEBEMOS DE IMPORTAR EL
LIBRO: CLIENTES Y VENTAS, CAMBIAR DE NOMBRE CORRESPONDIENTE
A "CLIENTES Y VENTAS" */
GO
SELECT * FROM CLIENTES
GO
SELECT * FROM VENTAS
/* CAMBIANDO LOS TIPOS DE DATOS DE LOS CAMPOS DE LA
TABLA CLIENTE */
GO
ALTER TABLE CLIENTES
ALTER COLUMN CODIGO VARCHAR(15) NOT NULL
GO
ALTER TABLE CLIENTES
ALTER COLUMN ZONA VARCHAR (15) NULL
GO
ALTER TABLE CLIENTES
ALTER COLUMN SECTOR VARCHAR (15) NULL
GO
ALTER TABLE CLIENTES
ALTER COLUMN NOMBRES VARCHAR (60) NULL
GO
ALTER TABLE CLIENTES
ALTER COLUMN TELEFONO VARCHAR (10) NULL
GO
ALTER TABLE CLIENTES
ALTER COLUMN DIRECCION VARCHAR (60) NULL

/* CREANDO UNA CLAVE PRINCIPAL AL CAMPO CODIGO */


GO
ALTER TABLE CLIENTES
ADD CONSTRAINT CLIENTES_CODIGO_PK
PRIMARY KEY (CODIGO)

Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 12 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

/* CAMBIANDO EL TIPO DE DATO DE LA TABLA VENTAS */


GO
ALTER TABLE VENTAS
ALTER COLUMN CODIGO VARCHAR(15) NOT NULL
/* VISUALIZAR LA COMPRA TOTAL DE LOS CLIENTES*/
GO
SELECT CLIENTES.NOMBRES,'TOTAL DE DEUDA'=SUM(VENTAS.TOTAL)
FROM CLIENTES, VENTAS WHERE
CLIENTES.CODIGO=VENTAS.CODIGO
GROUP BY VENTAS.CODIGO,CLIENTES.NOMBRES,VENTAS.TOTAL
ORDER BY VENTAS.TOTAL DESC

/* VISUALIZAR AL CLIENTE QUE HA COMPRADO MS*/


GO
SELECT TOP 1 C.NOMBRES,'TOTAL DE DEUDA'=SUM(V.TOTAL)
FROM CLIENTES C, VENTAS V WHERE
C.CODIGO=V.CODIGO
GROUP BY V.CODIGO,C.NOMBRES,V.TOTAL
ORDER BY V.TOTAL DESC

/* REPORTE DE VENTAS POR SUSCRIPCIN*/


GO
SELECT SUSCRIPCION, 'TOTAL DE VENA'=SUM(V.TOTAL)
FROM VENTAS V GROUP BY V.SUSCRIPCION

GO
/* ACTUALIZAR EL TOTAL DE DEUDA A LOS CLIENTES DEL "SECTOR 1"
EN UN 5% DE SU DEUDA*/
UPDATE VENTAS SET TOTAL=TOTAL+ROUND((TOTAL * 0.05),2)
FROM CLIENTES, VENTAS
WHERE CLIENTES.SECTOR='SECTOR 1' AND
CLIENTES.CODIGO=VENTAS.CODIGO

/* VISUALIZAR LA VENTA TOTAL POR ZONA*/


GO
SELECT C.ZONA,'TOTAL DE DEUDA'=SUM(V.TOTAL)
FROM CLIENTES C, VENTAS V WHERE
C.CODIGO=V.CODIGO
GROUP BY C.ZONA

/* VISUALIZAR LA VENTA TOTAL POR SECTOR*/


GO
SELECT C.SECTOR,'TOTAL DE DEUDA'=SUM(V.TOTAL)
FROM CLIENTES C, VENTAS V WHERE
C.CODIGO=V.CODIGO
GROUP BY C.SECTOR
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 13 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

MODIFICANDO UNA BASE DE DATOS


AGREGAR UN DATA O LOG
/* Aadir un NDF a la Base de Datos Roneld*/
ALTER DATABASE RONELD
ADD FILE
(NAME=RONELD_DATA2,
FILENAME='C:\RONELD\RONELD2.NDF',
SIZE=10MB,
MAXSIZE=20MB)
GO
MODIFICAR EL TAMAO DE UN ARCHIVO DATA O LOG
/* Modificar el tamao de un DATA o un LOG de una
base de datos, debemos de tener en cuenta que el tamao
del nuevo archivo debe ser mayor que el actual*/
ALTER DATABASE RONELD
MODIFY FILE(NAME=RONELD_DATA2,
SIZE=11MB)
GO
REDUCIR EL TAMAO DE UNA BASE DE DATOS
/* Reducir el tamao de una Base de Datos
Observamos:
Roneld=Nombre de la Base de Datos
25=Porcentaje de reduccin*/
DBCC SHRINKDATABASE (RONELD,25)
GO
REDUCIR EL TAMAO DE UN ARCHIVO DATA O LOG
/* Reducir el tamao de un Data o Log de una Base de Datos
Observamos:
Roneld_Data2=Nombre del Data o Log a reducir
25=Porcentaje de reduccin
Debemos de tener en cuenta que para reducir un archivo debe de ser
mayor a 3200 pginas*/
USE RONELD
DBCC SHRINKFILE (RONELD_DATA,25)
GO
ELIMINAR UNA BASE DE DATOS
/* Eliminar una Base de Datos */
DROP DATABASE RONELD
GO
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 14 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

TIPOS DE DATOS DEFINIDOS POR EL USUARIO


CREAR TIPO DE DATOS DEFINIDOS POR EL USUARIO
/* Crear tipo de Datos definidos por el Usuario */
USE RONELD
EXEC SP_ADDTYPE ROFLU_C, 'VARCHAR(10)','NOT NULL'
EXEC SP_ADDTYPE ROFLU_N, 'VARCHAR(30)','NOT NULL'
EXEC SP_ADDTYPE ROFLU_A, 'VARCHAR(30)','NOT NULL'
EXEC SP_ADDTYPE ROFLU_P, 'MONEY','NOT NULL'
GO
ELIMINAR TIPO DE DATOS DEFINIDOS POR EL USUARIO
/* Eliminar un tipo de Datos definidos por el Usuario */
USE RONELD
EXEC SP_DROPTYPE ROFLU_C
EXEC SP_DROPTYPE ROFLU_N
EXEC SP_DROPTYPE ROFLU_A
EXEC SP_DROPTYPE ROFLU_P
CREAR TIPO DE DATOS
/* Creando tipos de Datos, adems relacionamos para crear
con una tabla llamada PAGO*/
USE RONELD
EXEC SP_ADDTYPE ROFLU_C, 'VARCHAR(10)','NOT NULL'
EXEC SP_ADDTYPE ROFLU_N, 'VARCHAR(30)','NOT NULL'
EXEC SP_ADDTYPE ROFLU_A, 'VARCHAR(30)','NOT NULL'
EXEC SP_ADDTYPE ROFLU_F, 'DATETIME','NOT NULL'
EXEC SP_ADDTYPE ROFLU_P, 'MONEY','NOT NULL'
GO
CREAR LA TABLA PAGO QUE VA A SER RELACIONADA CON LOS TIPOS
DE DATOS CREADOS ANTERIORMENTE
/* Crear la Tabla PAGO */
CREATE TABLE PAGO
(CODIGO ROFLU_C,
APELLIDOS ROFLU_A,
NOMBRES ROFLU_N,
FEC_PAGO ROFLU_F,
TOTAL_PAGO ROFLU_P)
GO
CREAR CONSTRAINT NECESARIOS PARA LA TABLA
/* CREANDO LOS CONSTRAINT NECESARIOS */
ALTER TABLE PAGO
ADD CONSTRAINT PAGO_CODIGO_PK
PRIMARY KEY(CODIGO)
GO
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 15 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

ALTER TABLE PAGO


ADD CONSTRAINT PAGO_TOTAL_PAGO_CK
CHECK(TOTAL_PAGO>0)
GO
ESTABLECER LA FECHA A DA, MES Y AO PARA INGRESAR LOS
DATOS CORRESPONDIENTES
/* ESTABLECEMOS LA MANERA DE INGRESO DE DATOS TIPO FECHA*/
SET DATEFORMAT DMY
GO
INSERTANDO DATOS A LA TABLA CREADA
/* INSERTANDO DATOS A LA TABLA PAGO */
INSERT
INTO
PAGO
(CODIGO,APELLIDOS,NOMBRES,FEC_PAGO,TOTAL_PAGO)
VALUES
('ROFLU-0001','ORTIZ FIGUEROA','RONELD FRAY','01/01/2009',1350.25)
INSERT
INTO
PAGO
(CODIGO,APELLIDOS,NOMBRES,FEC_PAGO,TOTAL_PAGO)
VALUES
('ROFLU-0002','ALBA
DELGADO','MARLENI
CRISTINA','01/01/2009',1000.05)
INSERT
INTO
PAGO
(CODIGO,APELLIDOS,NOMBRES,FEC_PAGO,TOTAL_PAGO)
VALUES
('ROFLU-0003','CULQUI
COLLAS','YERALDIN
CAROL','01/01/2009',1250.75)
INSERT
INTO
PAGO
(CODIGO,APELLIDOS,NOMBRES,FEC_PAGO,TOTAL_PAGO)
VALUES
('ROFLU-0004','BEDON ESPINOZA','FRANZ MARCO','01/01/2009',1050.55)
INSERT
INTO
PAGO
(CODIGO,APELLIDOS,NOMBRES,FEC_PAGO,TOTAL_PAGO)
VALUES
('ROFLU-0005','BAYES RIOS','CAROLINA KETERIN','01/01/2009',1200.75)
INSERT
INTO
PAGO
(CODIGO,APELLIDOS,NOMBRES,FEC_PAGO,TOTAL_PAGO)
VALUES
('ROFLU-0006','CAUSHI
SIGUEAS','JOHANN
SANTIAGO','01/01/2009',1170.25)
INSERT
INTO
PAGO
(CODIGO,APELLIDOS,NOMBRES,FEC_PAGO,TOTAL_PAGO)
VALUES
('ROFLU-0007','LEON CERNA','JHERY JONATHAN','01/01/2009',1150.25)
GO
VISUALIZAR LOS DATOS INGRESADOS
SELECT * FROM PAGO

Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 16 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

SELECT
/*VISUALIZAR EL CODIGO, NOMBRES Y TOTAL DEL CLIENTE
DE LA TABLA KARDE */
SELECT CODIGO, NOMBRES, TOTAL
FROM KARDEX
WHERE
TOTAL=(SELECT MAX(TOTAL) FROM KARDEX)
INNER JOIN
/* VISUALIZAR EL CODIGO, NOMBRES, SUSCRIPCION Y TOTAL
DE LAS TABLAS CLIENTES Y KARDEX */
SELECT CLIENTES.CODIGO,CLIENTES.NOMBRES,KARDEX.SUSCRIPCION,
KARDEX.TOTAL
FROM CLIENTES INNER JOIN KARDEX
ON CLIENTES.CODIGO=KARDEX.CODIGO
CREAR TABLAS A PARTIR DE UN RESULTADO
/* Crear una tabla llamada Cientes1 a partir
de la tabla Clientes
Observe que se van a crear la tabla con los
respectivos campos*/
USE TELESUP
SELECT CODIGO AS COD, NOMBRES AS NOM, DIRECCION AS DIRE
INTO CLIENTES1
FROM CLIENTES
GO
SELECT * FROM CLIENTES1
INSTRUCCIN GROUP BY
/* USANDO LA CLAUSULA GROUP BY (PERMITE AGRUPAR DATOS)*/
/*CALCULAR EL TOTAL DE LA TABLA KARDEX DE CADA CLIENTE*/
GO
SELECT CODIGO, NOMBRES, MAX(TOTAL) AS 'VALOR MXIMO'
FROM KARDEX
GROUP BY CODIGO,NOMBRES
INSTRUCCIN GROUP BY Y HAVING
/* UTILIZANDO HAVING (PARA INCLUIR DATOS) Y GROUP BY */
SELECT CODIGO,NOMBRES,SUM(TOTAL) AS 'TOTAL'
FROM KARDEX
GROUP BY CODIGO,NOMBRES
HAVING SUM(TOTAL)>=3000
INSTRUCCIN GROUP BY Y ROLLUP
/* UTILIZANDO ROLLUP (RESUMIR VALORES) Y GROUP BY */
SELECT CODIGO,NOMBRES,SUM(TOTAL) AS 'TOTAL'
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 17 de 18 Microsoft SQL 2000 Server

SQL 2000.

E-mail: roflu64@msn.com

FROM KARDEX
GROUP BY CODIGO,NOMBRES
WITH ROLLUP
ORDER BY CODIGO
INSTRUCCIN GROUP BY Y CUBE
/* UTILIZANDO CUBE (POSIBLES COMBINACIONES) Y GROUP BY */
SELECT CODIGO,NOMBRES,SUM(TOTAL) AS 'TOTAL'
FROM KARDEX
GROUP BY CODIGO,NOMBRES
WITH CUBE
ORDER BY CODIGO
INSTRUCCIN COMPUTE
/* UTILIZANDO COMPUTE (FILAS DETALLADAS Y UN SOLO VALOR) */
SELECT CODIGO,NOMBRES,TOTAL
FROM KARDEX
ORDER BY CODIGO
COMPUTE SUM(TOTAL)
INSTRUCCIN COMPUTE BY
/* UTILIZANDO COMPUTE BY (FILAS DETALLADAS Y RESUMEN
MLTIPLES) Y GROUP BY */
SELECT CODIGO,NOMBRES,TOTAL
FROM KARDEX
ORDER BY CODIGO
COMPUTE SUM(TOTAL) BY CODIGO
CREAR VISTAS
/* CREAR UNA VISTA A PARTIR DE UNA TABLA
VISTA: HABILIDAD DE GUARDAR UN QUERY*/
CREATE VIEW VISTA_CLIENTES
AS
SELECT * FROM CLIENTES
/* VISUALIZAR LA VISTA CREADA */
SELECT * FROM VISTA_CLIENTES
/* CREANDO OTRAS VISTAS */
CREATE VIEW VISTA_RESUMEN1
AS
SELECT CODIGO,NOMBRES,SUM(TOTAL) AS 'TOTAL'
FROM KARDEX
GROUP BY CODIGO,NOMBRES
HAVING SUM(TOTAL)>=3000
GO
SELECT * FROM VISTA_RESUMEN1
/* CREE OTRAS VISTAS SEGN SU CRITERIO */
Doc.: RONELD F. ORTIZ FIGUEROA

Pgina 18 de 18 Microsoft SQL 2000 Server

Вам также может понравиться