一、插入数据
1、插入完整的行
方法一: INSERT INTO 表名
VALUES('值1','值2','NULL');
注意:①每一列都按顺序赋值,若无值,则填NULL
②不安全,表结构变化,则语句不再适用
方法二: INSERT INTO 表名(列1,列2,列3)
VALUES('值1','值2','NULL');
注意:①相比于上一种,更加安全,即使表结构发生变化,INSERT语句仍然正常工作,只需给列出的列赋值
②不能插入同一条记录两次,主键需具有唯一性,
若需要对相同主键重新赋值,则使用:
方法一: REPLACE INTO 表名(列1,列2,列3)
VALUES('值1','值2','NULL');
注意:若表中已有此行数据(根据主键或者唯一索引判断),则先删除此行数据,然后插入新的数据;否则,直接插入新数据
方法二: DELECT FROM 表名
WHERE 列名 = 主键
INSERT INTO 表名(列1,列2,列3)
VALUES('值1','值2','NULL');
2、插入行的一部分
语法同1,省略无值的列名及NULL值即可,但省略列需满足:
①该列定义为允许NULL值 ②在表定义中给出默认值
3、插入某些查询结果
INSERT INTO 表名(列1,列2,列3)
SELECT 列1,列2,列3
FROM 表2名;
注意:①在创建填充表2时,应保持列名与表1一致
②主键名不可一样,否则插入报错
③由于插入是依照所列位置顺序,故SELECT中列名可不与INSERT中一致
④SELECT中可包含WHERE子句,用于过滤插入的数据
4、从一个表复制到另一个表
CREATE TABLE 表0名 AS SELECT * FROM 表1名;
注释:①从表1中选择所有列及数据复制到新建表0中
②可将*替换成具体列名,则复制具体列
作用:可用于试验新SQL语句,而不影响原数据
Navicat中代码如下:
-- 在表中插入数据
INSERT INTO t_student VALUES
(1,'张三','男',18,'2022-05-30','建筑1班','156@152.com');
INSERT INTO t_student VALUES
(2,'王二','男',16,'2022-05-06',"建筑2班",'157@152.com'); -- 插入字符时,不区分单双引号
INSERT INTO t_student VALUES
(3,'李四','男',18,now(),'建筑1班','156@152.com');
-- 写入时间,可选函数now(),sysdate(),CURRENT_DATE()
INSERT INTO t_student
(snu,sname,sex,age,enterdate,class,email)
VALUES
(4,'麻子','男',18,'2022-05-30','建筑1班','156@152.com');
-- 当插入非全部字段时,需标明插入字段名
二、更新、删除数据
1、更新数据UPDATE
UPDATE 表名
SET 列1 = 新值1,列2 = 新值2
WHERE 更新行;
注意:①若无WHERE则更新所有行
②要删除某个列的值,可更新为NULL
③空字符用' '表示,是值,而NULL表示无值
2、删除数据DELETE
DELETE FROM 表名
WHERE 列名 = 数值; -- FROM可选,但最好保留(可移植性)
注意:①若无WHERE则删除所有行(删除列用UPDATE)
②TRUNCATE TABLE可删除所有行,并且速度更快(删除后不返回数值,而DELETE返回数值)
③当表中存在外键时,删除相应的列将返回错误
Navicat中代码如下:
-- 修改表中数据
UPDATE t_student SET
age = 17
WHERE snu = 3; -- 当无限制条件时,表示对整列修改
update T_student Set
AgE = 21,
CLAss = 'jaVe02'
WHere SnU = 4;
UPDATE t_student SET
class = 'JAVE01',
age = 19
WHERE snu = 3;
UPDATE t_student SET
class = 'JAVE02'
WHERE class = 'jaVe02'; -- 表名、关键字、字段名、内容默认情况下不区分大小写
-- 删除数据
INSERT INTO t_student VALUES
(5,'张四','女',18,'2022-05-01','建筑1班','156@153.com');
INSERT INTO t_student VALUES
(6,'王三','女',17,'2022-05-20','建筑2班','167@152.com');
INSERT INTO t_student VALUES
(7,'李五','女',20,'2022-04-30','JAVE02','156@154.com');
INSERT INTO t_student VALUES
(8,'李六','男',20,'2022-04-30','JAVE01','156@134.com');
INSERT INTO t_student VALUES
(9,'麻子爸爸','男',50,'2007-04-30','JAVE01','176@134.com');
INSERT INTO t_student VALUES
(10,'麻子妈妈','女',47,'2010-04-06','JAVE02','156@234.com');
DELETE FROM t_student
WHERE snu = 10;
UPDATE t_student SET
enterdate = NULL,
age = NULL
WHERE snu = 9; -- 删除行用DELETE,列用UPDATE