Oracle 数据库 = 神谕 = 它的第一个客户 = CIA
sqlplus = 让我们和数据库进行交流的工具
regedit = 注册表
services.msc = 服务
SQL = Structured Query Language = 结构化查询语言
DDL = Data Defination Language = 数据定义语言
create 创建 alter 修改 drop 删除 truncate 截断
DML = Data Manipulation Language = 数据操纵语言
insert 插入 delete 删除 update 更新
DQL = Data Query Language = 数据查询语言
select 查询
DCL = Data Control Language = 数据控制语言
grant 授权 revoke 取消授权
TCL = Transaction Control Language = 事务控制语言
commit 提交 rollback 回滚 savepoint 保存还原点
给用户解锁:
alter user scott account unlock;
给用户加锁:
alter user scott account lock;
创建新用户:
create user ET1912 identified by etoak;
给用户修改密码:
alter user scott identified by et;
给用户赋予权限:
grant dba to scott;
给用户取消授权:
revoke dba from ET1912;
删除用户:
drop user ET1912;
查看当前用户:
show user;
切换用户:
conn 用户名/密码;
小练习:
在scott用户下创建一个新用户ET,在ET下创建一个新用户ET1912,并连接
varchar2(20) 可变长度 0-4000个字节
char(20) 固定长度 0-2000个字节
char(1) 男/女 1/2
long
number()
number(5)
number(5,2)
number(5,-2)
date
timestamp 时间戳(包含毫秒数)
创建一张表:
create table student(
name varchar2(20),
birthday date,
sal number(5)
);
练习:
创建一张teacher表,字段:老师姓名tname,老师薪资tsal(薪资必须六位数及以上),生日tbirthday
查看当前用户下有哪些表:
select table_name from user_tables;
查看当前表结构:
desc student;
修改表名:
alter table student rename to stu;
修改字段名:
alter table stu rename column sal to salary;
建表以后 增加字段:
alter table stu add email varchar2(20);
建表以后 修改数据类型:
alter table stu modify email varchar2(50);
建表以后 删除字段:
alter table stu drop column email;
建表以后 删除表:
drop table student3;
drop table student2 purge;
truncate table student2;
drop和truncate的区别?
1.表结构
2.表数据
3.表空间
练习:
1.把teacher表名改为tea
2.新增字段aihao
3.aihao字段名修改为hobby
4.删除字段hobby
select * from student;
select name from student;
select name,salary from student;
select name,salary from student where salary >= 8000;
insert into student values('ET1912_zs',sysdate,5000);
insert into student (name,salary) values('ET1912_ls',6000);
delete from student;
delete from student where name = 'ET1912_zs1';
update student set salary = salary + 1000;
update student set salary = salary + 1000 where name = 'ET1912_zs';
update student set name = 'ET1912_zs1',salary = salary + 1000 where name = 'ET1912_zs' and salary = 7000;
1.插入数据:
1)张老师,当前时间,12222
2)周老师, ,13333
3)卢老师,当前时间,14444
2.更新数据:
张老师和卢老师薪资涨30%
like:
%:代表任意位的任意字符
_:代表一位上的任意字符
select name,salary from student where name like 'ET1912%';
select name,salary from student where name like '%ET%';
select name,salary from student where name like 'ET1912_';
select name,salary from student where name like 'ET1912_%';
练习:
1.插入数据
1)张老师,当前时间,15555
2.更新数据
姓张的老师和姓卢的老师薪资涨30%
通过后指定一个字符位进行逃离,来保证like之后的字符看作是普通字符
select name,salary from student where name like 'ET1912,_%' escape ',';
select name,salary from student where name like 'ET1912._.%' escape '.';
条件:
and:并且 同时成立
or:或者 有一个条件成立即可
between and:闭合区间
< >= <= !=
<>
–1查询20号部门的所有员工信息
–2查询所有工种为CLERK的员工的工号、员工名和部门名。
–3查询奖金(COMM)高于工资(SAL)的员工信息
–4查询奖金高于工资的20%的员工信息
–5查询10号部门中工种为MANAGER和20号部门中工种为CLERK的员工的信息
–6查询所有工种不是MANAGER和CLERK,且工资大于或等于2000的员工的详细信息
–7查询有奖金的员工的不同工种
–8查询所有员工 工资和奖金的和
–9查询没有奖金或奖金低于100的员工信息
–10查询各月倒数第2天入职的员工信息
–11查询员工工龄大于或等于10年的员工信息
–12查询员工信息,要求以首字母大写的方式显示所有员工的姓名
–13查询员工名正好为6个字符的员工的信息
–14查询员工名字中不包含字母“S”员工
–15查询员工姓名的第2个字母为“M”的员工信息
–16查询所有员工姓名的前3个字符
–17查询所有员工的姓名,如果包含字母“S”,则用“s”替换
–18查询员工的姓名和入职日期,并按入职日期从先到后进行排列
–19显示所有的姓名、工种、工资和奖金,按工种降序排列,若工种相同则按工资升序排列
–20显示所有员工的姓名、入职的年份和月份,若入职日期所在的月份排序,若月份相同则按入职的年份排序
–21查询在2月份入职的所有员工信息
–22查询所有员工入职以来的工作期限,用“年月**日”的形式表示。(不做)
–23查询至少有一个员工的部门信息
–24查询工资比SMITH员工工资高的所有员工信息
–25查询所有员工的姓名及其直接上级的姓名
–26查询入职日期早于其直接上级领导的所有员工信息
–27查询所有部门及其员工信息,包括那些没有员工的部门
–28查询所有工种为CLERK的员工的姓名及其部门名称
–29查询最低工资大于2500的各种工作