1.创建表
创建表可以使用CREATE TABLE语句
例子,创建一个test表
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT, -- 自增
`category` varchar(20) NOT NULL,
`addTime` datetime(6) NOT NULL,
PRIMARY KEY (`id`) # 主键
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
创建一个test表,包括id、category、addTime字段,int,varchar表示数据类型,NOT NULL表示非空。
1.1 使用NULL值
NULL值就是没有值或缺省,允许NULL值的列允许在插入行时不给出该列的值。不允许NULL值的列不接受没有列值的行,换句话说,在插入或更新行时,该列必须有值。
每个表要么是NULL列,要么是NOT NULL列。
下面例子是一个创建混合了NULL和NOT NULL列的表
CREATE TABLE Vendors
(
vend_id CHAR(10) NOT NULL,
vend_name CHAR(50) NOT NULL,
vend_address CHAR(50) NOT NULL,
vend_city CHAR(50) ,
vend_state CHAR(50) ,
)
NULL为默认值,如果不指定NOT NULL,就认为指定的是NULL
注意:不要把NULL值与空字符串相混淆。NULL值就是没有值,不是空字符串。如果指定'',这在NOT NULL是允许的。
1.2 指定默认值
SQL允许指定默认值,在插入行时如果不给出值,数据库自动采用默认值。默认值在CREATE TABLE语句中用关键字DEFAULT指定。
CREATE TABLE Order
(
order_num INTEGER NOT NULL,
order_item INTEGER NOT NULL,
quantity INTEGER NOT NULL DEFAULT 1,
)
在指定系统时间时,各个数据库使用的语句都不相同,下表为各数据库使用系统时间的方式
DBMS | 函数/变量 |
Access | NOW() |
DB2 | CURRENT_DATE |
MySQL | CURRENT_DATE() |
Oracle | SYSDATE |
PostgreSQL | CURRENT_DATE |
SQL Server | GETDATE() |
SQLite | date('now') |
2.更新表
更新表,使用ALTER TABLE语句。下面是使用ALTER TABLE时需要考虑的问题:
- 理想情况下,不要在表中包含数据时对其进行更新。应在表设计过程中充分考虑未来可能的需求,避免今后对表的结构做大的改动。
- 所有数据库都允许给现有的表增加列,不过对所增加列的数据类型有所限制。
- 许多数据库不允许删除或更改表中的列
- 多数数据库允许重命名表中的列
- 许多数据限制对已经填有数据的列进行更改,对未填有数据的列几乎没有限制
增加行
ALTER TABLE blog_banner ADD test CHAR(20);
为banner表增加了一个test列
更改或删除列,增加约束或增加键,这些操作也使用类似的语法(注意,下面的例子并非对所有数据库都有效)
ALTER TABLE blog_banner DROP COLUMN test;
注意:使用ALTER TABLE时应该非常小心,应该在进行改动前做完整的备份。数据库表的更改不能撤销,如果增加或删除列,可能导致部分或全部数据的丢失。
3.删除表
删除表,使用如下语句:
4.重命名表
每个db对于重命名表的支持有所不同。DB2、MariaDB、MySQL、Oracle和PostgreSQL使用RENAME语句,SQL Server使用sp_rename存储过程,SQLite用户使用ALTER TABLE语句。
评论列表
已有0条评论