Está en la página 1de 13

SINTAXIS

Un sistema de base de datos suele contener varias bases de datos.

Cada base de datos suele contener varias tablas.

Las tablas almacenan los datos organizados por filas.

Cada fila contiene varios campos.

Cada campo tiene una serie de propiedades, como por ejemplo, el nombre del campo, su longitud, tipo
de dato que se va a almacenar, etc.

Las sentencias SQL no son sensibles a mayúsculas y minúsculas, es decir, 'SELECT' y 'select' son dos
palabras iguales para SQL.

Algunos sistemas de bases de datos necesitan un punto y coma después de cada sentencia SQL para
ejecutarse correctamente

CREATE DATATABASE mibasedeatos;

Este punto y coma también puede servir para separar una sentencia SQL de otra sentencia SQL en la
misma línea.

CREATE DATATABASE mibasedeatos; CREATE TABLE mitabla1;

Las sentencias SQL se pueden agrupar por funcionalidades:

1.- Lenguaje de definición de datos (DDL).

DDL está compuesto por sentencias para la creación (CREATE), modificación (ALTER) y borrado
(DROP) de los componentes principales de una base de datos:

 base de datos (DATABASE)


 tablas (TABLE)
 vistas (VIEW)
 índices (INDEX)
 procedimientos almacenados (PROCEDURE)
 disparadores (TRIGGER).

2.- Lenguaje de manipulación de datos (DML).

DML está compuesto por sentencias que sirven para :

 consultar (SELECT)
 insertar (INSERT)
 modificar (UPDATE)
 borrar (DELETE)
3.- Lenguaje de control de datos (DCL).

DCL está compuesto por sentencias SQL para controlar las funciones de administración :

 Confirmar la operacion (COMMIT)


 Retroceder la operacion (ROLLBACK)
 Dar permisos (GRANT)
 Quitar permisos (REVOKE)

SENTENCIA SELECT

Una de las sentencias SQL más importantes es SELECT, ya que permite realizar consultas sobre los
datos almacenados en la base de datos.

Sintaxis SQL SELECT

SELECT * FROM nombretabla

SELECT columna1, columna2 FROM nombretabla

Para los ejemplos, tendremos la siguiente tabla de personas denominada “personas”

Estos son los datos almacenados en la tabla “personas”

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

Si queremos consultar todos los datos de la tabla “personas”

SELECT * FROM personas

Este será el resultado:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

Si queremos consulta todos los nombres y primer apellido de todas las personas
SELECT nombre, apellido1 FROM personas

Este será el resultado:

nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
LUIS LOPEZ

SENTENCIA INSTINCT

Al realizar una consulta puede ocurrir que existan valores repetidos para algunas columnas. Por ejemplo

SELECT nombre FROM personas

nombre
ANTONIO
LUIS
ANTONIO

Esto no es un problema, pero a veces queremos que no se repitan, por ejemplo, si queremos saber los
nombre diferentes que hay en la tabla personas", entonces utilizaremos DISTINCT.

SELECT DISTINCT nombre FROM personas

nombre
ANTONIO
LUIS
Creación de una tabla
Para crear una tabla, debe proporcionar un nombre para ésta además de los nombres y
los tipos de datos de cada columna de la tabla. También es recomendable indicar si se
permiten valores NULL en cada columna. Para crear una tabla, debe tener el
permiso CREATE TABLE y el permiso ALTER SCHEMA en el esquema que contiene la tabla. El
rol fijo de base de datos db_ddladmin tiene estos permisos.

La mayoría de las tablas tienen una clave principal, que se compone de una o varias
columnas de la tabla. Una clave principal siempre es única. Motor de base de datos
exigirá la restricción de que el valor de la clave principal no se puede repetir en la tabla.

Para obtener una lista de tipos de datos y vínculos para una descripción de cada uno,
consulte Tipos de datos (Transact-SQL).

 Nota

Motor de base de datos se puede instalar para distinguir mayúsculas de minúsculas o


no distinguir mayúsculas de minúsculas. Si se instala Motor de base de datos para
distinguir mayúsculas de minúsculas, los nombres de objetos siempre deben tener las
mismas mayúsculas y minúsculas. Por ejemplo, una tabla denominada OrderData es
diferente de la denominada ORDERDATA. Si se instala Motor de base de datos para no
distinguir mayúsculas de minúsculas, esos dos nombres de tablas se consideran la
misma tabla y ese nombre solo se puede utilizar una vez.

Cambie la conexión del Editor de consultas a la base de datos TestData

En una ventana del Editor de consultas, escriba y ejecute el siguiente código para
cambiar la conexión a la base de datos TestData .

SQLCopiar
USE TestData
GO

Creación de la tabla

