A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Curso de SQL y MySQL

Curso de SQL y MySQL

Alberto Alcocer

Alberto Alcocer

Tipos de columnas / Creaci贸n de la tabla books

8/24
Recursos

Aportes 174

Preguntas 74

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Explicaci贸n sencilla entre 0, NULL o indefinido:

Hola para los que quieran un editor de texto como el que el profe usa para escribir el c贸digo, recomiendo Visual Estudio Code. Si no saben (como yo) como vincular Visual Estudio Code con MySQL ac谩 les dejo un tutorial que me funcion贸, saludos!
Tutorial: https://www.youtube.com/watch?v=AJUJ1f9gFm8

Query OK

CREATE TABLE IF NOT EXISTS books(
book_id INTEGER UNSIGNED AUTO_INCREMENT,
author INTEGER UNSIGNED,
title VARCHAR(100) NOT NULL,
year INTEGER UNSIGNED NOT NULL DEFAULT 1900,
lenguage VARCHAR(2) NOT NULL DEFAULT 'es' COMMENT  'ISO 639-1 Lenguage',
cover_url VARCHAR(500),
price DOUBLE (6,2) NOT NULL DEFAULT 10.0,
sellable TINYINT(1) DEFAULT 1,
copies INTEGER NOT NULL DEFAULT 1,
description TEXT,
PRIMARY KEY (book_id)
);

RESUMEN:


iniciamos con鈥> CREATE DATABSE platzi_operation;

creamos DB----> CREATE DATABASE IF NOT EXISTS platzi_operation;
Si ay existe, dir谩 que el Query es OK, est谩 blindado y no ser谩 arrojado como error

muestra鈥> SHOW warnings.
La DB no peude crearrse por que ya existe.

CREATE DATABSE platzi_operation; Me arroja un ERROR como un error porque ya existe.

Nota: Cuando te arroja empty sets quiere decir que no hay nada de data en lo que est谩s consultando.Cuando te conectas en un driver las tuplas son nulas.

Tip: Cada tabla se llame en el plural del sustantivo que vamos a guardar. Si guardas libros pues la tabla deber谩 llamarse LIBROS. Y de preferencia en ingles.
Convention over configuration.
Tip: No se gurdan archivos binarios en la base de datos relacional, nunca guardar una imagen, pero si una referencia.
Tip: Lo que necesita toda tabla es un ID. para ubicar a cada tupla de manera 煤nica, un entero autoincremental.

CREATE TABLE IF NOT EXIST books (
book_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
author, // Se deja sin indicar debido a que posteriormente tendr谩 un campo num茅rico ID en una tabla distinta.
title VARCHAR(100) NOT NULL, // Estamos diciendole que exija un dato no nulo, es decir que exista algo, asi sea un espacio, pues los espacios aunque invisibles ocupan memoria.
year INTEGER UNSIGNED NOT NULL DEFAULT 1900, // Si no le env铆o nada por defecto me pondr谩 un valor determinado. (1900),
lenguaje VARCHAR (2) NOT NULL DEFAULT 鈥榚s鈥 COMMENT// Convencion de idiomas en dos letras, comentarios solo los ven los que tienen acceso a la estructura.
cover_url VARCHAR (500),
price DOUBLE (6,2) NOT NULL DEFAULT 10.0,// Decimales. Escribame 6 digitos, y 2 decimales. Por lo que tengo 4 en las unidaes y 2 decimales.

________BANDERAS:
sellable TINYINT (1) DEFAULT 1, // Se puede vender si o no.
copies INTEGER NOT NULL DEFAULT 1,
description TEXT

);

Llave primaria autoincremental. Al borrar una tupla el n煤mero autoincremental lo que hace es que sigue con el n煤mero en el que iba, MySQL no detecta la tupla eliminada.
El n煤mero que existe en esta columna no necesariamente es la Cardinalidad de la tabla.
La cardinaldiad es el n煤mero de elementos de un conjunto en esta tabla.

Podemos hacer que un INTEGER sea +/- o, Solo positivo: No almacena en el campo de byte el signo, por lo que sea horran potencias de dos para mejorar el espacio.
UNSIGNED No almacena el simbolo por lo que almacena solo positivo.

