一、表创建
1、MySQL创建表的语法结构
CREATE TABLE <表名>
{
字段名1 数据类型 [字段级别约束] [默认值],
字段名2 数据类型 [字段级别约束] [默认值],
......[表级别约束]
};
我们通过定义表名、表中的字段、表的属性等,把一张表创建出来,运行这个 SQL 语句,表 demo.importhead 就按照我们的要求被创建出来了。
CREATE TABLE demo.importhead
(
listnumber INT,
supplierid INT,
stocknumber INT, --我们在字段importype定义为INT类型的后面,按照MySQL创建表的语法,加了默认值1。
importtype INT DEFAULT 1,
quantity DECIMAL(10,3),
importvalue DECIMAL(10,2),
recorder INT,recordingdate DATETIME
);
2、插入数据到创建的表中
INSERT INTO demo.importhead
(
listnumber,
supplierid,
stocknumber,-- 这里我们没有插入字段importtype的值
quantity,
importvalue,
recorder,
recordingdate
)
VALUES
(
3456,1,1,10,100,1,'2020-12-10'
);
3、查询刚才插入的数据
mysql> select * from demo.importhead;
+------------+------------+-------------+------------+----------+-------------+----------+---------------------+
| listnumber | supplierid | stocknumber | importtype | quantity | importvalue | recorder | recordingdate |
+------------+------------+-------------+------------+----------+-------------+----------+---------------------+
| 1234 | 1 | 1 | 1 | 10.000 | 100.00 | 1 | 2020-12-10 00:00:00 |
| 2345 | 1 | 1 | 2 | 20.000 | 2000.00 | 1 | 2020-12-10 00:00:00 |
| 3456 | 1 | 1 | 1 | 20.000 | 2000.00 | 1 | 2020-12-10 00:00:00 |
+------------+------------+-------------+------------+----------+-------------+----------+---------------------+
3 rows in set (0.00 sec)
二、表结构约束
除了以上的默认约束,还有主键约束、外键约束、非空约束、唯一性约束和自增约束
1、非空约束
非空约束表示字段值不能为空,如果创建表的时候,指明某个字段非空,那么添加数据的时候,这个字段必须有值,否则系统就会提示错误。
2、唯一性约束
唯一性约束表示这个字段的值不能重复,否则系统会提示错误,跟主键约束相比,唯一性约束要更加弱一些。
3、在一个表中,我们可以指定多个字段满足唯一性约束,而主键约束则只能有一个,这也是 MySQL 系统决定的。另外,满足主键约束的字段,自动满足非空约束,但是满足唯一性约束的字段,则可以是空值。
三、表结构复制或更改
1、复制表结构
CREATE TABLE demo.importheadhistLIKE demo.importhead;
2、添加字段
ALTER TABLE demo.importheadhist ADD confirmer INT; -- 添加一个字段confirmer,类型INT
ALTER TABLE demo.importheadhist ADD confirmdate DATETIME; -- 添加一个字段confirmdate,类型是DATETIME
--在supplierid字段后添加一列suppliername
ALTER TABLE demo.importheadhist ADD suppliername TEXT AFTER supplierid;
3、更新字段
--把字段名称“quantity”改成“importquantity”,并且把字段类型改为 DOUBLE
ALTER TABLE demo.importheadhist CHANGE quantity importquantity DOUBLE;
--如果不想改变字段名称,只想改变字段类型,例如,把字段“importquantity”类型改成 DECIMAL(10,3)
ALTER TABLE demo.importheadhist MODIFY importquantity DECIMAL(10,3);