一、创建表
1、基本方法 create table
表列的名字和定义,用逗号分隔;圆括号内为表的具体定义。为了提高可读性,建议写成如下形式:
create table user
(
username text(20),
password text(32)
);
在 SQL 语句中忽略的空格。语句可以在一个长行上输入,也可以分成许多行,它们没有差别。这样,你就可以用最适合自己的方式安排语句的格式。
创建新的表时,指定的表名必须不存在,否则会出错。
每个字段必须指明数据类型,如 username text(20) ,最后一个字段定义结束不可加 ' , '
2、NULL
NULL,是字段的属性,在创建表时指明:
create table user
(
username text(20) not null,
password text(32) null,
nation text(40)
);
username 列为 not null,则在给表添加数据行时,该字段必须有值,否则会报错,并且插入失败。而 password 列为 null,在给表添加数据行时,可以不给出该字段的值。最后一个字段 nation ,没有指明,则为默认值 null 。
注意:只有 not null 的列可以作为主键。
3、默认值
在插入行时如果不给某字段的值,将自动采用默认值。默认值定义用 default 关键字。
create table user
(
username text(20) not null,
password text(32) null,
nation text(40),
sex integer not null default 1 -- 1 代表男性
);
4、TEMPORARY 临时表
MySQL临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。
create temporary table user(
username text(20) not null,
password text(32) null,
nation text(40),
sex integer not null default 1 -- 1 代表男性
);
此时,该表为临时表。如果使用了MySQL客户端程序连接MySQL的数据库服务器来创建临时表,那么只有在关闭客户端程序时才会销毁临时表。
参考:https://www.runoob.com/mysql/mysql-temporary-tables.html
二、删除表
1、DROP(谨慎使用!)
DROP TABLE table_name ;
删除表时,表和数据均会丢失,表所占用的空间全部释放,操作立即生效,不可恢复。谨慎使用!
2、TRUNCATE
TRUNCATE TABLE table_name
作用是清空表数据,不删除表的定义,所占用的空间会恢复到初始大小,操作立即生效,不可恢复。
3、DELETE
删除表的部分数据:
DELETE FROM table_name --删除表中的全部数据
DELETE FROM table_name WHERE clause --删除表中的符合条件 clause 的数据
delete只删除数据不删除表的结构(定义) ,操作可恢复,delete操作之后表所占的空间不会减少。
三、修改表
1、对表重命名
RENAME TABLE 原表名 TO 新表名
RENAME TABLE 原表名 TO 库名.表名 --可将表移动到另一个数据库
2、修改表的字段
ALTER TABLE 表名 操作名
参考:https://www.runoob.com/mysql/mysql-alter.html
操作名如下:
-- 操作名
ADD[ COLUMN] 字段定义 -- 增加字段
AFTER 字段名 -- 表示增加在该字段名后面
FIRST -- 表示增加在第一个
ADD PRIMARY KEY(字段名) -- 创建主键
ADD UNIQUE [索引名] (字段名) -- 创建唯一索引
ADD INDEX [索引名] (字段名) -- 创建普通索引
DROP[ COLUMN] 字段名 -- 删除字段
MODIFY[ COLUMN] 字段名 字段属性 /* 支持对字段属性进行修改,不能修改字段名(所有原有属性也
需写上)*/
CHANGE[ COLUMN] 原字段名 新字段名 字段属性 -- 支持对字段名修改
DROP PRIMARY KEY -- 删除主键(删除主键前需删除其AUTO_INCREMENT属性)
DROP INDEX 索引名 -- 删除索引
DROP FOREIGN KEY 外键 -- 删除外键
四、复制表
1、复制表结构
CREATE TABLE 表名 LIKE 要复制的表名
CREATE TABLE,包含了原数据表的结构,索引等。
2、复制表结构和数据
CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名; -- 全部复制
CREATE TABLE 新表表名 AS SELECT 字段1, 字段2 FROM 旧表表名; -- 仅复制部分字段
3、将表数据复制到另一个已存在表
复制前必须保证,两个表结构一致!
INSERT INTO 目标表 SELECT * FROM 来源表; -- 复制全部数据
INSERT INTO 目标表 字段1, 字段2, … SELECT 字段1, 字段2, … FROM 来源表; -- 复制指定字段,字段顺序必须一致