NOTA: Los datos num茅ricos pueden ser del tipo TINYINT,SMALLINT,MEDIUMINT,INT O INTEGER, BIGINT. El tipo de dato entero que hoy en d铆a circula en algunos contextos ya pas贸 la capacidad del tipo de dato INTGER existente,esto en casi cualquier lenguaje de programci贸n, y si decidieramos almacenarla como string y luego castearla a int tendr铆amos un problema de overhead.

  • INTEGER: Es un entero,Ocupa 4 bytes.

  • AUTO_INCREMENT: Hace enteros que se auto incrementan, se meten a una dupla y detecta el numero para hacerlo crecer autom谩ticamente. *Al borrar un dato de MYSQL no lo nota y sigue aumentando n煤meros, EJEMPLO 1 2 4, si se elimina el 3 no le importa y sigue contando.

  • UNSIGNED: hace que un entero sea positivo o negativo o solo positivo. (perd贸n no lo comprend铆 bien).

  • TINYINT: Ocupa 1 byte.

  • SMALLINT: Ocupa 2 byes.

-Varchar: Tu le tienes que indicar el numero de caracteres a almacenar de texto.EJEMPLO VARCHAR(2) SI.

-NOTNULL: Es decirle a MYSQL que no almacene algo ,algo nulo es que no existe informaci贸n, en otras palabras es nada.

  • Year: 10/11/1900

  • DEFAULT: Es que no le mando informaci贸n por defecto debe poner el valor que se agrega despu茅s del mismo.

  • COMMENT: Comentario a la columna, que solo se ve al revisar el c贸digo.

  • DOUBLE: Almacena los n煤meros enteros y los decimales. *DOUBLE (6,2) esto hace que de los 6 n煤meros que le estamos diciendo 2 de ellos los use solo para decimales.

  • FLOAT: Es un numero que esta almacenando hasta 6 decimales, es para c谩lculos precisos.

  • TEXT: Es meter tanto como se pueda. EJEMPLO Descripci贸n de un libro

me da mal sabor de boca cuando iniciando un curso el docente no se toma el tiempo suficiente o no entrega los paso a paso para instalar el laboratorio de pr谩cticas ID脡NTICO al que el utiliza sin objeci贸n deber铆a ser un v铆deo, lo mismo o igualmente las herramientas que ellos usan en los v铆deos.

laboratorio de pr谩cticas ID脡NTICO 鈥> creo que en este caso es una consola unix

entonces el cursos ya no es pr谩ctico porque las herramientas en los diferentes S.O son distintas (comandos y dem谩s / no veo feedback para las preguntas de los estudiantes en este tema de configuraci贸n) y el curso se vuelve solo ver v铆deos y v铆deos, lo mismo me paso en el curso anterior 鈥淐urso de introducci贸n a la terminal y l铆nea de comandos鈥 donde me toco instalar linux en windows entonces el directorio no era el mismo, el docente ten铆a ya en su m谩quina una serie de archivos y configuraciones en donde realizo practicas pero los estudiantes quedamos plop, entonces fue terminar de ver los v铆deos y ya鈥

no se si la mayor铆a de cursos son as铆 pues solo llevo realizados los cursos de esta ruta de aprendizaje? Y los 2 primero fueron EXCELENTES y no quiero ni imaginar si me pasara con un curso m谩s t茅cnico.

ESPERO ESTO MEJORE A MEDIDA QUE AVANZO EN PLATZI.

NO ejecuten el script todav铆a, ESPEREN al siguiente video

Buenas pr谩cticas:

  • El nombre de tabla deber铆a estar en plural.
  • El ID debe estar siempre presente en la tabla.
  • Deber铆a guardarse la URL de la im谩gen y no un binario en la BD.

6- Comando Create

El comando create sirve para crear ya sea tablas o bases de datos, al agregar la instrucci贸n 鈥渋f not exists鈥 estamos blindando el query, al hacer esto s铆 la bases de datos existe nuestro RDBMS nos arrojar铆a un query ok, en vez de query ERROR.
A vece cuando hacemos un querys como 鈥渟how tables鈥, nuestro RDBMS nos marca por consola empty set que significa que no hay nada.
Se debe tomar en cuenta que a veces cuando nos conectamos a trav茅s de un driver la respuesta es cero o NULL esto se debe a por que la tuplas afectadas es cero.
Al momento de declarar una valor de tipo entero o punto flotante podemos decidir s铆 guardar el signo en la cadena de bytes.

  • CREATE DATABASE IF NOT EXISTS
    Sentencia Sql para crear una bases de datos
 /*Crear Bases de datos*/
CREATE DATABASE IF NOT EXISTS platzi_operations DEFAULT CHARSET utf8 ;
  • SHOW DATABASES
    Muestra las bases de datos dentro de nuestros RDBMS significa Relational Database Management System o sistema manejador de bases de datos relacionales.
 /*muestra bases de datos*/
SHOW DATABASES;
  • USE nombre_databases
    Esto permite hacer que el puntero nuestras consola est茅 dentro de nuestra bases de datos para realizar las consultas o querys a una bases de datos en espec铆fico.
 /*Usar bases de datos*/
