解锁scott用户:alter user scott account unlock
重新给scott用户修改密码:alter user scott identified by 123456
DML:增加 删除 修改 查询 (CRUD)
单行注释: --
多行注释: /* */
查询 : select * from 表名 【where +条件表达式】
查询 全部数据 从 哪个表中 满足条件的(可不写)
(可换成列名)
多条件查询: select * from 表名 where 条件1 and/or 条件2 and/or 条件3;
and: 并且 or: 或者
修改数据库数据: update 表名 set 字段名(列名) = 值 where 字段名 =值;
设置 哪一列 的值为 满足条件的
增加一行的数据: insert into 表名(字段名1,字段名2,字段名3) values(值1,值2,值3);
可只加入对应字段的值,若不写字段名则必须加入所有字段值,没有的用null代替
删除一行数据: delete from 表名 where 字段名 =值
删除 满足条件的字段
DDL:(数据库定义语言):表的定义
创建一张表: create table 表名( 列名1 数据类型 约束, 列名2 数据类型 约束);
删除表: drop table 表名
修改表:
增加列: alter table 表名 add(列名数据类型 [默认值] [约束],列名数据类型..);
修改列属性: alter table 表名 modify (列名 数据类型约束,列名 数据类型 约束)
修改字段名: alter table 表名 rename column 旧名字 to 新名字
删除多列: alter table 表名 drop (列名1,列名2)
删除单列: alter table 表名 drop【column列名】/【(列名)】 任意一种
SQL 查询(复杂查询)
排序: select * from 表名 [条件] order by 列名 [排序规则,不写默认升序]
可不写 逗号隔开,则相当于先分组 升序(asc) 降序(desc)
再组内排序,先排前面那个
多条件判断: select字段名,
case
when 条件1 then 输出语句
when 条件2 then 输出语句
else 输出语句
end from 表名
给表取别名:直接在表后面跟没名字
给列取别名:用as关键字来转换
对数据分组: select 字段名, 单行函数 from 表名 group by 字段名 having条件
例: sum(sal)
函数: sum(总和) avg(平均数) count(总个数) max(最大值) min(最小值)
伪列: rowid rownum
Rowid伪劣能在整个数据库中唯一标识一条记录,是一个唯一标识
Rownum 是我们数据库查询的时候数据库自动分配的一个行号:实际上的那个我们执行sql的时候得到的是一张临时表
子查询:
就是把我们查询到的数据当作一张临时表(子表)或者条件结果, 我们以这张子表为基础再进行查询
返回结果:
1、 一行一列:这个我们可以直接当作结果,放到where后面使用
2、 多行一列:可以当作结果放到where后面使用,也可以当临时表使用
3、 多行多列:这种只能当作临时表使用,这时候就需要我们能连接两张表:(两种表中应该有同一个字段,值类型相同)
分页查询
就是对我们的数据进行分段的提取,保证每次加载的数据量一致: 一般语法比较笨:伪劣组合子查询进行查找 (三层嵌套)
select tt.* from ( select t.*, rownum as t_rownum from ( select * from emp e order by hiredate) t ) tt where tt. t_rownum >= 11 and tt.t_rownum <=15
连接查询
定义:所谓的连接查询针对的是多张表(最少2张),把两张表的数据联系在一起:
内连接查询: select t1.*, t2.* from 表名1 t1 inner join 表名2 t2 on 连接条件
左连接查询 left join
left join的特点 左边的表示主表:我们查询的数据以左边表的数据为准,而inner join则是两张表对比显示都有的才显示
右连接查询 right join
左和右实际上是相对的
数据类型
number: 直接定义个数字数据类型(包含整数)
number(3) : 定义了一个整数,里面只能放3位
number(6,2): 定义了一个浮点数,一共6位,小数点后面2位
字符类型:
[n]varchar2 [n]varchar [n]char
不加n就是4000位长度 加了n就是2000
对于数据库设计表来说,必须满足三大范式
1、属性不可再分:我们设计的字段必须代表单独的意思,不可以同时代表几个意思
2、属性不能部分依赖主属性:
3、属性不能间接依赖主属性:
主属性:此表中必须有一个属性能保证一条数据和其他所有数据不一样
(主键) 唯一不重复
约束
唯一约束:关键字:unique ,该字段插入的值绝对不能重复,也就是数据库只能出现一次
非空约束:关键字:not null 这个字段的属性的值绝对不能为空
主键约束:关键字 primary key 非空约束+唯一约束
任何数据库表【一定】有主键 默认的格式 表名_id news_id(主键)
检查约束:关键字: check 对这个字段插入值的时候进行值的检查(是否符合我检查约束的规则)
例: author_sex varchar2(4) check (author_sex in('男', '女') )
外键约束: alter table 主表名 add constraint 外键名 foreign key ( 主表的字段名 ) references 从表名 ( 从表字段名 )
操作 添加 约束 [随便取] 外键 关联 [必须是唯一的]
条件关键字:between … and
select * from 表名 where 字段名 between 值1 and 值2
等价于 在值1与值2之间
条件关键字:in
select * from 表名 where 字段名 in ( 值1, 值2, 值3.... )
等价于a=值1, b=值2, c=值3
数据类型
number: 直接定义个数字数据类型(包含整数)
number(3) : 定义了一个整数,里面只能放3位
number(6,2): 定义了一个浮点数,一共6位,小数点后面2位
字符类型:
[n]varchar2
[n]varchar
[n]char
不加n就是4000位长度 加了n就是2000
面试题: oracle中char、varchar 、varchar2的区别
1、 都是表示字符串
2、 Char和varchar区别:char是定长度,varchar是可变长度,char的效率高,varchar的效率低,但是char浪费空间(不足的自动补0),varchar就节约空间(不足的取消),
3、 Varhcar和varhcar2的区别:无区别,如果说当前字段没有值 varhcar是保存的空字符串,varchar2(oracle特有的数据类型)可以支持保存空字符串,也支持保存NULL关键字
语法规则: varchar2(长度) 存储字符的长度[采用的unicode编码,中文是占两个长度
数据类型
number: 直接定义个数字数据类型(包含整数)
number(3) : 定义了一个整数,里面只能放3位
number(6,2): 定义了一个浮点数,一共6位,小数点后面2位
字符类型:
[n]varchar2 [n]varchar [n]char
不加n就是4000位长度 加了n就是2000
面试题: oracle中char、varchar 、varchar2的区别
1、 都是表示字符串
2、 Char和varchar区别:char是定长度,varchar是可变长度,char的效率高,varchar的效率低,但是char浪费空间(不足的自动补0),varchar就节约空间(不足的取消),
3、 Varhcar和varhcar2的区别:无区别,如果说当前字段没有值 varhcar是保存的空字符串,varchar2(oracle特有的数据类型)可以支持保存空字符串,也支持保存NULL关键字
语法规则: varchar2(长度) 存储字符的长度[采用的unicode编码,中文是占两个长度]
对于数据库设计表来说,必须满足三大范式
1、属性不可再分:我们设计的字段必须代表单独的意思,不可以同时代表几个意思
2、属性不能部分依赖主属性:
3、属性不能间接依赖主属性:
主属性:此表中必须有一个属性能保证一条数据和其他所有数据不一样
(主键) 唯一不重复
约束
唯一约束:关键字:unique ,该字段插入的值绝对不能重复,也就是数据库只能出现一次
非空约束:关键字:not null 这个字段的属性的值绝对不能为空
主键约束:关键字 primary key 非空约束+唯一约束
任何数据库表【一定】有主键 默认的格式 表名_id news_id(主键)
检查约束:关键字: check 对这个字段插入值的时候进行值的检查(是否符合我检查约束的规则)
例: author_sex varchar2(4) check (author_sex in('男', '女') )
外键约束:关键字 foreignkey
alter table主表名 add constraint 外键名 foreign key (主表的字段名) references 从表名(从表字段名)操作 添加 约束 [随便取] 外键 关联 [必须是唯一的]