English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderá cómo crear tablas dentro de una base de datos utilizando SQL.
En el capítulo anterior, aprendimos cómo crear una base de datos en el servidor de bases de datos. Ahora es el momento de crear algunas tablas en la base de datos, que de hecho almacenarán datos. Las tablas de bases de datos solo organizan información en filas y columnas.
La instrucción SQL CREATE TABLE se utiliza para crear tablas.
La sintaxis básica para crear una tabla se puede presentar de la siguiente manera:
CREATE TABLE table_name (columna1_name data_type restricciones, columna2_name data_type restricciones,.... );
Para facilitar la comprensión de esta sintaxis, vamos ademostraciónPara crear una tabla en la base de datos, ingrese la siguiente instrucción en la herramienta de línea de comandos de MySQL y presione Enter:
-- sintaxis del MySQL CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE ); -- sintaxis del SQL Server CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY IDENTITY(1,1, name VARCHAR(50) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE );
la siguiente instrucción crea una tabla llamadapersonde la tabla, que tieneid,nombre,birth_date和phone四列。注意,每个列名后都有一个数据类型声明;此声明指定列将存储什么类型的数据,整数,字符串,日期等。
某些数据类型可以使用length参数声明,该参数指示可以在列中存储多少个字符。例如,VARCHAR(50)最多可容纳50个字符。
注意:列的数据类型可能会因数据库系统而异。例如,MySQL和SQL Server支持INT整数值的数据类型,而Oracle数据库支持NUMBER数据类型。
下表总结了MySQL支持的最常用的数据类型。
数据类型 | 描述 |
---|---|
INT | 存储介于-2147483648至2147483647之间的数值 |
DECIMAL | 以精确的精度存储十进制值。 |
CHAR | 存储最大长度为255个字符的定长字符串。 |
VARCHAR | 存储可变长度的字符串,最大长度为65,535个字符。 |
TEXT | 存储最大大小为65,535个字符的字符串。 |
DATE | 以YYYY-MM-DD格式存储日期值。 |
DATETIME | 以YYYY-MM-DD HH:MM:SS格式存储组合的日期/时间值。 |
TIMESTAMP | 存储时间戳值。TIMESTAMP值存储为自Unix纪元('1970-01-01 00:00:01自UTC)以来的秒数。 |
请查看参考部分SQL DB数据类型,以获取有关流行的RDBMS(如MySQL,SQL Server等)中可用的所有数据类型的详细信息。
在前面的语句中为表列设置了一些其他约束(也称为修饰符)。约束定义关于列中允许的值的规则。
NOT NULL约束确保该字段不能接受一个NULL值。
PRIMARY KEY约束标记对应的字段作为表的主键。
AUTO_INCREMENT属性是标准SQL的MySQL扩展,它告诉MySQL如果未指定该值,则通过将前一个值增加1来自动为该字段分配一个值。仅适用于数字字段。
UNIQUE约束确保一列的每一行必须具有唯一值。
在下一章中,我们将学习有关SQL约束的更多信息。
注意: Microsoft SQL Server使用该IDENTITY属性来执行自动增量功能。默认值为IDENTITY(1,1),即种子或起始值为1,增量值为1。
Consejo:您可以执行命令以查看MySQL和Oracle数据库中任何表的列信息或任何表的结构,而在SQL Server中(将table_name替换为实际的表名)。DESC table_name;EXEC sp_columns table_name;
Si intenta crear una tabla que ya existe en la base de datos, recibirá un mensaje de error. Para evitar esto, puede usar la cláusula opcional IF NOT EXISTS en MySQL, como se muestra a continuación:
CREATE TABLE IF NOT EXISTS persons ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE );
Consejo:Si desea ver la lista de tablas en la base de datos seleccionada actual, puede ejecutar la sentencia SHOW TABLES; en la línea de comandos de MySQL.