USE platzi_library;
  • SELECT DATABASE().
    Muestra qu茅 bases de datos est谩 seleccionada para realizar las consultas o querys
/*mostrar bases de datos usada*/
SELECT DATABASE();
  • SHOW TABLES
    Muestra la tablas de una bases de datos.
 /*Mostrar tablas*/
SHOW TABLES;
  • SHOW WARNINGS
    Muestra las advertencia que nos arroja nuestro RDBMS significa Relational Database Management System o sistema manejador de bases de datos relacionales.
/*muestra el mensaje de advertencia*/
SHOW WARNINGS;
  • CREATE TABLE
    Esta sentencia sirve para crear tablas, es buena pr谩ctica colocar el nombre de la tablas en sustantivo plural en ingl茅s. la sentencia 鈥淚F NOT EXISTS鈥, nos permite blindar el query para que se un query ok en vez de un query error. Toda tabla necesita un id para identificar de manera 煤nica cada tupla.
            /*Creaci贸n de la tabla*/       
CREATE TABLE IF NOT EXISTS `books` (
    
 `book_id`   INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
 `title`     VARCHAR(100) NOT NULL,
 `year`      INTEGER UNSIGNED NOT NULL DEFAULT 1900,
 `language`  VARCHAR(2) NOT NULL DEFAULT 'es' COMMENT 'ISO 639-1 Language',
 `coverurl`  VARCHAR (500),
 `price`     DOUBLE(6,2) NOT NULL DEFAULT 10.0,
`sellable`  TINYINT(1) NOT NULL DEFAULT 1,
`copies`    INTEGER UNSIGNED NOT NULL DEFAULT 0,
 `descirption` TEXT
)
;

驴Como soluciono este error?

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 'AUTO_INCREMENT,

Mi query
CREATE TABLE IF NOT EXISTS products (
product_id INTEGER PRIMARY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
stock INTEGER UNSIGNED NOT NULL DEFAULT 0,
price INTEGER UNSIGNED NOT NULL DEFAULT 0,
)

APUNTES:

  1. La sentencia UNSIGNED nos permite quitar el signo de los enteros negativos, por lo cual solo tendremos positivos.
  2. Como buenas practicas la tabla se nombra en plural y sus argumentos en singular y ambos en ingl茅s.
  3. Si se est谩 creando ya sea una base de datos o una tabla seria factible poner en el c贸digo
CREATE TABLE IF NOT EXISTS 'name'
CREATE DATABASE IF NOT EXISTS 'name'

realmente me parece importante verlo ejecutar el c贸digo del que habla, porque la teoria esta pero no vemos la creacion en proceso

Listado de cada uno de los tipos de dato num茅ricos en MySQL, su ocupaci贸n en disco y valores.

INT (INTEGER): Ocupaci贸n de 4 bytes con valores entre -2147483648 y 2147483647 o entre 0 y 4294967295.
SMALLINT: Ocupaci贸n de 2 bytes con valores entre -32768 y 32767 o entre 0 y 65535.
TINYINT: Ocupaci贸n de 1 bytes con valores entre -128 y 127 o entre 0 y 255.
MEDIUMINT: Ocupaci贸n de 3 bytes con valores entre -8388608 y 8388607 o entre 0 y 16777215.
BIGINT: Ocupaci贸n de 8 bytes con valores entre -8388608 y 8388607 o entre 0 y 16777215.
DECIMAL (NUMERIC): Almacena los n煤meros de coma flotante como cadenas o string.
FLOAT (m,d): Almacena n煤meros de coma flotante, donde 鈥榤鈥 es el n煤mero de d铆gitos de la parte entera y 鈥榙鈥 el n煤mero de decimales.
DOUBLE (REAL)
: Almacena n煤mero de coma flotante con precisi贸n doble. Igual que FLOAT, la diferencia es el rango de valores posibles.
BIT (BOOL, BOOLEAN): N煤mero entero con valor 0 o 1.

en la sintaxis existe algun orden en el momento de crear la tabla? es decir por ejemplo: puedo poner primero auto_increment, luego el tipo de dato,comment, not null?

Coincido con el profesor. No guarden binarios en la BD. Es de lo primero que aprend铆 hace a帽os cuando inici茅 a trabajar con bases de datos.

Hay un error y es que DOUBLE permite una mayor precisi贸n en la cantidad de decimales, que FLOAT

  1. Float es para presici贸n simple en un rango de 4 bytes
  2. Double es para un rango de presici贸n de 8 bytes

Adem谩s de eso FLOAT permite una presici贸n de 0 a 23 mientras que DOUBLE la maneja de 24 a 53

