mysql表定义语法细致介绍
第一我们都知道只要成功创立数据库后,才能创立数据表,数据表是字段的汇合,在表中数据按行和列的格局储备。
创立表
MySQL 使用 CREATE TABLE 创立表。其中有多个选中,主要由表创立定义(create definition)、表选项定义(table options) 和区分选项(partition options)等内容构成。
表创立定义
由表列的名字、列的定义集大概的一个空值声明、一个完全性束缚或表索引项组成,表索引项主要定义表的索引、主键、外键等。
(在线学习视频教程引荐:mysql视频教程)
语法构造
CREATE[TEMPORARY]TABLE tbl_name ( 字段名|数据类型[列级完全性束缚前提][默许值] [,字段名2 数据类型[列级完全性束缚前提][默许值]] [,....] [,表级完全性束缚前提] )[ENGINE=引擎类型]
Example:
创建一个客户信息
mysql> USE mysql_test Database changed mysql> CRATE TABLE customers ->( -> cust_id INT NOT NULL AUTO_INCREMENT, -> cust_name CHAR(50) NOT NULL, -> cust_sex CHAR(1) NOT NULL DEFAULT 0, -> cust_address CHAR(50) NULL -> cust_contact CHAR(50) NULL -> PRIMARY KEY(CUST_ID) ->) Query OK, 0 rows affected(0.11 sec)
暂时表与耐久表
TEMPORARY:表示暂时表,假如不选用则位耐久表。
耐久表不断存在,多个会员或利用程序可同时使用耐久表,假如只需暂时存置数据可增加 TEMPORARY 关键字,暂时表只能对创立它的会员可见,断开数据库连接时,表会主动清除。
数据类型
数据类型指系统中所同意的数据的类型。每列都应有恰当的数据类型,来限制或同意该列的数据。 建表时必需为每列指定准确的数据类型及数据长度 (CHAR(50))
MySQL 主要数据类型:
数值类型:整型 int、浮点 double、布尔 bool
日期和时间类型:日期型、时间戳 timestamp、时间型 time
字符串类型:定长字符类型char、可变长字符类型varchrar
空间数据类型:单个几何类型 GEOMETRY等
关键字 AUTO_INCREMENT
AUTO_INCREMENT: 表中数据类型为整型的列设定自增属性 (++i),从当前指或 1 开端,表中只能有一个 AUTO_INCREMENT。
当一个表列被指定为 AUTO_INCREMENT 后,其值可被覆盖,即可在表数据插入语句中为该列指定一个值(必需独一),则该值将更换系统主动生成的值,后续增量基于该插入的值
指定默许值
DEFAULT:用于指定MySQL在未给值的状况下默许的值(DEFAULT 0)
假如未指定默许值,则主动为其分配一个值,如若该列可取值NULL,则默许NULL,若定义 NOT NULL,则默许取决于该列的类型:
一个没有声明 AUTO_INCREMENT 列 为数字类型,默许 0
一个 AUTO_INCREMENT 列 默许为次序中的下一个值
关于除 TIMESTAMP 之外的日期和时间类型,默许为该类型恰当的'零'值
关于表中第一个 TIMESTAMP 列,默许值为当前日期和时间
NULL值
NULL:没有值或缺值,同意NULL的列,插入行时可以不给该列的值;不同意NULL值的列,则该列必需有数据
NULL 和 ''是不合错误等的 NOT NULL 列中同意'' 不同意 NULL
主键
PRIMARY KEY :指定主键,主键必需独一且不克不及为NULL, 假如是单列,值必需独一,假如是组合列,则其组合的值必需独一
更新表
通过使用 ALTER TABLE 来修改数据库
ADD[COLUMN]:新增表列,可增多列使用逗号分隔即可
Example:
mysql> ALTER TABLE mysqle_test.customers -> ADD COLUMN cust_city char(10) NOT NULL DEFAULT'ShenZhen' AFTER cust_sex; Query OK,0 rows affected(0.61 sec) Records:0 Duplicates:0 Warning:0
AFTER:将新增的列增加到cut_sexl 列之后
FIRST:将新增的列增加到表的第一列
若使用上述关键字则将新增的列增加至表最后
相似的 可以使用 ADDPRIMARY KEY 、ADDFOREIGN KEY 、ADD INDEX 增加对应的 主键、外键、索引
CHANGE[COLUMN]: 修改表中列的名称或数据类型,可修改多列使用逗号分隔即可
mysql> ALTER TABLE mysqle_test.customers -> CHANGE COLUMN cust_sex sex char(1) NULL DEFAULT 'M' Query OK,0 rows affected(0.66 sec) Records:0 Duplicates:0 Warning:0
假如将数据类型改换,大概会丧失该列原有的数据,假如视图改动的数据类型于原有的数据类型不兼容,则SQL命令不会施行,且抛出错误。
再兼容的状况下,该列的数据大概会被截断,如:一列的数据类型为 varchart(10),改为char(1),则该列中的数据'ShenZhen'会变为'S'
ALTER [COLUMN]: 修改或删除指定列的默许值
mysql> ALTER TABLE mysqle_test.customers -> ALTER COLUMN cust_city SET DEFAULT 'ShangHai' Query OK,0 rows affected(0.36 sec) Records:0 Duplicates:0 Warning:0
MODIFY [COLUMN]: 修改指定列的数据类型,通过 'FIRST' 或 'AFTER' 修改列的位置
mysql> ALTER TABLE mysqle_test.customers -> MODIFY COLUMN cust_name char(30) FIRST Query OK,0 rows affected(0.20 sec) Records:0 Duplicates:0 Warning:0
DROP [COLUMN]: 删除列,该列所有数据一并删除
mysql> ALTER TABLE mysqle_test.customers -> DROP COLUMN cust_city Query OK,0 rows affected(0.42 sec) Records:0 Duplicates:0 Warning:0
一样 可使用 DROP PRIMARY KEY 、DROP FOREIGN KEY、DROP INDEX 删除对应的主键、外键、索引
RENAME[TO]:表重命名
mysql> ALTER TABLE mysqle_test.customers -> RENAME TOQuery OK,0 rows affected(0.42 sec)
重命名表
除了 ALTER TABLE 中的 RENAME TO 修改表名,还可通过 RENAME TABLE 来修改单张和多张表(以逗号分隔)
mysql> RENAME TABLE mysql_test.back.customers TO mysqle_test.customers
删除表
DROP[TEMPORARY]TABLE[IF EXISTS]删除一个已存在的表,可以删除多张表,前提操纵人必需有权限,但是操纵人在该张表上的权限不会被删除
查看表
SHOW [FULL] TABLES [{FROM|IN}db_name] [LIKE'pattern'|WHERE expr]: 显示指定数据库中所有表名
Example:
mysql> USE mysql_testDatabase changedmysql> SHOW TABLES: Tables_in_mysql_test customers 1 row in set <0.01 sec>
SHOW [FULL] COLUMNS {FROM|IN}tb_name[{FROM|IN}db_name] 或 {DESCRIBE|DESC} tbl_name[col_name|wild]: 显示指定数据库表构造。
MySQL 支撑使用 DESCRIBE 代替 SHOW COLUMNS FROM 来查看表构造
Example:
mysql> DESC mysql_test.custormes Field Type Null key Default Extra cust_id int<11> NO PRI NULL auto_increment cust_name char<50> NO Null cust_sex int<1> NO 0 3 row in set <1.56 sec>
相关文章教程引荐:mysql教程
以上就是mysql表定义语法具体介绍的具体内容,更多请关注百分百源码网其它相关文章!