Oracle数据库笔记4(sql语句实例)

Oracle数据库笔记4(sql语句实例)

sql语言整理:

创建:表
增加:表中的列,完整性约束(增加主键,增加唯一性,增加外键),给列中插入数据,
查询:表,表的完整性约束名,表中列的属性
修改:表名,索引名,视图名,完整性约束(空值)
删除:表列,列里面的值,主键,唯一性,外键,check

示例:
    创建雇员表(Employee),包括员工号(empno),员工名(empname),工作职位(job),主管领导(manager),雇佣日期(hireDate),基本工资(basicWage),补贴(subsidy),部门号(depno)等员工信息;
create table Employee(
  empno char(10),
  empname varchar2(20),
  job  varchar2(30),
  manager varchar2(20), 
  hireDate date,
  basicWage number(10),
  subsidy number(6), 
);
//添加列:注意:没有column
ALTER table Employee add depno char(10);
//添加主键
alter table Employee add constraint PK_empno primary key(empno); 
//添加外键,(语句正确,但是提示缺少关键字)
alter table Employee add constraint FK_depno foreign key(depno) reference Department(depno); 
//添加检查约束(给subsidy),(重命名表后)说明:check约束用于限制列中的值的范围。
alter table Employees add constraint CK_subsidy check (subsidy>10000);
//增加唯一性
alter table Employee add constraint U_empname unique(empname);
U_empname;

//修改为非空值
alter table Employee modify empno not null;
//修改列的类型
alter table Employee modify basicWage number(7,2);
//修改(更新)列中的值(将2016591101补贴的金额更新)
update employee set subsidy=10012 where empno='2016591101';
//修改(更新)列中的值(将2016591108的基本工资增加300)
update employee set basicWage=basicWage+300 where empno='2016591108';
//修改(更新)列中的值(嵌套修改),将2016591108员工的职位和工资修改与2016591101员工的一样
update employee set (job,basicWage)=(select job,basicWage from employee where empno='2016591101') where  empno='2016591108';
//重命名列名
alter table Employees rename column  manager to managers;
//重命名表名
rename Employee to Employees;或者alter table Employees rename to Employee;
//利用子查询插入数据,将Scott表中的dept插入到Department
insert into department select * from scott.dept; 
//插入数据 注意:没有table关键字
insert into Employee values('2016591108','liyang','编程','某经理',to_date('2019-03-05','yyyy-mm-dd'),99999.12,999,'10001');
//插入数据(表名已改),在检查约束的条件下,小于10000插入不了。
insert into employees values ('2016591108', 'huahua','测试','某经理', to_date('2019-3-5','yyyy-mm-dd'),12121.12,10001,'01');
//删除唯一性
alter table Employee drop unique(empname);或者alter table Employee drop constraint 
//删除列
alter table Employee drop column depno;
//删除表
drop table Employee;
//删除列中数据(将2016591101员工的全部信息删除)注意:delete的会删除一行数据,不能删除某一字段
delete from employee where empno='2016591101';
//删除列中的部分数据(用update)
update employee from subsidy='' where empno='2016591108';
拓展:
//禁用约束
alter table employee disable check(subsidy>10000);或者alter table employee disable CK_subsidy;
//启用约束
alter table employee enable CK_subsidy;
//添加表注释
comment on table Employee is '雇员表';
//添加列注释
comment on column Employee.empno is '员工号';
//commit提交
完成事物,数据修改成功并对其他用户开放,提交后,用户对数据库修改操作的日志信息由日志缓冲区写到重做日志文件中,释放该事物所占据的系统资源和数据库资源;
//Rollback(撤销事物) (设置回滚点语句 savepoint point)
sql->delete from emp
sql->rollback
sql->delete from emp where empno='2016591101';
sql->commit;