y seg煤n la documentaci贸n de MySQL se recomienda usar para los precios el tipo de dato Decimal(m,n) m cantidad de bits en total, n cantidad en decimal.

No se recomienda usar FLOAT o DOUBLE por que no se guardan de una manera tan fiable, y puede que si guardas un 4, te arroje un 3.99999999999

que diferencia hay entre booleano y TINYINT?

Se deber铆a decir que tipo de editor se debe de utilizar para estar en paralelo.

馃摉 Notas de clase

# Creacion de base de datos
CREATE DATABASE platzi_operation;
# Creacion de base de datos usando un condicional
CREATE DATABASE IF NOT EXISTS platzi_operation;
# Mostar Warnings
SHOW warnings;
# Mostar bases de datos
SHOW DATABASES
# Utilizar una base de datos
USE platzi_operation;
# Mostrar tablas
SHOW TABLES


# CREACION DEL PROYECTO [LIBRERIA]

# Buena practica: Usar el nombre de la tabla en plural
CREATE TABLE IF NOT EXISTS books(
  book_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  author ,
  title VARCHAR(100) NOT NULL,
  year INT UNSIGNED NOT NULL DEFAULT 1900,
  language VARCHAR(2) NOT NULL DEFAULT 'es' COMMENT 'ISO 639-1 Lenguage',
  cover_url VARCHAR(500),
  price DOUBLE(6,2) NOT NULL DEFAULT 10.0,
  sellable TINYINT(1) DEFAULT 1,
  copies INT NOT NULL DEFAULT 1,
  description TEXT
);

Para los que no pueden limpiar la pantalla de la consola, intenten el siguiente comando:

System cls; 

Espero les sirva 馃槑馃憢馃徎

