数据操作 增 删 改 事务

增加行数据:使用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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值