一.单词
Database 数据库 Manipuation 操纵、控制 Table 表格、桌子
Row 行、路 Grant 授予、承认 Column 列、圆柱
Select 选择、查询 Commit 确认、犯罪 Dual 二重的
System 系统、制度 Actomicity 原子性 Char 烧焦、
Unicode 万国码、统一码 Isolation 隔离 Varchar 可变字符
Insert 插入、嵌入 Create 产生、创作 Delete 删除
Update 更新、修正 Alter 改变、修改 Language 语言
Query 询问、问题 Values 价值、标准 Drop 退出、结束
Revoke 撤销、取消 Durability 持续性、永久性 concat 联系、字符串函数
Rollback 回降、返回 Desc 降序、查询 upper 上面、内地
Consistency 一致性 Modify 修改 lower 下方、底部
intcap 因特普 cookie 饼干、缓存 session 阶段、会期、缓存
distinct 不同的、确切的 trim 截取、整理 distinct 不同的、卓越的
pad 补位、衬垫 substr 子串 round 四舍五入、圆形的
trunc 功能截取、躯干 mod 取模函数、国防部 sysdate 相册
hiredate 入职时间 systimetamp 集成电路 initcap 首字母大写
constraint 约束、限制 primary 主要、要素 index 指数、索引
sequence 序列 nextval 自动增长 increment 增量
unique 唯一、独特的 default 违约、默认 check 检查、核对
ceil “天花板” floor “地板”
【Dual 】: 伪表(一个专门用于演示的表)
备注:SQL:数据查询(DQL);数据操作(DML):insert update delete;
数据定义(DDL):create drop ;数据控制语句(DCL):grant revoke ;
事务控制语句(TCL):commit rollback 特性:原子性、一致性、隔离性和永久性(持续性) ;
二.代码
1.查询结构: desc 表名; 如,desc ZQ_009;
2. 删除表格: drop table 表名; 如,drop table ZQ_009;
3. 增加列表: alter table 表名 add(字段名 数据类型及长度,字段名 数据类型及长度…); 如,alter table stu_jp001 add(物理 number(3),英语 number(3));
4. 删除列/字段: alter table 表名 drop(字段,字段…);如,alter table stu_jp001 drop(物理,英语);
5. 修改现有表格(字段名):alter table 表名 modify(字段名 数据类型及长度,字段名 数据类型及长度…); 如,alter table stu_jp001 modify(性别 number(1),语文 varchar(10));
6. 嵌入数据: insert into 表名 values(数据A,数据B…); 如,insert into stu_jp001 values(‘小明’,16,‘男’,1805,to_date(‘2000-05-07’,‘yyyy-mm-dd’),‘上海’,80,90);
7. 部分嵌入数据:insert into 表名(字段A,字段B…) values(数据A,数据B…);
如,insert into stu_jp001 (姓名,年龄,性别,地址) values(‘张无忌’,28,‘男’,‘光明顶’);
8.修改表中数据:update 表名 set 字段A=数据A,字段B=数据B… where 条件判 断语句; 如,update stu_jp001 set 年龄=18,语文=100 where 姓名=‘张无忌’;
说明:如果没有where条件,则全部修改
9.删除数据: delete from 表名 where 条件判断语句; 如,delete from stu_jp001 where 姓名=‘小米’;
10.查询全部数据: select * from 表名; 如,select * from stu_jp001;
11. 部分查询: select 字段A,字段B… from 表名; 如,select 姓名,生日,地址 from stu_jp001;
12.创建表格:creat table 表名(字段名A 数据类型及长度,字段名B 数据类型及长度… ); 如,create table stu_jp001(姓名 varchar(30),年龄 number(3),性别 char(3),
13.班级 number(4),生日 date,地址 varchar(120),语文 number(3),数学 number(3)
14.);
案例①:创建表格
姓名 年龄 男 班级 生日 地址 语文 数学
小明 16 男 1805 2000-05-07 上海 80 90小红 16 女 1805 2000-03-20 江苏 70 95小李 16 男 1805 2000-09-02 安徽 100 80小张 16 女 1805 2000-11-12 浙江 60 100 小刚 16 男 1805 2000-11-12 浙江 null null
第一步:创建一个学生信息表
姓名 年龄 性别 班级 生日 地址 语文 数学
create table stu_jp001(姓名 varchar(30),年龄 number(3),性别 char(3),
班级 number(4),生日 date,地址 varchar(120),语文 number(3),数学 number(3)
);
desc stu_jp001; ——查询表格结构
第二步:嵌入数据
insert into stu_jp001 values(‘小明’,16,‘男’,1805,to_date(‘2000-05-07’,‘yyyy-mm-dd’),‘上海’,80,90);
insert into stu_jp001 values(‘小红’,16,‘女’,1805,to_date(‘2000-03-20’,‘yyyy-mm-dd’),‘江苏’,70,95);
insert into stu_jp001 values(‘小李’,16,‘男’,1805,to_date(‘2000-09-02’,‘yyyy-mm-dd’),‘安徽’,100,80);
insert into stu_jp001 values(‘小张’,16,‘女’,1805,to_date(‘2000-11-12’,‘yyyy-mm-dd’),‘浙江’,60,100);
insert into stu_jp001 values(‘小刚’,16,‘男’,1805,to_date(‘2000-11-12’,‘yyyy-mm-dd’),‘浙江’,null,null);
——提交:commit;
② 向“stu_jp001”表中嵌入下面部分数据
姓名 年龄 性别 地址 语文 数学
金毛狮王 45 男 冰火岛 100 100
张无忌 28 男 光明顶
小昭 20 乾坤洞
紫衫龙王 女 灵蛇岛
周芷若 21 女 峨眉山
insert into stu_jp001 (姓名,年龄,语文,数学) values(‘金毛狮王’,45,100,100);
insert into stu_jp001 (姓名,年龄,性别,地址) values(‘张无忌’,28,‘女’,‘光明顶’);
insert into stu_jp001 (姓名,年龄,性别,地址) values(‘小昭’,20,‘女’,‘乾坤洞’);
insert into stu_jp001 (姓名,年龄,性别,地址) values(‘紫衫龙王’,20,‘女’,‘灵蛇洞’);
insert into stu_jp001 (姓名,年龄,性别,地址) values(‘周芷若’,21,‘女’,‘峨眉山’);
案例2:
——创建表格
Create table ZQ_001(enpno number(4),–员工编号
ename varchar(10),–员工名字
Job varchar(9),–员工职位
mgr number(4),–上级编号
Hiredate date,–入职日期
salary number(7,2),–员工月薪
bonus number(7,2),–员工奖金
depotno number(2)–部门编号
);
——查询表格结构: Desc ZQ_001;
嵌入下面14组数据:
Insert into ZQ_001 values(7369,‘SMITH’,‘CLERK’,7902,to_date(‘1980-12-17’,‘yyyy-mm-dd’),800,null,20);
insert into ZQ_001 values(7499,‘ALLEN’,‘SALESMAN’,7698,to_date(‘1981-2-20’,‘yyyy-mm-dd’),1600,800,30);
insert into ZQ_001 values(7521,‘WARD’,‘SALESMAN’,7698,to_date(‘1981-2-22’,‘yyyy-mm-dd’),1250,500,30);
insert into ZQ_001 values(7566,‘JONES’,‘MANAGER’,7839,to_date(‘1981-4-2’,‘yyyy-mm-dd’),2975,null,20);
insert into ZQ_001 values(7654,‘MARTIN’,‘SALESMAN’,7698,to_date(‘1981-9-28’,‘yyyy-mm-dd’),1250,1400,30);
insert into ZQ_001 values(7698,‘BLAKE’,‘MANAGER’,7839,to_date(‘1981-5-1’,‘yyyy-mm-dd’),2850,null,30);
insert into ZQ_001 values(7782,‘CLARK’,‘MANAGER’,7839,to_date(‘1981-6-9’,‘yyyy-mm-dd’),2450,null,10);
insert into ZQ_001 values(7788,‘SCOTT’,‘ANALYST’,7566,to_date(‘1987-4-19’,‘yyyy-mm-dd’),3000,null,20);
insert into ZQ_001 values(7839,‘KING’,‘PRESIDENT’,null,to_date(‘1981-11-17’,‘yyyy-mm-dd’),5000,null,10);
insert into ZQ_001 values(7844,‘TURNER’,‘SALESMAN’,7698,to_date(‘1981-9-8’,‘yyyy-mm-dd’),1500,0,30);
insert into ZQ_001 values(7876,‘ADAMS’,‘CLERK’,7788,to_date(‘1987-5-23’,‘yyyy-mm-dd’),1100,null,20);
insert into ZQ_001 values(700,‘JAMES’,‘CLERK’,7698,to_date(‘1980-12-3’,‘yyyy-mm-dd’),950,null,30);
insert into ZQ_001 values(7902,‘FORD’,‘ANALYST’,7566,to_date(‘1981-12-3’,‘yyyy-mm-dd’),3000,null,20);
insert into ZQ_001 values(7934,‘MILLER’,‘CLERK’,7782,to_date(‘1982-1-23’,‘yyyy-mm-dd’),1300,null,10);
——查询表格:select * from ZQ_001;
——确认:commit;
15.去空制换函数: nvl(a,b)
释义: a表示需要被判断的字段名 b表示需要被置换的值使用规则
当a不为空值null时,直接使用a的值;当a为空值null时,将null替换成b的值。
——清列员工表中所有员工的姓名、月薪、月奖和月收入
Select ename,SALARY,BONUS*12,SALARY+nvl(BONUS,0) from ZQ_001;——正确写法
Select ename,SALARY,BONUS*12,SALARY+BONUSfrom ZQ_001;——错误写法
–起别名
select ename,salary,bonus,salary+nvl(bonus,0) MONTH_SALATY from ZQ_001;
select ename,salary,bonus,salary+nvl(bonus,0) “MONTH_SALATY” from ZQ_001;
Select ename,salary,bonus,salary+nvl(bonus,0) as MONTH_SALATY from ZQ_001;
注意:起别名只是在当次查询时有效,原表格的原名字段不会改变。
16.条件查询 where
Select 字段A,字段B…from 表名 where 条件判断语句 如,select * from ZQ_001 where enpno=7788;——请列出员工表中工号“778”的员工的所有信息;
如,select ename,salary,depotno from ZQ_001 where ename=‘ALLEN’;——请列出员工"ALLEN"的姓名、月薪和部门编号 ;如,select * from ZQ_001 where salary>=3000;——请列出员工表中薪水不低于3000的员工的所有信息
–请列出员工表中所有员工的姓名和年薪(包含奖金)
select ename,(salary+nvl(bonus,0))*12 年薪 from ZQ_001;
select ename,(salary+nvl(bonus,0))*12 “年薪” from ZQ_001;
select ename,(salary+nvl(bonus,0))*12 as 年薪 from ZQ_001;
select ename,(salary+nvl(bonus,0))*12 year from ZQ_001;