CREATE database platzi_operation;
CREATE DATABASE IF NOT EXISTS platzi_operation;
CREATE database platzi_operation;
//manda error distinto al de la anterior sentencia
show databases;
use platzi_operation;
show tables;
CREATE TABLE IF NOT EXISTS books(
	book_id INTEGER PRIMARY AUTO_INCREMENT,
	author ,
	title VARCHAR(255) NOT NULL,
	year INTEGER UNSIGNED NOT NULL DEFAULT 1900,
	language VARCHAR(2) NOT NULL DEFAULT 'es' COMMENT 'ISO 639-1 Language',
	cover_url VARCHAR(500),
	price DOUBLE(6,2) NOT NULL DEFAULT 10.0,
	sellable TINYINT(1) DEFAULT 1,
	copies INTEGER NOT NULL DEFAULT 1,
	description TEXT
)```

Existen distintos tipos de enteros, int, tinyint, bigint
Double es para decimales, float solo almacena hasta 6 y es para calculos precios
  • CREATE DATABASE IF NOT EXISTS [nombre DB];
  • DROP DATABASE IF EXISTS [nombre BD];

Almacenar im谩genes en un abase de datos: En un varchar, la url de donde esta la imagen.

Entiendo que una buena pr谩ctica es el uso de las palabras reservadas debe ser en may煤scula cerrada, cierto?

VARCHAR(n)

Las relaciones nos permite obtener mayor informaxion

COMMENT

yo si limpie mi pantalla en windows, sin usar ( cls, clear o ctrl + L)
.
.
.
utilice un pa帽uelo.

Buenas clases

Y as铆 como por curiosidad , el dato BIGINT es el que se usa o tambi茅n ya fue pasado?

como limpio la consola en windows?

No hay atajos en Windows para limpiar pantalla, pero el scroll down funciona bien 馃槂

CREATE TABLE IF NOT EXISTS books (
book_id INTEGER UNSIGNED PRIMARY AUTO_INCREMENT,
author ,
title VARCHAR(100) NOT NULL,
year INTEGER UNSIGNED NOT NULL DEFAULT 1900,
language VARCHAR(2) NOT NULL DEFAULT 鈥榚s鈥 COMMENT 鈥業SO 639-1鈥,
cover_url VARCHAR(500),
price DOUBLE(6,2) NOT NULL DEFAULT 10.0,
sellable TINYINT(1) DEFAULT 1,
copies INTEGER NOT NULL DEFAULT 1,
description TEXT
);

CREATE TABLE IF NOT EXISTS books ( book_id INTEGER UNSIGNED PRIMARY AUTO_INCREMENT, author , title VARCHAR(100) NOT NULL, year INTEGER UNSIGNED NOT NULL DEFAULT 1900, language VARCHAR(2) NOT NULL DEFAULT 'es' COMMENT 'ISO 629-1 Language', cover_url VARCHAR(500), price DOUBLE(6,2) NOT NULL DEFAULT 10.0, sellable TINYINT(1) DEFAULT 1, copies INTEGER NOT NULL DEFAULT 1, description TEXT );

FLOAT(entero,decimal): se utiliza para c谩lculos m谩s precisos. la parte decimal : puede guardar hasta 6 cifras

Si obtienen 茅ste error: ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement

Se soluciona as铆: SET GLOBAL read_only=0;

dejo por aqui un concepto que menciono es importante conocerlo bandera
BANDERA
En programaci贸n, bandera (flag) se refiere a uno o m谩s bits que son usados para almacenar un valor binario o c贸digo que tiene un significado asignado.Las banderas son generalmente encontradas como miembros de una estructura de datos definida (como una entrada en una base de datos) y el significado del valor contenido en una bandera generalmente ser谩 definido en relaci贸n a la estructura de datos a la que pertenece. En muchos casos, el valor binario de una bandera ser谩 para representar uno de varios posibles estados o categor铆as. En otros casos, los valores binarios podr铆an representar uno o m谩s atributos en un campo de bit, generalmente relacionado a habilidades o permisos, como 鈥減uede ser escrito鈥 o 鈥減uede ser eliminado鈥. De todas maneras hay muchos otros posibles significados que pueden ser asignados a los valores en las banderas. Un uso com煤n de banderas es para marcar o designar estructuras de datos para el procesamiento futuro.
https://soloprogramacionsena.blogspot.com/2009/09/bandera-en-programacion-bandera-flag-se.html

B谩sicamente lo mismo pero para MariaDB

<
 CREATE table books(
 book_id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
 author VARCHAR(255), 
 title VARCHAR(100) NOT NULL, 
 year INTEGER UNSIGNED NOT NULL DEFAULT 1900, 
 lenguage VARCHAR(2) NOT NULL DEFAULT 'es' COMMENT 'ISO 639-1 Lenguage', 
 cover_url VARCHAR(500), 
 price DOUBLE(6, 2) NOT NULL DEFAULT 10.0, 
 sellable  SMALLINT(1) DEFAULT 1, 
 copies INTEGER NOT NULL DEFAULT 1, 
 descripcion TEXT 
 );
>

Les dejo un peque帽o cuadro de mi resumen sobre tipo de dato de texto y num茅rico

Este es un peque帽o cuadro resumen de los distintos Constrains o restricciones que se pueden aplicar en mysql

  • create table if not exists mytable, crea una nueva tabla
  • Unsigned, para solo usar los n煤meros positivos.
  • autoincrement, en cada inserci贸n del registro se incrementa en 1.
  • default, indicar valores por defecto.
  • comment, agregar comentarios a la columna.

Colegas, el ultimo comentarios es muy importante, Tanto para el nombre de la tablas o de los campos, NO UTILICEN PALABRAS RESERVADAS tampoco pongan caracteres extra帽os, estuve modificando un paquete que en tabla tenia el campo P贸liza con asent贸 en la o, cada que promov铆amos el cambio era una pesadilla explicarle al DBA por que le tronaba en la ejecuci贸n del Script y que tenia que ejecutar en otro lado que no fuer la consola (Un ID Toad poe ejemplo ).
As铆 que eviten cualquier problema y solo utilicen letras y _ para separar las palabras, nada de palabras reservadas o caracteres especiales.

Est谩 clase me recordo al meme de freddy el de 鈥渆s imposible鈥 en el minuto 4:27

B

Perfecto. Muy buena explicaci贸n.

Por si a alguien no le funciona

CREATE TABLE `books` (
  `book_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `author_id` int(10) unsigned DEFAULT NULL,
  `title` varchar(100) NOT NULL,
  `year` int(11) NOT NULL DEFAULT '1900',
  `language` varchar(2) NOT NULL COMMENT 'ISO 639-1 Language code (2 chars)',
  `cover_url` varchar(500) DEFAULT NULL,
  `price` double(6,2) DEFAULT NULL,
  `sellable` tinyint(1) NOT NULL DEFAULT '0',
  `copies` int(11) NOT NULL DEFAULT '1',
  `description` text,
  PRIMARY KEY (`book_id`),
  UNIQUE KEY `book_language` (`title`,`language`)
)