En una ventana del Editor de consultas, escriba y ejecute el código siguiente para crear
una tabla denominada Products. Las columnas de la tabla
son ProductID, ProductName, Pricey ProductDescription. La columna ProductID es la clave
principal de la tabla. int, varchar(25), moneyy varchar(max) son todos los tipos de datos.
Solo las columnas Price y ProductionDescription pueden no tener datos cuando se
inserta o cambia una fila. Esta instrucción contiene un elemento opcional ( dbo.)
denominado esquema. El esquema es el objeto de base de datos propietario de la tabla.
Si es un administrador, dbo es el esquema predeterminado. dbo hace referencia al
propietario de la base de datos.

SQLCopiar
CREATE TABLE dbo.Products
(ProductID int PRIMARY KEY NOT NULL,
ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription varchar(max) NULL)
GO

Inserción y actualización de datos de una tabla


Ahora que ha creado la tabla Products, ya está listo para insertar datos en la tabla
mediante la instrucción INSERT. Después de insertar los datos, cambiará el contenido de
una fila con una instrucción UPDATE. Utilizará la cláusula WHERE de la instrucción
UPDATE para restringir la actualización a una sola fila. Las cuatro instrucciones
introducirán los siguientes datos.

INSERCIÓN Y ACTUALIZACIÓN DE DATOS DE UNA TABLA


ProductID ProductName Precio ProductDescription
1 Clamp 12,48 Workbench clamp
50 Screwdriver 3,17 Flat head
75 Tire Bar Tool for changing tires.
3000 Corchete de 3 mm 0,52

La sintaxis básica es: INSERT, nombre de tabla, lista de columnas, VALUES y, a


continuación, una lista de los valores que se van a insertar. Los dos guiones dobles antes
de cada línea indican que la línea es un comentario y el compilador ignorará el texto. En
este caso, el comentario describe una variación permitida de la sintaxis.

Inserción de datos en una tabla

1. Ejecute la instrucción siguiente para insertar una fila en la tabla Products que


se ha creado en la tarea anterior.
SQLCopiar
-- Standard syntax
INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription)
VALUES (1, 'Clamp', 12.48, 'Workbench clamp')
GO
 Nota

Si la inserción se realiza correctamente, continúe con el paso siguiente.

Si se produce un error en la inserción, se puede deber a que la tabla Product ya tiene


una fila con ese id. del producto. Para continuar, elimine todas las filas de la tabla y
repita el paso anterior. TRUNCATE TABLE elimina todas las filas de la tabla.

Ejecute el comando siguiente para eliminar todas las filas de la tabla:

SQLCopiar
TRUNCATE TABLE TestData.dbo.Products;
GO

Después de truncar la tabla, repita el comando INSERT en este paso.

2. La instrucción siguiente muestra cómo se puede cambiar el orden en que se


proporcionan los parámetros modificando la situación
de ProductID y ProductName en la lista de campos (entre paréntesis) y en la
lista de valores.
SQLCopiar
-- Changing the order of the columns
INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription)
VALUES ('Screwdriver', 50, 3.17, 'Flat head')
GO
3. La instrucción siguiente demuestra que los nombres de las columnas son
opcionales, siempre y cuando los valores se enumeren en el orden correcto.
Esta sintaxis es habitual, pero no se recomienda porque podría ser difícil
para otros comprender su código. NULL se especifica para la
columna Price porque el precio de este producto no se conoce todavía.
SQLCopiar
-- Skipping the column list, but keeping the values in order
INSERT dbo.Products
VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.')
GO
4. El nombre de esquema es opcional mientras tenga acceso a una tabla del
esquema predeterminado y la modifique. Puesto que la
columna ProductDescription permite valores NULL y no se ha
proporcionado ningún valor, el nombre de columna y el valor
de ProductDescription se pueden quitar por completo de la instrucción.
SQLCopiar
-- Dropping the optional dbo and dropping the ProductDescription column
INSERT Products (ProductID, ProductName, Price)
VALUES (3000, '3 mm Bracket', 0.52)
GO

Actualización de la tabla de productos

Escriba y ejecute la siguiente instrucción UPDATE para cambiar el ProductName del segundo


producto de Screwdrivera Flat Head Screwdriver.

SQLCopiar
UPDATE dbo.Products
SET ProductName = 'Flat Head Screwdriver'
WHERE ProductID = 50
GO

Lectura de datos de una tabla


Use la instrucción SELECT para leer los datos de una tabla. La instrucción SELECT es una
de las instrucciones de Transact-SQL más importantes y tiene muchas variaciones en la
sintaxis. Para este tutorial, trabajará con cinco versiones sencillas.

Lectura de datos en una tabla

1. Escriba y ejecute las siguientes instrucciones para leer los datos de la


