CREATE TABLE
的做用是建立表。很少说,先建立个简单的学生表。code
CREATE TABLE students ( id int, name char(16) NOT NULL, primary key (id) );
这里没写 ENGINE=InnoDB
,由于这是新 MariaDB 的默认值。索引
那么进入正题,CREATE TABLE
的语法以下。入门
CREATE TABLE [表名] ( [列名] [类型] [约束和其余属性], [列名] [类型] [约束和其余属性], .... [其余表配置] );
很容易看出,括号里面写的是表的相关配置,包括列定义,主键定义,索引定义等等。table
在建立表时能够指定默认值,有默认值的列在插入时能够不填。class
语法以下。配置
CREATE TABLE [表] ( [列] [类型] DEFAULT [值], );
便可为一个列设定默认值。语法
非空约束很是常见。好比说,咱们要记录学生信息,包括学号、成绩、姓名,那么学生姓名能不能留空呢?显然不行,由于没有姓名的记录让谁看都是一脸懵逼,这破坏了一条记录的完整性。引用
建立非空约束的语法以下。im
CREATE TABLE [表] ( [列] [类型] NOT NULL, );
这就建立了非空约束。非空约束下,插入数据时不能不填写这个列。命名
若是须要要求可空,那么这样作。但通常不用特意写,不少DBMS
的列默认建立就是可空的。
CREATE TABLE [表] ( [列] [类型] NULL, );
ALTER TABLE
能够修改表定义,添加删除列,修改约束,等等。
举例,在一个只有学号和姓名两个列的学生表加入一个新的成绩列,代码以下。
ALTER TABLE students ADD score int;
语法基本是这样。
ALTER TABLE [表名] ADD [列名] [类型] [其余属性和约束];
后面列的定义写法基本和CREATE TABLE
时差很少。
和添加列差很少,但删除的关键字不是DELETE
,而是DROP
。
ALTER TABLE [表名] DROP [列名];
外键约束其实保证的是引用完整性,外键约束的列的值必须引用了一个有效的行,或者是NULL
。
举例来讲,咱们先有两个表。
学生表
id | name | class |
---|---|---|
1 | student 1 | 1 |
2 | student 2 | 2 |
3 | student 3 | 3 |
班级表
id | level |
---|---|
1 | Lv5 |
2 | Lv4 |
3 | Lv3 |
为了让学生表的class
关联到班级表的id
,咱们要这样作。
ALTER TABLE students ADD CONSTRAINT fk_students_classes FOREIGN KEY (class) REFERENCES classes (id);
语法基本是这样子的
ALTER TABLE [保存外键的表] ADD CONSTRAINT [外键约束的名字,通常fk开头] FOREIGN KEY ([外键名]) REFERENCES [引用的表名] ([引用的键名])
比较复杂。
那么终于到了期待已久的删库跑路阶段。
删除表的语法很是简单,那么从一开始活到如今的这所学校终于干不下去了,校长决定遣散学生。
DROP TABLE students;
人走光了。
校长决定把学校改为夜总会,因而他写道:
RENAME TABLE school TO night_club;
要是换行有这么容易就行了……(你敢说回车看看)