MySQL 知识量:16 - 40 - 165
使用SQL语句创建一个表时应当使用create table语句,create table语句的主要语法是:
create table后跟新建表的名字。
表名后面是表列的具体定义,用括号括起来,每个表列用逗号分隔。
示例:创建学生表的SQL语句。
create table student ( id int(11) not null auto_increment, name varchar(255) not null, age int(11) not null, sex varchar(255) not null, primary key(id) ) engine=InnoDB
以上语句中,每个列定义由列名、列的数据类型、是否可以为空组成,其中,id列是自增的。primary key规定了主键是id列。engine规定了表的引擎是InnoDB。
NULL值就是没有值或缺值。如果定义一个列可以是NULL,就代表允许在数据插入时不给出该列的值。如果定义的是不允许为NULL,在插入数据时就必须给出该列的值。
在表定义中:
NULL表示可以为空。
NOT NULL表示不可为空。
NULL与空字符串完全不同,NULL是没有值,空字符串是'',空字符串属于NOT NULL的范围。
主键是每个行记录的唯一标示。如果一个表的主键是单个列,那么该列的值必须唯一;如果表的主键是多个列,那么这些列的组合值必须唯一。
在表定义中,使用primary key(列名)来规定主键,如果是多列主键,则为primary key(列名,列名,列名...)的形式。
因为主键必须唯一,因此主键不能是NULL。
可以在定义表时指定列的默认值,当插入数据而没有给出该列的值时,MySQL就会使用定义的默认值进行填充。
默认值使用列定义中的default关键字指定。
create table student ( id int(11) not null auto_increment, name varchar(255) not null, age int(11) not null default 10, sex varchar(255) not null, primary key(id) ) engine=InnoDB
以上语句中,定义age列时,使用default 10指定了其默认值为10。如果在接下来插入数据时,没有给出age的值,那么age的值就会是10。
需要注意的是:MySQL不允许使用函数作为默认值。
每种DBMS都有一个具体管理数据的内部引擎。在使用select、create table等语句时,由引擎具体负责表的查询和创建。MySQL有多种引擎可供选择,主要的有以下几种:
InnoDB 可靠的事务处理引擎,例如外键功能的支持,但在MySQL5.6版本前,不支持全文本搜索。
MyISAM 性能极高的引擎,支持全文本搜索,但不支持事务处理。
MEMORY 与MyISAM类似,但由于数据存储在内存中,速度更快,适合用于临时表。
选择什么样的引擎取决于你的用途,但需要注意的是,外键是不能跨引擎的,也就是说,使用一种引擎的表不能引用使用不同类型引擎的表的外键。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6