tabla Products .
SQLCopiar
-- The basic syntax for reading data from a single table
SELECT ProductID, ProductName, Price, ProductDescription
FROM dbo.Products
GO
2. Puede usar un asterisco (*) para seleccionar todas las columnas de la tabla.
El asterisco es para las consultas ad hoc. En el código permanente,
proporcione la lista de columnas de modo que la instrucción devuelva las
columnas previstas, incluso si más tarde se agrega una columna nueva a la
tabla.
SQLCopiar
-- Returns all columns in the table
-- Does not use the optional schema, dbo
SELECT * FROM Products
GO
3. Puede omitir columnas que ya no desea que se devuelvan. Las columnas se
devolverán en el orden en que aparecen.
SQLCopiar
-- Returns only two of the columns from the table
SELECT ProductName, Price
FROM dbo.Products
GO
4. Use una cláusula WHERE para limitar las filas que se devuelven al usuario.
SQLCopiar
-- Returns only two of the records in the table
SELECT ProductID, ProductName, Price, ProductDescription
FROM dbo.Products
WHERE ProductID < 60
GO
5. Puede trabajar con los valores de las columnas según se devuelven. En el
siguiente ejemplo se realiza una operación matemática en la
columna Price . Las columnas que se han cambiado de esta manera no
tendrán un nombre, a menos que proporcione uno mediante la palabra
clave AS .
SQLCopiar
-- Returns ProductName and the Price including a 7% tax
-- Provides the name CustomerPays for the calculated column
SELECT ProductName, Price * 1.07 AS CustomerPays
FROM dbo.Products
GO

Funciones útiles en una instrucción SELECT

Para obtener información sobre algunas de las funciones que puede usar para trabajar
con datos en instrucciones SELECT, vea los siguientes temas:

Funciones de cadena (Transact-SQL)

Tipos de datos y funciones de fecha y hora (Transact-SQL)

Funciones matemáticas (Transact-SQL)

Funciones de texto e imagen (Transact-SQL)

Creación de vistas y procedimientos almacenados


Una vista es una instrucción SELECT almacenada y un procedimiento almacenado es una
o varias instrucciones Transact-SQL que se ejecutan como un lote.

Las vistas se consultan como las tablas y no aceptan parámetros. Los procedimientos
almacenados son más complejos que las vistas. Los procedimientos almacenados
pueden tener parámetros de entrada y salida y pueden contener instrucciones para
controlar el flujo del código, como instrucciones IF y WHILE. Una práctica recomendable
de programación es usar procedimientos almacenados para realizar todas las tareas
repetitivas en la base de datos.
Para este ejemplo, usará CREATE VIEW para crear una vista que seleccione solo dos de
las columnas de la tabla Products . A continuación, usará CREATE PROCEDURE para
crear un procedimiento almacenado que acepta un parámetro de precio y devuelve solo
los productos cuyo costo es menor que el valor del parámetro especificado.

Creación de una vista

Ejecute la instrucción siguiente para crear una vista que ejecuta una instrucción SELECT y
devuelve los nombres y los precios de los productos al usuario.

SQLCopiar
CREATE VIEW vw_Names
AS
SELECT ProductName, Price FROM Products;
GO

Pruebe la vista

Las vistas se tratan como tablas. Use una instrucción SELECT para tener acceso a la vista.

SQLCopiar
SELECT * FROM vw_Names;
GO

Creación de un procedimiento almacenado

La siguiente instrucción crea un procedimiento almacenado denominado pr_Names,


acepta un parámetro de entrada denominado @VarPrice del tipo de datos money. El
procedimiento almacenado imprime la instrucción Products less than concatenada con
el parámetro de entrada que cambia del tipo de datos money a un tipo de datos de
carácter varchar(10) . A continuación, el procedimiento ejecuta una instrucción SELECT en
la vista y le pasa el parámetro de entrada como parte de la cláusula WHERE . Esto
devuelve todos los productos cuyo costo es menor que el valor del parámetro de
entrada.

SQLCopiar
CREATE PROCEDURE pr_Names @VarPrice money
AS
BEGIN
-- The print statement returns text to the user
PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
-- A second statement starts here
SELECT ProductName, Price FROM vw_Names
WHERE Price < @varPrice;
END
GO

Probar el procedimiento almacenado

Para probar el procedimiento almacenado, escriba y ejecute la instrucción siguiente. El


procedimiento debe devolver los nombres de dos productos introducidos en la
tabla Products en la lección 1 con un precio menor que 10.00.

SQLCopiar
EXECUTE pr_Names 10.00;
GO

UTILIZAR Y GENERAR QUERYS EN JAVA DE SQL

Processing SQL Statements with JDBC


In general, to process any SQL statement with JDBC, you follow these steps:

1. Establishing a connection.
2. Create a statement.
3. Execute the query.
4. Process the ResultSet object.
5. Close the connection.

