百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql表定义语法细致介绍
分享文章到:

mysql表定义语法细致介绍

发布时间:09/01 来源:未知 浏览: 关键词:

第一我们都知道只要成功创立数据库后,才能创立数据表,数据表是字段的汇合,在表中数据按行和列的格局储备。

创立表

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表定义语法具体介绍的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板