Encontre esta informacion en una pagina de bachiller espero sea util:
Clave primaria (Primary Key). Permite declarar un atributo o un conjunto de atributos como clave primaria de una relaci贸n, por lo que sus valores no se podr谩n repetir ni se admitir谩n los nulos (o valores 鈥渁usentes鈥). La obligatoriedad de la clave primaria es una restricci贸n inherente del modelo relacional; sin embargo, la declaraci贸n de un atributo como clave primaria de una relaci贸n es una restricci贸n sem谩ntica que responde a la necesidad del usuario de imponer que los valores del conjunto de atributos que constituyen la clave primaria no se repitan en la relaci贸n ni tampoco tomen valores nulos.
Unicidad (Unique). Mediante la cual se indica que los valores de un conjunto de atributos (uno o m谩s) no pueden repetirse en una relaci贸n. Esta restricci贸n permite la definici贸n de claves alternativas.
Obligatoriedad (Not Null). Se indica que para el conjunto de atributos (uno o m谩s) no se admiten valores nulos.
Integridad referencial (Foreign Key). Si una relaci贸n R2 (relaci贸n que referencia) tiene un descriptor que es una clave candidata de la relaci贸n R1 (relaci贸n referenciada), todo valor de dicho descriptor debe concordar con un valor de la clave candidata referenciada de R1 o bien ser nulo. El descriptor es, por tanto, una clave ajena de la relaci贸n R2. Las relaciones R1 y R2 no son necesariamente distintas.

muy bueno

EXCELENTE CURSO

Cardinalidad: El numero de elementos de un conjunto, en particularidad de esta tabla.

Interesante lo de comment, y lo es, muchas veces me ah tocado revisar base de datos de terceros y a veces uno no sabe a que es lo que hace referencia tal campo. Hasta a m铆 se me ha pasado por alto los comentarios 馃槃

Atributo que permiten los campos de tipo num茅rico es 鈥渦nsigned鈥.
El atributo 鈥渦nsigned鈥 (sin signo) permite s贸lo valores positivos.
Si necesitamos almacenar edades, por ejemplo, nunca guardaremos valores negativos,
entonces ser铆a adecuado definir un campo 鈥渆dad鈥 de tipo entero sin signo

El tipo de datos bit o boolean sirve para almacenar valores booleanos

Listo creada la base y la tabla.

Mencionaban en la clase que si creas una tabla y luego en un futuro cambias el tipo de dato de alguna columna, 鈥渆l overhead de nuestros programas se va al diablo鈥
驴Es esto lo que se conoce como casteo? 驴Por qu茅 no es recomendable y de que manera afecta a nuestros programas o consultas?

Hola, no me deja crear la tabla con la sentencia UNSIGNED , sera la version de MySQL?

Se puede limpiar pantalla en Windows?

Alguien sabe cu谩l es el editor de texto que usa el profesor?

SHOW warnings; muestra el warning

CARDINALIDAD: numero de elementos de un conjunto.

En la parte de author, el maestro dice que no le pondr谩 un nombre sino un valor num茅rico. Esto hace referencia al concepto de 鈥渓lave for谩nea鈥 que seguramente veremos en clases posteriores.

Cardinalidad
La cardinalidad son simplemente las relaciones que pueden existir entre las tablas de una base de datos.

  • uno a uno

  • uno a muchos

  • muchos a a uno

Lenguaje DDL
Lenguaje de definici贸n de datos:

  • Create: crear objectos tales como vistas, tablas, store procedures e indices.

  • Drop: Utilizado para eliminar objectos como vistas, store procedures, tablas.

  • Alter: Empleado para editar tablas agregando campos o cambiando la definici贸n de los mismos.
    Una buena practica es que el nombre de la tabla debe ser un sustativo en plurarl en ingles.

Tipos de Datos:

  1. Texto:

    • CHAR -> No es din谩mico
    • VARCHAR -> Din谩mico,
    • TEXT-> Para caracteres m谩s grandes
  2. Num茅ricos:

    • INTEGER
  • BIGINT
  • SMALLINT
  • DECIMAL
  • NUMERIC

Tengo un profesor que trabaja con ingenier铆a de datos, tiene mucha experiencia y el recomienda nombrar las tablas con el singular.

La verdad de se me hace que es de gustos o de que favorezca la legibilidad del c贸digo seg煤n la manera en que tu vayas a programar las interacciones con la bd

En un proyecto que hice yo guarde las imagenes en una BD de Objetos. Existen varios:

Amazon S3
DigitalOcean Spaces

y los otros proveedores cloud ofrecen soluciones.

La ventaja de un Object Storage es la integraci贸n con el CDN.

Tipos de datos en una base de datos MySQL

  • Num茅ricos
  • Fecha
  • String

CREATE database IF NOT EXISTS platzi_operation;
USE platzi_operation;

CREATE table IF NOT EXISTS books (
book_id INTEGER UNSIGNED PRIMARY AUTO_INCREMENT,
author,
title VARCHAR(100) NOT NULL,
year INTEGER UNSIGNED NOT NULL DEFAULT 1900,
language VARCHAR(2) NOT NULL DEFAULT 鈥榚s鈥 COMMENT 鈥業SO 639-1 Language鈥,
cover_url VARCHAR(500),
price DOUBLE(6,2) NOT NULL DEFAULT 10.0,
sellable TINYINT(1) DEFAULT 1,
copies INTEGER NOT NULL DEFAULT 1,
description TEXT
);

