增加行数据:使用INSERT语句实现
修改行数据:使用UPDATE语句实现
删除行数据:使用DELETE语句实现
1.增加数据 INSERT
列名列表部分可以省略,如果省略,默认包括该表的所有列
值列表必须和列名列表对应
字符和日期型数据必须要用单引号括起来
INSERT INTO dtest(deptno,dname,loc)
VALUES (50,'PRESIDENT','CHINA');
一一对应
1.如果插入数据有null时 有两种解决方法
第一种 直接不写空值的列名
第二种 在values后面对应该列直接写null
INSERT INTO dept (deptno, dname ) 因为loc想添加的数据没有 为空 所以可以直接不写loc
VALUES (60, 'MIS');
INSERT INTO dept(deptno, dname ,loc) 或者 loc直接对应添加值null
VALUES (70, 'FINANCE', NULL);
2.插入日期值时使用单引号把日期括起来 如果想用当前日期 可直接写SYSDATE() 函数
3.插入主键
如果用like复制表格的话会把源表的主键约束复制过来
但是用select复制表格的话不会把源表的主键约束复制过来
所以此时可以用alert来添加主键外键约束
ALTER TABLE 新表名 add CONSTRAINT 约束名 PRIMARY KEY (变成主键的列名)
ALTER table 表名 add CONSTRAINT 约束名 FOREIGN KEY (外键)REFERENCES 另一个表(另一个表的主键);
也可以用 alert来删除主键外键约束
ALTER TABLE aaaaa DROP FOREIGN KEY ttt; 删除aaaaa表格中的外键ttt
ALTER TABLE aaaaa DROP primary KEY ttt; 删除aaaaa表格中的主键ttt
4.通过子查询插入多行数据
4.1 创建表的同时插入多行数据
CREATE TABLE manager AS SELECT * FROM emp WHERE deptno = 10;
创建manager表并插入emp表中部门编号为10的数据行
4.2 根据条件在一个表中插入另一个表的多行数据
INSERT INTO manager SELECT * FROM emp WHERE job = 'MANAGER';
在manager表中添加 emp表中添加工作类型为经理的数据行
2. 修改数据 UPDATE
修改数据主要用来按照指定条件修改表中某些行的列数据。
WHERE子句用来限定修改哪些行。
SET子句用来限定修改哪些列。
在修改时要注意表格中的各种约束 不然会报错
UPDATE emp SET deptno = 20 WHERE empno = 7782;
在emp表中把empno为7782的员工的部门编号(deptno)修改为20
DATE_ADD(指定行, 时间)
UPDATE empl SET hiredate = DATE_ADD(hiredate, interval 10 day)
WHERE hiredate ='1980-12-17'
把emp表中入职日期为1980-12-17的向后推移十天
3.删除数据 DELETE
删除职位是CLERK的员工记录
DELETE
FROM emp
WHERE job = 'CLERK';
4.截断表 TRUNCATE
TRUNCATE和DELETE区别
- TRUNCATE是DDL,只能删除表中所有记录,释放存储空间,使用ROLLBACK不可以回滚。
- DELETE是DML,可以删除指定记录,不释放存储空间,使用ROLLBACK可以回滚。
TRUNCATE TABLE emp;
删除表emp
5. 事务
start transaction 开启事务
中间添加后用savepoint 自己命名 添加标记
rollback to 刚才的名字来回滚相当于撤销刚才的操作
commi提交语句 在最后确定是提交
CREATE TABLE tes(
id int(3),
tname VARCHAR(3)
);
START TRANSACTION;
INSERT INTO tes(id,tname)values(1,'a');
INSERT INTO tes(id,tname) values(2, 'b');
SAVEPOINT s1;
INSERT INTO tes(id,tname) values(3, 'c');
INSERT INTO tes(id,tname) values(4, 'd');
DELETE FROM tes WHERE id in (1,3);
ROLLBACK TO s1;
DELETE FROM tes WHERE id in (2,4);
COMMIT;
ROLLBACK;