This page uses the following method, CoffeesTables.viewTable, from the tutorial sample to demonstrate these
steps. This method outputs the contents of the table COFFEES. This method will be discussed in more detail
later in this tutorial:

public static void viewTable(Connection con) throws SQLException {


String query = "select COF_NAME, SUP_ID, PRICE, SALES, TOTAL from
COFFEES";
try (Statement stmt = con.createStatement()) {
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String coffeeName = rs.getString("COF_NAME");
int supplierID = rs.getInt("SUP_ID");
float price = rs.getFloat("PRICE");
int sales = rs.getInt("SALES");
int total = rs.getInt("TOTAL");
System.out.println(coffeeName + ", " + supplierID + ", " + price +
", " + sales + ", " + total);
}
} catch (SQLException e) {
JDBCTutorialUtilities.printSQLException(e);
}
}
Establishing Connections
First, establish a connection with the data source you want to use. A data source can be a DBMS, a legacy file
system, or some other source of data with a corresponding JDBC driver. This connection is represented by
a Connection object. See Establishing a Connection for more information.

Creating Statements

A Statement is an interface that represents a SQL statement. You execute Statement objects, and they
generate ResultSet objects, which is a table of data representing a database result set. You need
a Connection object to create a Statement object.

For example, CoffeesTables.viewTable creates a Statement object with the following code:

stmt = con.createStatement();

There are three different kinds of statements:

 Statement: Used to implement simple SQL statements with no parameters.


 PreparedStatement: (Extends Statement.) Used for precompiling SQL statements that might contain
input parameters. See Using Prepared Statements for more information.
 CallableStatement: (Extends PreparedStatement.) Used to execute stored procedures that may contain
both input and output parameters. See Stored Procedures for more information.

Executing Queries

To execute a query, call an execute method from Statement such as the following:

 execute: Returns true if the first object that the query returns is a ResultSet object. Use this method if
the query could return one or more ResultSet objects. Retrieve the ResultSet objects returned from the
query by repeatedly calling Statement.getResultSet.
 executeQuery: Returns one ResultSet object.
 executeUpdate: Returns an integer representing the number of rows affected by the SQL statement.
Use this method if you are using INSERT, DELETE, or UPDATE SQL statements.

For example, CoffeesTables.viewTable executed a Statement object with the following code:

ResultSet rs = stmt.executeQuery(query);

Processing ResultSet Objects


You access the data in a ResultSet object through a cursor. Note that this cursor is not a database cursor. This
cursor is a pointer that points to one row of data in the ResultSet object. Initially, the cursor is positioned before
the first row. You call various methods defined in the ResultSet object to move the cursor.

For example, CoffeesTables.viewTable repeatedly calls the method ResultSet.next to move the cursor forward


by one row. Every time it calls next, the method outputs the data in the row where the cursor is currently
positioned:

ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String coffeeName = rs.getString("COF_NAME");
int supplierID = rs.getInt("SUP_ID");
float price = rs.getFloat("PRICE");
int sales = rs.getInt("SALES");
int total = rs.getInt("TOTAL");
System.out.println(coffeeName + ", " + supplierID + ", " + price +
", " + sales + ", " + total);
}
// ...

See Retrieving and Modifying Values from Result Sets for more information.

Closing Connections

When you are finished using a Connection, Statement, or ResultSet object, call its close method to immediately
release the resources it's using.

Alternatively, use a try-with-resources statement to automatically close Connection, Statement,


and ResultSet objects, regardless of whether an SQLException has been thrown. (JDBC throws
an SQLException when it encounters an error during an interaction with a data source. See Handling SQL
Exceptions for more information.) An automatic resource statement consists of a try statement and one or more
declared resources. For example, the CoffeesTables.viewTable method automatically closes
its Statement object, as follows:

public static void viewTable(Connection con) throws SQLException {


String query = "select COF_NAME, SUP_ID, PRICE, SALES, TOTAL from
COFFEES";
try (Statement stmt = con.createStatement()) {
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String coffeeName = rs.getString("COF_NAME");
int supplierID = rs.getInt("SUP_ID");
float price = rs.getFloat("PRICE");
int sales = rs.getInt("SALES");
int total = rs.getInt("TOTAL");
System.out.println(coffeeName + ", " + supplierID + ", " + price +
", " + sales + ", " + total);
}
} catch (SQLException e) {
JDBCTutorialUtilities.printSQLException(e);
}
}
The following statement is a try-with-resources statement, which declares one resource, stmt, that will be
automatically closed when the try block terminates:

try (Statement stmt = con.createStatement()) {


// ...
}

Como el nombre sugiere que es el modelo de tabla que se utiliza por un JTable cuando no modelo de mesa se
define específicamente por el programador. Las tiendas DefaultTableModel los datos para el JTable en una

También podría gustarte