Tutorial de MySQL. M. en C. Erika Vilches



Similar documents
New Server Installation. Revisión: 13/10/2014

Manejo Basico del Servidor de Aplicaciones WebSphere Application Server 6.0

ECCAIRS 5 Instalación

Curso SQL Server 2008 for Developers

Monitoreo de Bases de Datos

HPN Product Tools. Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Curso SQL Server 2012 para Desarrolladores

Dictionary (catálogo)

OMEGA SOFT WF RISKEVAL

Versión precedente* Lista productos disponibles** Disponible desde el June 1, 2013

A. Before you read the text, answer the following question: What should a family do before starting to look for a new home?

Memorial Health Care System Catholic Health Initiatives Financial Assistance Application Form

Introducción a las bases de datos SQL Libro de referencia

APS ELEMENTARY SCHOOL PLANNING SURVEY

Bucle for_in. Sintaxis: Bucles for_in con listas. def assessment(grade_list): """ Computes the average of a list of grades

Schema XML_PGE.xsd. element GrupoInformes. attribute XML_PGE.xsd unqualified qualified

Apéndice C: Código Fuente del Programa DBConnection.java

INTELIGENCIA DE NEGOCIO CON SQL SERVER

Estructura de aplicación en PHP para System i

AP SPANISH LANGUAGE 2011 PRESENTATIONAL WRITING SCORING GUIDELINES

Práctica 1: PL 1a: Entorno de programación MathWorks: Simulink

Database Administration with MySQL

A Brief Introduction to MySQL

A brief MySQL tutorial. CSE 134A: Web Service Design and Programming Fall /28/2001

Sales Management Main Features

Mul$media im Netz (Online Mul$media) Wintersemester 2014/15. Übung 03 (Nebenfach)

Propiedades del esquema del Documento XML de envío:

A table is a collection of related data entries and it consists of columns and rows.

What is the Common Problem that Makes most Biological Databases Hard to Work With, if not Useless to most Biologists?

Application for World Wide Views on Climate and Energy Phoenix, AZ

SUBCHAPTER A. AUTOMOBILE INSURANCE DIVISION 3. MISCELLANEOUS INTERPRETATIONS 28 TAC 5.204

FORMACIÓN E-LEARNING DE MICROSOFT

A basic create statement for a simple student table would look like the following.

Estrategias para la Reducción de Riesgos y Ciber Ataques

LEARNING MASTERS. Explore the Northeast

INTERFACE TECHNICAL MANUAL FOR ELECTRONIC TAX INFORMATION EXCHANGE (E-TIE) FOR TAX YEAR 2009

CITY OF LAREDO Application for Certification of Compliance for Utility Connection ($ Application Fee Ordinance No.

Oracle Database 10g Express

Resumen de Entrevista: Asociación de Agentes de Aduana del Puerto de Manzanillo

Problem 1 (1.5 points)

learning science through inquiry in primary classroom Overview of workshop

SUBCHAPTER A. AUTOMOBILE INSURANCE DIVISION 3. MISCELLANEOUS INTERPRETATIONS 28 TAC 5.204

Tema 7 GOING TO. Subject+ to be + ( going to ) + (verb) + (object )+ ( place ) + ( time ) Pronoun

Hacking de aplicaciones Web

BALANCE DUE 10/25/2007 $ STATEMENT DATE BALANCE DUE $ PLEASE DETACH AND RETURN TOP PORTION WITH YOUR PAYMENT

2013 ASIS PUERTO RICO CHAPTER Inc. PRESENTS: 2013 SECURITY PROGRAM DESIGN 2-Day Program

Problem 1 (2.5 points)

Automating MT post-editing using regular expressions

X JORNADAS DE DATA MINING & BUSINESS INTELLIGENCE

R&P Cultural Orientation Model Assessment, Spanish

ENVIRONMENT: Collaborative Learning Environment

Física Computacional Conceptos de programación.

CA Dream Application References

UMBRELLA POLICY PACKET. RACHEL J LAWRENCE November 25, WURZBACH RD APT 1701 SAN ANTONIO TX Important Messages

FTPS - FTPSE. Objetivo:

Military Scholarship & Employment Program (MSEP)

Quick Installation Guide. Guía de instalación rápida. Wireless 150 N USB Adapter W150NU

FAMILY INDEPENDENCE ADMINISTRATION Seth W. Diamond, Executive Deputy Commissioner

Verbos modales. In this class we look at modal verbs, which can be a tricky feature of English grammar.

Supervisión y sistemas de información para la industria.

Práctica Configuración Routing / resumen comandos

Annual Notice of Changes for 2015

1. DESCRIPCIÓN DE WEB SERVICES DE INTERCAMBIO DE DATOS CON NOTARIOS

Tax Court of New Jersey

Database Security. Principle of Least Privilege. DBMS Security. IT420: Database Management and Organization. Database Security.

Verbs + INFINITIVE (to + verb) Verb + noun/pronoun + Infinitive

Sub OPT() j = 1 k = 1 m = 1 n = 1 o = 1 g = 1 h = 1

DIPLOMADO DE JAVA - OCA

Embarcadero DBArtisan

LINIO COLOMBIA. Starting-Up & Leading E-Commerce. Luca Ranaldi, CEO. Pedro Freire, VP Marketing and Business Development

Annual Notice of Changes for 2015

How To Create A Table In Sql (Ahem)

Preparando a futuros profesores para integrar tecnología

SQL. Short introduction

New words to remember

John Burroughs Agcy Briarhills#216 Houston TX 77077

Laboratorio 3 Comunicación sincrónica Vía Satélite

Home vol.3 - Bathrooms - Scenes & Shapes

Entrenamiento a Embajadores Ambassador training

How To Know If An Ipod Is Compatible With An Ipo Or Ipo (Sanyo)

RIGGING CONDITIONS AND PROCEDURES

PROGRAMA DE GRAFICACIÓN DE VELOCIDADES EN VENTANAS DE MAPINFO

Articles. Articles. Introduction. Introduction. Information on e-file. Information on Free File. Media Tools

UQC103S1 UFCE Systems Development. uqc103s/ufce PHP-mySQL 1

El concepto 360+ nace de la propuesta de unir ambientes dentro de un mismo espacio, sin renunciar a sus diferentes necesidades.

Work Instruction (Instruccion de Trabajo) Wistron InfoComm (Texas) Corp.

Helping Consumers Understand the New Health. Insurance Premium Tax Credit in Spanish. Consumers Union, nonprofit. Consumer Reports and

LOS ANGELES UNIFIED SCHOOL DISTRICT REFERENCE GUIDE

Ficha técnica de curso Código: IFCAD111

Relational Schema of Database:

BDL4681XU BDL4675XU. Video Wall Installation Guide

SPANISH MOOD SELECTION: Probablemente Subjunctive, Posiblemente Indicative

Citrix User Profile Manager - Citrix UPM

Transcription:

Tutorial de MySQL M. en C. Erika Vilches

Presentación y BD Bajar esta presentación: www.erika-vilches.com/mysql.pdf Bajar una base de datos muestra: www.erika-vilches.com/db.sql Cargar base de datos: $ wget www.erika-vilches.com/db.sql $ $ mysql --user=yourname --password=yourpass < db.sql

Iniciando el cliente de Línea de Comandos Iniciando el cliente (conexión anónima): $ mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2084 to server version: 4.1.12-standard-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> Errores comunes: Si el cliente no permite conexiones anónimas: $ mysql ERROR 1045 (28000): Access denied for user 'evilches'@'localhost' (using password: NO) Si el servidor MySQL no esta corriendo: $ mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Conexión con usuario y password: Password visible en la pantalla en texto plano: $ mysql --user=yourname --password=yourpass Password no visible en la pantalla. No se despliega mientras se escribe: $ mysql --user=yourname --password Enter password: En caso de error: ERROR 1045 (28000): Access denied for user 'yourname'@'localhost' (using password: YES) Para conectarse a un servidor remoto: $ mysql --host=host.yourdomain.com --user=yourname --password $ mysql --host host.yourdomain.com --user yourname --password $ mysql --host=ip --user=yourname --password

Abreviadamente: $ mysql -hhost.yourdomain.com -uyourname -ppaswword $ mysql -h host.yourdomain.com -u yourname -p Incorrecto (trata al password como nombre de la base): $ mysql -h host.yourdomain.com -u yourname -p password Puerto default: 3306. Si el servidor utiliza un puerto distinto, especificarlo usando --port= o -P Si se desea utilizar una base de datos en especifico, utilizar --database o -D, o simplemente especificando el nombre de la base de datos al final: $ mysql --host=host.yourdomain.com --user=yourname --password dbname

Ejecutando comandos SQL Seleccionando una base de datos a utilizar: Ver las bases de datos disponibles: mysql> show databases; +--------------------+ Database +--------------------+ mysql test yourdb +--------------------+ 3 rows in set (0.00 sec) Seleccionar una base de datos: mysql> \u yourdb Database changed o Si la base no existe: mysql> use yourdb Database changed mysql> \u wrongdb ERROR 1049 (42000): Unknown database 'wrongdb' \comando NO es SQL, es comando interno de MySQL

Mostrando el status de la conexión: mysql> \s - - - - - - - C:\Program Files\MySQL\MySQL Server 4.1\bin\mysql.exe Ver 14.7 Distrib 4.1.14, for Win32 (ia32) Connection id: 94 Current database: mysqlin10 Current user: root@localhost SSL: Not in use Using delimiter: ; Server version: 4.1.14-nt Protocol version: 10 Connection: localhost via TCP/IP Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 TCP port: 3306 Uptime: 35 days 5 hours 34 min 51 sec Threads: 1 Questions: 542843 Slow queries: 18 Opens: 546 Flush tables: 1 Open tables: 0 Queries per second avg: 0.178 - - - - - - - - Para salir del cliente MySQL: \q quit exit

Delimitación de comandos usando ; : mysql> SHOW DATABASES -> mysql> show databases; +--------------------+ Database +--------------------+ mysql test yourdb +--------------------+ 3 rows in set (0.00 sec) mysql> SELECT first_name, last_name -> FROM customer_contacts -> WHERE customer_code = 'PRESINC' -> ORDER BY last_name; first_name last_name Abraham Lincoln Richard Nixon Franklin Roosevelt Theodore Roosevelt 4 rows in set (0.00 sec) Otra forma de delimitar un comando \g : mysql> show databases \g +--------------------+ Database +--------------------+ mysql test yourdb +--------------------+ 3 rows in set (0.00 sec)

Cuando un query no regresa nada: mysql> SELECT * -> FROM emptytable; Empty set (0.00 sec) Formato de salida -> Vertical: mysql> SELECT * FROM products -> \G *************************** 1. row *************************** code: MINI name: Small product weight: 1.50 price: 5.99 *************************** 2. row *************************** code: MIDI name: Medium product weight: 4.50 price: 9.99 *************************** 3. row *************************** code: MAXI name: Large product weight: 8.00 price: 15.99 3 rows in set (0.02 sec) Producido con \G o con el switch --vertical. Tambien --html --xml existe el switch y (switchs usados al iniciar el cliente).

Comando SELECT Utilidad: Obtener registros de información Se debe especificar de qué tabla con FROM Regresando columnas individuales: mysql> SELECT name -> FROM customers; +-------------------------+ name +-------------------------+ Presidents Incorporated Science Corporation Musicians of America +-------------------------+ 3 rows in set (0.02 sec) Devolverá todos los registros de la tabla a menos que se le indique lo contrario

Regresando columnas múltiples: mysql> SELECT name, price, weight -> FROM products; +----------------+-------+---------+ name price weight +----------------+-------+---------+ Small product 5.99 1.50 Medium product 9.99 4.50 Large product 15.99 8.00 +----------------+-------+---------+ 3 rows in set (0.00 sec) Regresando todas las columnas: mysql> SELECT * -> FROM products; +------+----------------+--------+-------+ code name weight price +------+----------------+--------+-------+ MINI Small product 1.50 5.99 MIDI Medium product 4.50 9.99 MAXI Large product 8.00 15.99 +------+----------------+--------+-------+ 3 rows in set (0.00 sec)

Conociendo la definición de una tabla: mysql> DESCRIBE products; +--------+--------------+------+-----+---------+-------+ Field Type Null Key Default Extra +--------+--------------+------+-----+---------+-------+ code varchar(10) name varchar(40) weight decimal(6,2) 0.00 price decimal(6,2) 0.00 +--------+--------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) Si la tabla no existe: mysql> SELECT * -> FROM product; ERROR 1146 (42S02): Table sampdb.product' doesn't exist Si la columna no existe: mysql> SELECT name -> FROM customer_contacts; ERROR 1054 (42S22): Unknown column 'name' in 'field list'

Errores de sintaxis: mysql> SELECT first_name, last name, -> FROM customer_contacts; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM customer_contacts' at line 2 mysql> SELECT name -> FORM products; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'products' at line 2 Devolviendo la lista de bases de datos: mysql> SHOW DATABASES; +-------------------+ Database +-------------------+ mysqlin10 mydb +-------------------+ 2 rows in set (0.00 sec)

Devolviendo la lista de tablas en la base de datos en uso: mysql> SHOW TABLES; +---------------------+ Tables_in_mysqlin10 +---------------------+ customer_contacts customers order_lines orders products +---------------------+ 5 rows in set (0.00 sec) Devolviendo la lista de tablas en otra base de datos distinta a la que esta en uso: mysql> SHOW TABLES FROM sampdb; +---------------------+ Tables_in_sambdb +---------------------+ customer_contacts customers order_lines orders products +---------------------+ 5 rows in set (0.00 sec)

Devolver la estructura de una tabla: mysql> SHOW COLUMNS FROM products; +--------+--------------+------+-----+---------+-------+ Field Type Null Key Default Extra +--------+--------------+------+-----+---------+-------+ code varchar(10) name varchar(40) weight decimal(6,2) 0.00 price decimal(6,2) 0.00 +--------+--------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) Shotcut: DESCRIBE table mysql> DESCRIBE products; +--------+--------------+------+-----+---------+-------+ Field Type Null Key Default Extra +--------+--------------+------+-----+---------+-------+ code varchar(10) name varchar(40) weight decimal(6,2) 0.00 price decimal(6,2) 0.00 +--------+--------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)

Cláusula WHERE Utilidad: Se añade al comando SELECT para filtrar los resultados basándose en una condición (solo los registros que la cumplan serán devueltos).

Filtrado sobre un valor exacto: mysql> SELECT id, first_name, last_name -> FROM customer_contacts -> WHERE customer_code = 'SCICORP'; +---- id first_name last_name +---- 4 Albert Einstein 5 Charles Darwin 6 Marie Curie 7 Benjamin Franklin +---- 4 rows in set (0.03 sec) mysql> SELECT * -> FROM products -> WHERE code = 'MIDI'; +------+----------------+--------+-------+ code name weight price +------+----------------+--------+-------+ MIDI Medium product 4.50 9.99 +------+----------------+--------+-------+ 1 row in set (0.00 sec) mysql> SELECT * -> FROM products -> WHERE code(=)'mini'; +------+----------------+--------+-------+ code name weight price +------+----------------+--------+-------+ MIDI Medium product 4.50 9.99 MAXI Large product 8.00 15.99 +------+----------------+--------+-------+ 2 rows in set (0.02 sec)s

Filtrado sobre un rango de valores: mysql> SELECT * -> FROM products -> WHERE price <= 9.99; +------+----------------+--------+-------+ code name weight price +------+----------------+--------+-------+ MINI Small product 1.50 5.99 MIDI Medium product 4.50 9.99 +------+----------------+--------+-------+ 2 rows in set (0.00 sec) mysql> SELECT last_name -> FROM customer_contacts -> WHERE last_name > 'G'; +-----------+ last_name +-----------+ Lincoln Nixon Roosevelt Gershwin Lennon +-----------+ 5 rows in set (0.00 sec) Gershwin es mayor que G, funciona igual que en un diccionario (iría después).

Uso de comillas en valores no numéricos: Incorrecto: mysql> SELECT last_name -> FROM customer_contacts -> WHERE first_name = Benjamin; ERROR 1054 (42S22): Unknown column 'Benjamin' in 'where clause' Correcto: mysql> SELECT last_name -> FROM customer_contacts -> WHERE first_name = 'Benjamin'; +-----------+ last_name +-----------+ Franklin Britten +-----------+ 2 rows in set (0.00 sec)

Funciona pero esta fuera de la convención WHERE column = value mysql> SELECT last_name -> FROM customer_contacts -> WHERE 'Benjamin' = first_name; +-----------+ last_name +-----------+ Franklin Britten +-----------+ 2 rows in set (0.00 sec) Peculiar comparación de columnas de la misma tabla: mysql> SELECT first_name, last_name -> FROM customer_contacts -> WHERE first_name = last_name; Empty set (0.00 sec)

Cláusula ORDER BY Utilidad: Especificar el ordenamiento del resultado de un query. Ordenando sobre una sola columna: mysql> SELECT * -> FROM products -> ORDER BY price; +------+----------------+--------+-------+ code name weight price +------+----------------+--------+-------+ MINI Small product 1.50 5.99 MIDI Medium product 4.50 9.99 MAXI Large product 8.00 15.99 +------+----------------+--------+-------+ 3 rows in set (0.00 sec) mysql> SELECT first_name, last_name -> FROM customer_contacts -> WHERE customer_code = 'SCICORP' -> ORDER BY last_name; first_name last_name Marie Curie Charles Darwin Albert Einstein Benjamin Franklin 4 rows in set (0.00 sec)

Ordenando sobre múltiples columnas: mysql> SELECT order_date, customer_code -> FROM orders -> ORDER BY order_date, customer_code; +------------+---------------+ order_date customer_code +------------+---------------+ 2006-01-23 PRESINC 2006-01-23 SCICORP 2006-01-26 PRESINC 2006-02-01 MUSGRP 2006-02-02 MUSGRP 2006-02-02 SCICORP 2006-02-05 SCICORP +------------+---------------+ 7 rows in set (0.00 sec) Especificando el orden: mysql> SELECT * -> FROM products -> ORDER BY weight DESC; +------+----------------+--------+-------+ code name weight price +------+----------------+--------+-------+ MAXI Large product 8.00 15.99 MIDI Medium product 4.50 9.99 MINI Small product 1.50 5.99 +------+----------------+--------+-------+ 3 rows in set (0.00 sec) Opcional: ASC

Combinando cláusulas WHERE Operador AND: Operador OR: mysql> SELECT * FROM orders -> WHERE customer_code = 'Scicorp' -> AND order_date >= '2006-02-01'; +----+---------------+------------+ id customer_code order_date +----+---------------+------------+ 4 Scicorp 2006-02-02 5 SCICORP 2006-02-05 +----+---------------+------------+ 2 rows in set (0.00 sec) mysql> SELECT * FROM orders -> WHERE customer_code = 'Scicorp' -> OR order_date >= '2006-02-01'; +----+---------------+------------+ id customer_code order_date +----+---------------+------------+ 3 SCICORP 2006-01-23 4 SCICORP 2006-02-02 5 SCICORP 2006-02-05 6 MUSGRP 2006-02-01 7 MUSGRP 2006-02-02 +----+---------------+------------+ 5 rows in set (0.00 sec)

Buscar un mismo valor en dos columnas: mysql> SELECT first_name, last_name -> FROM customer_contacts -> WHERE first_name = 'Franklin' -> OR last_name = 'Franklin'; first_name last_name Franklin Roosevelt Benjamin Franklin 2 rows in set (0.00 sec) Buscar dos valores en la misma columna: mysql> SELECT first_name, last_name -> FROM customer_contacts -> WHERE first_name = 'Benjamin' -> OR first_name = 'Charles'; first_name last_name Charles Darwin Benjamin Franklin Benjamin Britten 3 rows in set (0.00 sec) o mysql> SELECT first_name, last_name -> FROM customer_contacts -> WHERE first_name IN ('Benjamin', 'Charles'); first_name last_name Charles Darwin Benjamin Franklin Benjamin Britten 3 rows in set (0.00 sec)

Buscar en un rango de valores (inclusive): mysql> SELECT * -> FROM orders -> WHERE order_date BETWEEN '2006-01-24' AND '2006-01-30'; +----+---------------+------------+ id customer_code order_date +----+---------------+------------+ 2 PRESINC 2006-01-26 3 SCICORP 2006-01-23 +----+---------------+------------+ 2 rows in set (0.00 sec) Negando una condición: mysql> SELECT first_name, last_name FROM customer_contacts -> WHERE customer_code = 'PRESINC' -> AND first_name NOT IN ('Abraham', 'Theodore'); first_name last_name Richard Nixon Franklin Roosevelt 2 rows in set (0.00 sec) mysql> SELECT * FROM orders -> WHERE order_date NOT BETWEEN '2006-01-26' AND '2006-02-03'; +----+---------------+------------+ id customer_code order_date +----+---------------+------------+ 1 PRESINC 2006-01-23 3 SCICORP 2006-01-23 5 SCICORP 2006-02-05 +----+---------------+------------+ 3 rows in set (0.00 sec)

Precedencia de operadores: AND > OR > NOT mysql> SELECT customer_code, first_name, last_name -> FROM customer_contacts -> WHERE customer_code = 'SCICORP' -> AND first_name = 'Albert' -> OR first_name = 'Benjamin'; +--------------- customer_code first_name last_name +--------------- SCICORP Albert Einstein SCICORP Benjamin Franklin MUSGRP Benjamin Britten +--------------- 3 rows in set (0.00 sec) Cambiando las precedencias: mysql> SELECT customer_code, first_name, last_name -> FROM customer_contacts -> WHERE customer_code = 'SCICORP' -> AND (first_name = 'Albert' -> OR first_name = 'Benjamin'); +--------------- customer_code first_name last_name +--------------- SCICORP Albert Einstein SCICORP Benjamin Franklin +--------------- 2 rows in set (0.00 sec)

Limitando el numero de registros de respuesta: mysql> SELECT first_name, last_name -> FROM customer_contacts -> ORDER BY last_name -> LIMIT 3; first_name last_name Benjamin Britten Marie Curie Charles Darwin 3 rows in set (0.00 sec) Devolviendo el valor más alto solamente: mysql> SELECT * -> FROM products -> ORDER BY price DESC -> LIMIT 1; +------+---------------+--------+-------+ code name weight price +------+---------------+--------+-------+ MAXI Large product 8.00 15.99 +------+---------------+--------+-------+ 1 row in set (0.00 sec)

Saltándose registros: (Offset) Solo los primeros 3: (equivalente a LIMIT 0,3) mysql> SELECT email -> FROM customer_contacts -> ORDER BY email -> LIMIT 3; +--------------------------+ email +--------------------------+ britten@musgrp.com curie@sciencecorp.com darwin@sciencecorp.com +--------------------------+ 3 rows in set (0.00 sec) Solo 3, saltándose los primeros 3: mysql> SELECT email -> FROM customer_contacts -> ORDER BY email -> LIMIT 3,3; +--------------------------+ email +--------------------------+ einstein@sciencecorp.com fdr@presidentsinc.com franklin@sciencecorp.com +--------------------------+ 3 rows in set (0.00 sec)

Aún faltan muchos comandos para generar consultas por ver... pero de momento es mas importante que conozcan como crear una base de datos... (proyecto de su profesor)

Manejando una Base de Creando la base: mysql> CREATE DATABASE newdb; Query OK, 1 row affected (0.02 sec) Datos Si la base de datos ya existe: mysql> CREATE DATABASE newdb; ERROR 1007 (HY000): Can't create database 'newdb'; database exists Prevención: mysql> CREATE DATABASE IF NOT EXISTS newdb; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> SHOW WARNINGS; +-------+------+--------------------------------------------------+ Level Code Message +-------+------+--------------------------------------------------+ Note 1007 Can't create database 'newdb'; database exists +-------+------+--------------------------------------------------+ 1 row in set (0.00 sec)

Cambiando las características de una base existente: mysql> ALTER DATABASE greekdb -> CHARACTER SET ascii; Query OK, 1 row affected (0.00 sec) Eliminando una base: mysql> DROP DATABASE greekdb; Query OK, 0 rows affected (0.00 sec) Creando una tabla: CREATE TABLE products ( product_code VARCHAR(10) PRIMARY KEY, name VARCHAR(40) NOT NULL UNIQUE, weight DECIMAL(6,2) NOT NULL, price DECIMAL(6,2) NOT NULL );

Especificando valores default: mysql> CREATE TABLE people ( -> name VARCHAR(40), -> sex VARCHAR(6) DEFAULT 'Female' -> ); Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO people (name) -> VALUES ('Jane Doe'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM people; +----------+--------+ name sex +----------+--------+ Jane Doe Female +----------+--------+ 1 row in set (0.00 sec)

Autoincrementando columnas: CREATE TABLE orders ( order_id INT PRIMARY KEY AUTO_INCREMENT, customer_code VARCHAR(10) NOT NULL, order_date DATE NOT NULL ); mysql> INSERT INTO orders (customer_code, order_date) -> VALUES ('SCICORP','2006-03-20'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM orders -> ORDER BY order_id DESC -> LIMIT 2; +----------+---------------+------------+ order_id customer_code order_date +----------+---------------+------------+ 8 SCICORP 2006-03-20 7 MUSGRP 2006-02-02 +----------+---------------+------------+ 2 rows in set (0.00 sec)

Cambiando la definición de una tabla: Añadiendo una columna: mysql> ALTER TABLE customer_contacts -> ADD fax VARCHAR(12); Query OK, 11 rows affected (0.00 sec) Records: 11 Duplicates: 0 Warnings: 0 Cambiando el tipo de la columna sin cambiar el nombre: mysql> ALTER TABLE customer_contacts -> CHANGE fax fax TEXT; Query OK, 11 rows affected (0.01 sec) Records: 11 Duplicates: 0 Warnings: 0 Eliminando una columna: mysql> ALTER TABLE customer_contacts -> DROP fax; Query OK, 11 rows affected (0.00 sec) Records: 11 Duplicates: 0 Warnings: 0

Eliminando una tabla: mysql> DROP TABLE people; Query OK, 0 rows affected (0.00 sec)

Otra cosa útil para su proyecto... el manejo de usuarios

Manejo de Usuarios Creando un usuario, que se conectara solamente desde localhost: mysql> CREATE USER evilches@localhost IDENTIFIED BY 'mypass'; Query OK, 0 rows affected (0.02 sec) Asignando o cambiando un password: mysql> SET PASSWORD FOR evilches@localhost = PASSWORD('newpass'); Query OK, 0 rows affected (0.00 sec) Error (omitir la función password): mysql> SET PASSWORD FOR evilches@localhost = 'newpass'; ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number Cambiar password del usuario loggeado: mysql> SET PASSWORD = PASSWORD('newpass'); Query OK, 0 rows affected (0.00 sec)

Dando privilegios: Privilegio select e insert para usuario evilches, en localhost, en la tabla products, de la base mysql10: mysql> GRANT SELECT, INSERT -> ON mysql10.products -> TO evilches@localhost; Query OK, 0 rows affected (0.00 sec) Al conectarse como el usuario evilches, a la base mysql10: mysql> show tables; +-------------------+ Tables_in_mysql10 +-------------------+ products +-------------------+ 1 row in set (0.00 sec) Permite hacer consultas sobre la tabla, insertar registros, pero no le permite usar DELETE mysql> INSERT INTO products -> (product_code, name, weight, price) -> VALUES -> ('MYPROD', 'My new product', 1.00, 1.99); Query OK, 1 row affected (0.03 sec) mysql> DELETE FROM products; ERROR 1142 (42000): DELETE command denied to user 'evilches'@'localhost' for table 'products'

Revocando privilegios: Revocando el privilegio INSERT (el privilegio SELECT asignado no se ve afectado): mysql> REVOKE INSERT -> ON mysql10.products -> FROM evilches@localhost; Query OK, 0 rows affected (1.25 sec)

Muchas gracias por su atención. Dudas: erika@erika-vilches.com