和我一起迎接明天的太阳吧

klaus08

焦虑源于行动的匮乏

MySQL(三)

MySQL(三)

插入数据

插入单行

-- 采用这种方式向表中添加数据,必须 按表中各字段的顺序 为每一个字段提供一个值,如果没有可以赋值null
INSERT INTO 表名
VALUES(value1,
       value2,
       ·
       ·
       ·
);

由于上面这种方式严格要求赋值顺序和表中字段顺序一致,所以有了下面这种方式:

--说明赋值顺序
INSERT [LOW_PRIORITY] INTO 表名(
字段1,
字段2,
·
·
·) 
VALUES(value1,
       value2,
       ·
       ·
       ·
);

由于INSERT可能很耗时,进而会影响后面的SELECT语句,所以加上LOW_PRIORITY降低INSERT的优先级

插入多行

INSERT [LOW_PRIORITY] INTO 表名(
字段1,
字段2,
·
·
·) 
VALUES(value1,
       value2,
       ·
       ·
       ·
),
VALUES(value1,
       value2,
       ·
       ·
       ·
);

单条SELECT插入多行数据比多条SELECT依次插入单行数据快。

插入检索出的数据

如下,将表2的指定列的数据添加到表1里。

不要求字段对应相同,因为INSERT要的只是SELECT查询返回的值。

INSERT INTO 表名1(
字段1,
字段2,
·
·
·) 
SELECT(
字段1,
字段2,
·
·
·) 
FROM 表名2;

更新数据

一般格式如下:

UPDATE 表名
SET 字段1 =[,字段2 =, 字段3 =]
WHERE 更新条件

删除数据

一般格式如下:

DELETE FROM 表名
WHERE 删除条件;

DELETE只能删除行。若要删除表中所有行,使用TRUNCATE 表名效率更高,因为TRUNCATE是删除原表并新建一个同名表。

创建表

控制字段用于指明字段是否可以为空(NULL或NOT NULL)、增长方式(AUTO_INCREMENT)等。

在最后声明作为主键的字段,主键中不能有NULL。

CREATE TABLE IF NOT EXISTS 表名(
字段1 类型 控制字段1 控制字段2,
    ·
    ·
    ·
 PRIMARY KEY(字段1, 字段2)
)ENGINE = InnoDB --指明引擎类型,默认MyISAM

如果主键设为自动增长后,自己INSERT一条数据指明了主键取值m,那么下次INSERT数据默认的主键取值从m+1开始。

可以通过SELECT LAST_INSERT_ID()查看上一次的AUTO_INCREMENT值。

控制字段还可选指定默认值,通过DEFAULT 默认值

更新表

删除列

ALTER TABLE 表名 
DROP COLUMN 列名;

添加列

ALTER TABLE 表名
ADD 列名 类型;

添加外键

ALTER TABLE 表名
ADD CONSTRAINTS 约束名
FOREIGN KEY (做外键的字段名) 
PREFERENCES 表名2 (改表对应的主键列名);

删除表

DROP TABLE 表名;

重命名表

RENAME TABLE 原表名 TO 新表名;
posted @ 2021-07-07 20:17  klaus08  阅读(32)  评论(0编辑  收藏  举报