Hola a todos!
Porque mi consola de MySQL cuando le doy el comando CREATE no me dice ok, solo aparace una flecha

Your MySQL connection id is 2
Server version: 5.7.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
mysql>
mysql> CREATE database platzi_operation:
    ->
    ->```

Aconsejo usar Notepad ++ (el del camale贸n) que se puede descargar gratis. Ah铆 en la barra horizontal superior seleccionar 鈥淟anguage鈥 luego ah铆 鈥淪鈥 y por 煤ltimo 鈥淪QL鈥. Eso les ayudar谩 a trabajar en formato SQL.

BUENA PR脕CTICA: Se recomienda colocar en el nombre de las columnas, el nombre de la tabla, para evitar ambig眉edades de nombres de columnas y evitar utilizar palabras reservadas del sistema gestor de bases de datos. Por ejemplo: la columna year, donde year puede ser una funci贸n de mysql, entonces la dejar铆amos como year_book.

NOT NULL

驴Cual es el editor de texto que esta usando el profesor?

DOUBLE(entero,decimal) Ejemplo: DOUBLE (6,2) estamos diciendo que es una cifra de 6 d铆gitos, y esto se entiende cuales 4 son valor entero y 2 son para decimal

- Tipos de dato:

**Texto: **
CHAR(n), VARCHAR(n), TEXT

El tipo de dato CHAR(N), aloja una cantidad peque帽a de datos y este lo hacer reservando en memoria RAM un conjunto de bloques que no crece de manera din谩mica 8 caracteres, en cambio VARCHAR(n), acoge una cantidad de cadena de caracteres de m谩ximo de 255 caracteres y este lo hace a trav茅s de un proceso en memoria ram m谩s din谩mico. el tipo de dato TEXT se utiliza para guardar una cantidad mayor a 255 caracteres.

N煤meros:
INTEGER, BIGINT, SMALLINT, DECIMAL(n,s), NUMERIC(n,s)

El tipo de dato INTEGER, este representa a los n煤meros enteros, tanto BIGINT como SMALLINT son subtipos de datos de integer el primero se utiliza es cuando se va a guardar un n煤mero muy grande y el segundo cuando de va a guardar n煤meros menor o igual que 100.
El tipo de dato DECIMAL(n,s), NUMERIC(n,s), permiten declarar n煤mero m谩s complejos o precisos, y esto reciben dos par谩metros el primer par谩metro es la parte entera del n煤mero y el segundo la parte decimal.

Fecha/hora:
DATE, TIME, DATETIME, TIMESTAMP

El tipo de dato DATE, puedes guardar a帽o y mes.
El tipo de dato TIME, puedes guardar la hora.
El tipo de dato DATETIME, TIMESTAMP puedes guardar tanto el d铆a como la hora incluso hasta milisegundos.

L贸gicos:
BOOLEAN

El tipo de dato BOOLEAN, puede guardar s贸lo valores binarios es decir : TRUE o FALSE tambi茅n 1 o 0.

Muy buena la clase!!
Para los que est谩n un poco perdidos o tiene ciertas dudas, les recomiendo el curso de fundamentos de bases de datos, de verdad que haberlo hecho antes que este me ha ayudado a tener claridad

Tengo una duda, cual es la diferencia de Create database y Create schema? porque para crear desde un inicio pens茅 que teniamos que crear un schema鈥

Cual es la diferencia de los comandos con may煤sculas y min煤sculas?

Hasta ahora muy bien y claro el curso. Estoy aprendiendo cosas nuevas e interesantes. Pero considerando los fundamentos de BD, creo que el instructor debi贸 comenzar a crear las tablas sin llaves for谩neas, para as铆 no dejar pendiente el campo author. Peque帽a observaci贸n. De ah铆 en m谩s, todo perfecto.

Si quieren un editor de SQL atractivo y facil de usar les recomiendo mucho Arctype.
https://arctype.com/

.
Les ayuda con autocompletado y pueden ver las tablas graficamente y demas. Es un editor hecho con tecnologias web creo, solo deben hacer la conexion con su base de datos ya creada y comenzar a trabajar.

Si se preguntan por el editor pueden usar (notepad++) en windows y crear un archivo con .sql para que el editor les colore automaticamente el codigo.

Hola! Si no les funciona el CREATE database platzi_operation; intenten ponerlo asi: CREATE Database platzi_operation;

UNSIGNED = Le dice a SQL que el dato que va a almacenar no debe contener signos, por ello reduce en bytes el tama帽o del dato ya que no guarda la informaci贸n de si este es positivo (+) o negativo (-) , y siempre ser谩n n煤meros positivos sin necesidad de un signo.

Excelente clase. Entend铆 much铆simo y aclare conceptos que vengo estudiando. Excelente explicaci贸n.

Tips de buenas pr谩cticas en SQL:

  1. El nombre de la tabla debe ser el plural del objeto que se est谩 creando.
  2. Usar ingles en todo.
  3. Los comandos siempre deben terminar en punto y coma (馃槈
  4. Lo que necesita toda tabla es un ID, es una manera universal de identificaci贸n.
  5. El id de una tabla se hace auto-incremental, para que cuando se elimine una tupla, la siguiente a ingresar tenga el n煤mero de la tupla anterior y de esta manera siga una secuencia.
  6. En las BD Relacionales es importante crear un campo num茅rico que sirva para relacionar, conectar una tabla con otra para realizar las consultas.
  7. No es recomendable guardar im谩genes en las BD, una buena pr谩ctica seria guardar la URL de la imagen.

Comienza la creaci贸n de la primer tabla.

Cardinalidad, se entiende como el n煤mero de elementos de un conjunto / tabla.

Ya sab铆a algo de MySql, pero este profe est谩 en otro nivel, mucha experiencia

recomendaci贸n: no guardar imagenes en DB, una alternativa puede ser link de acceso a imagen

Bases de datos me parec铆a un tema aburrido pero ahora que estoy aprendiendo me parece muy interesante. 馃挌

Excelente clase鈥

Comment: Solo es visible al revisar la estructura de la DB.
TINYINT: Tipo de dato num茅rico m谩s peque帽o en SQL
.Las im谩genes no deben ser guardas en la base de datos como binarios. (Guardarlas como URL)

CREATE DATABASE IF NOT EXISTS platzi_operation;

USE platzi_operation;

CREATE TABLE IF NOT EXISTS books (
	
	book_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, 

#El n煤mero m谩s alto del id autoincrementado no necesariamente es la cantidad de datos, ya que si se borra un registro, el siguiente seguir谩 como si el eliminado a煤n existiera.
#"UNSIGNED" indica que es solo positivo, por ello, no se guarda el signo en memoria.
	
	author, #Se relacionar谩 con otra tabla.

	title VARCHAR(100) NOT NULL,

	year INT UNSIGNED NOT NULL DEFAULT 1900,

 #"DEFAULT" si no se otorga un dato, MySQL le asigna el valor por defecto.
	
	language VARCHAR(2) NOT NULL DEFAUL 'ES' COMMENT 'ISO 639-1 Language',
   
#Nadie va el comentario m谩s que quien vea la estructura de la base de datos. En este caso, se usa la ISO 639 primera versi贸n.
    
	cover_url VARCHAR(500),
    
#Se recomienda, en lugar de almacenar una imagen, el URL de donde la imagen est谩 almacenada.
    
	price DOUBLE(6,2) NOT NULL DEFAULT 10.0,

#"Double" almacena el n煤mero y la cantidad de decimales, por su parte, "FLOAT" almacena hasta 6 decimales y es 煤til para c谩lculos precisos.
#En este caso, "6" indica la cantidad de espacios num茅ricos que almacenar谩 ese campo, "2" ser谩n los decimales.
	
	sellable TINYINT(1) DEFAULT 1,
    
#Es una "bandera" (True or False), en este caso "1" indica que se puede vender, en caso contrario, "0".
    
	copies INT NOT NULL DEFAULT 1,
    
	description TEXT
    );```

Supongo que cuando habla de una tupla se refiere a una coordenada del tipo (Fila, Columna) o (Columna, Fila)?

como se llama el editor de textos que se esta utilizando en el video,

atenta

year INTEGER UNSIGNED NOT NULL DEFAULT 1900

Al tener un default el not null no esta de mas? ya que si no agrego algo igual tomar谩 como valor 1900

Siempre me ha costado diferenciar float de double. Creo que me quedo mas claro con esta clase. en resumen:

Double: La precisi贸n decimal es de pocos (1 o 2 decimales)
Float: La precisi贸n decimal es mayor para c谩lculos mas precisos.

En caso de que necesiten iniciar el auto_increment en alg煤n valor espec铆fico solamente hacen:
auto_increment = 1000000000

Por ejemplo: en tu pa铆s el DNI, CC, ID, o como se llame debe tener la misma cantidad de d铆gitos para todos los mayores de edad, pues no puedes iniciar en 0, as铆 que iniciar con 1000000000 y vas subiendo en 1 autom谩ticamente.

Alguno sabe el comando para limpiar la consola en windows?