第十一章: 数据操作,与事物控制
插入数据:(做插入的时候一定不要忘记提交,不然数据保留不下)
使用INSERT语句向表中插入数据,语法结构如下:
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);
–采用这种语法一次只能追加一条记录;
–column部分叫做列名列表,value部分叫做值列表,列名列表
和值列表必须在个数及数据类型上保持一致;
–列名列表部分可以省略,如果省略,默认包括该表的所有列,
列的顺序为使用 desc 表名 命令所查看的顺序;
–列名列表部分也可以指定部分非空的列,注意值列表必须和列
名列表对应;
–字符和日期型数据必须要用单引号括起来。
SQL> INSERT INTO dept (deptno, dname, loc)
2 VALUES (50, 'DEVELOPMENT', 'DETROIT');
1 row created.
• 插入空值NULL
–隐含法: 在列名列表中忽略该列。
SQL> INSERT INTO dept (deptno, dname )
2 VALUES (60, 'MIS');
1 row created.
–显示法: 指定 NULL关键字或者''。
SQL> INSERT INTO dept
2 VALUES (70, 'FINANCE', NULL);
1 row created.
练习1:
• 1.向部门表新增一个部门,部门编号为50,部门名称为HR,工作地点为SY。
INSERT INTO dept VALUES (50,'HR','SY')
• 2.向部门表新增一个部门,部门编号为60,部门名称为MARKET。
INSERT INTO dept (deptno,dname)VALUES ('60','MARKET')
• 插入日期值
–SYSDATE 函数记录当前日期和时间
SQL> INSERT INTO emp (empno, ename, job,
2 mgr, hiredate, sal, comm,
3 deptno)
4 VALUES (7196, 'GREEN', 'SALESMAN',
5 7782, SYSDATE, 2000, NULL,
6 10);
1 row created.
插入数据
• 插入特字符&
– 插入部门信息:编号为80,部门名称为&Test&,地点为null
INSERT INTO dept VALUES(80, '&TEST&',null);
– 查看ESCAPE转义符用哪个符号表示 (在自带的工具里)
SHOW ESCAPE ; —— 查看 ESCAPE 状态
escape OFF ——返回ESCAPE状态为OFF
SET ESCAPE ON —— 设定 ESCAPE 状态为 ON
SHOW ESCAPE —— 查看 ESCAPE 状态
escape "\" (hex 5c) ——返回ESCAPE符号为“\”
– INSERT语句中使用 “\”符对特殊符号转义。
INSERT INTO dept VALUES(80, '\&TEST\&',null);
:练习2:
1.向员工表中新增一个员工,员工编号为8888,姓名为BOB,岗位为CLERK,经理为号7788,入职日期为1985-03-03,薪资3000,奖金和部门为空。
INSERT INTO emp VALUES(8888,'BOB','CLERK','7788','03-3月-1985',3000,NULL,null)
• 插入多行数据
–语法
INSERT INTO 表名 [( 列名1[, 列名2, … 列名n])] 子查询 ;
–不必书写values子句
–INSERT子句和数据类型必须和子查询中列的数量和类型相匹
配中列的数量
练习3:
• 1.使用CREATE TABLE emp_back as
SELECT * FROM EMP WHERE 1=0,创建 emp_back表,拷贝下来即可。
• 2.把emp表中入职日期大于1982年1月1日之前的员 工信息复制到emp_back表中。
INSERT INTO emp_back
SELECT * FROM emp WHERE hiredate>='01-1月-82'
修改数据:
• 修改数据使用UPDATE