1、INSERT 语句
--- 语法:
INSERT INTO table_name(columnName1,columnName2,columnName3..) values (columnNameValue1,columnNameValue2,columnNameValue3..)
?注解:
|---插入数据的类型与字段的数据类型相同
|---数据的大小应在列的规定范围内
|---在values后加入的位置必须与列的排列位置一致
|---字符和日期类型应包含在单引号中。
|---插入空值,不指定域
|---如果给表的每一列添加值,可以不带列名。
2、UPDATE语句
---语法:
update table_name set column_name = exper [column_name = exper...]
where 条件
?注解:
|---SET字句指示哪些列值需要修改
3、DELETE语句
---语法
DELETE from table_nmae where 条件;
?注解:
|---如果不使用where字句,将删除表中所有数据
|---delete数据不能删除某列的值,如果将删除某列的值,则需要使用update语句。
|---delete语句仅是删除表的数据,但不删除表本身,drop语句删除表本身
|---truncate table table_name 删除表中的所有记录,但表结构还在。操作速度快,不可回滚。
4、SELECT语句
---语法:
SELECT [DISTINCT] *|{column1,column2,column3,....}
FROM table_name
?注解:
|---尽量返回较少的列,不要轻易使用*
|---nvl()函数用于处理null的问题,基本用法nvl(comm,o)
|---||在查询时,如果希望把多列拼接起来,作为一列返回
面试题:希望删除用户,同时保留该用户的数据对象
|-(1)锁定该用户
alter user scott account lock;
|-(2)这时该用户不能登陆数据库,但是system用户依然可以使用它的数据
对象
|-(3)解锁命令
alter user scott account unlock;
查找数据:
数据库的作用:存储数据,管理数据
表是粗存储数据的媒介
管理数据:insert uodate delete select(仅对视图和表有作用)
删除数据:delete drop truncate
delete:清楚数据
drop:三种的清除
truncate:清楚数据和空间
插入数据的语法:
insert into 表名(字段序列)values (字段序列的对应的值);
注:该字段必须包含非空字段
insert into 表名 values(所有字段)
更改数据的语法
uodate 表名 set 字段一= 字段值,字段二= 字段值,字段n= 字段值;
注意:不带where语句修改的是整张表。
查询语句的语法:
大小写区分问题:oracle引号里面大小写区分,引号外面大小写不区分。
原因:oracle引擎中,所有引号外面的都转换为大写在执行
注:oracle可以用双引号用来防止转译
单表查询:
where用于筛选
集合操作:
minus差集
例:(select * from emp where sal > 2000)
minus
(select * from emp where deptno = 20);
intersect交集
例:(select * from emp where sal > 2000)
intersect
(select * from emp where deptno = 20);
union(去重)/union all(不去重);
例:(select * from emp where sal > 2000)
union
(select * from emp where deptno = 20);
distinct去除重复
模糊查询:
like _代表单个字符
%代表任意个字符
例:
select * from emp where to_char(hiredate,'yyyy')like'%81';
不等于 != <>
例:
select * from emp where sal != 3000;
select * from emp where sal <> 3000;
between ..and..语句
select * from emp where sal between 1500 and 3000;
not between ...and ..语句
select * from emp where sal not between 1500 and 3000 or sal is null;
order by 语句
-- 默认为升序,降序 后面加desc
select * from emp order by sal;
gruop by 语句
select ename deptno avg(sal) from emp group by(ename,deptno);
!group by 后面根的字段必须包含所有的单值字段(不是集合函数列)
having字句:
select ename deptno avg(sal) from emp group by(ename,deptno) having avg(sal) > 1500;
?将空值转化为非空值:
nvl(参数一,参数二) 如果参数一为空返回参数二,如果为空则返回参数一
?为字段取别名
select emg as leader_emno from emp;
!一般情况下别名为单个字符
!不能为预定义字符
!查询关键字顺序:select * from * where * group by * having * order by *;
在Oracle中having子句必须有分组才能使用,
所以建议放在group by后面,order by前面。
虚拟列:表里不存在的列(该列通常为计算得出的或处理的列)
--- 语法:
INSERT INTO table_name(columnName1,columnName2,columnName3..) values (columnNameValue1,columnNameValue2,columnNameValue3..)
?注解:
|---插入数据的类型与字段的数据类型相同
|---数据的大小应在列的规定范围内
|---在values后加入的位置必须与列的排列位置一致
|---字符和日期类型应包含在单引号中。
|---插入空值,不指定域
|---如果给表的每一列添加值,可以不带列名。
2、UPDATE语句
---语法:
update table_name set column_name = exper [column_name = exper...]
where 条件
?注解:
|---SET字句指示哪些列值需要修改
3、DELETE语句
---语法
DELETE from table_nmae where 条件;
?注解:
|---如果不使用where字句,将删除表中所有数据
|---delete数据不能删除某列的值,如果将删除某列的值,则需要使用update语句。
|---delete语句仅是删除表的数据,但不删除表本身,drop语句删除表本身
|---truncate table table_name 删除表中的所有记录,但表结构还在。操作速度快,不可回滚。
4、SELECT语句
---语法:
SELECT [DISTINCT] *|{column1,column2,column3,....}
FROM table_name
?注解:
|---尽量返回较少的列,不要轻易使用*
|---nvl()函数用于处理null的问题,基本用法nvl(comm,o)
|---||在查询时,如果希望把多列拼接起来,作为一列返回
面试题:希望删除用户,同时保留该用户的数据对象
|-(1)锁定该用户
alter user scott account lock;
|-(2)这时该用户不能登陆数据库,但是system用户依然可以使用它的数据
对象
|-(3)解锁命令
alter user scott account unlock;
查找数据:
数据库的作用:存储数据,管理数据
表是粗存储数据的媒介
管理数据:insert uodate delete select(仅对视图和表有作用)
删除数据:delete drop truncate
delete:清楚数据
drop:三种的清除
truncate:清楚数据和空间
插入数据的语法:
insert into 表名(字段序列)values (字段序列的对应的值);
注:该字段必须包含非空字段
insert into 表名 values(所有字段)
更改数据的语法
uodate 表名 set 字段一= 字段值,字段二= 字段值,字段n= 字段值;
注意:不带where语句修改的是整张表。
查询语句的语法:
大小写区分问题:oracle引号里面大小写区分,引号外面大小写不区分。
原因:oracle引擎中,所有引号外面的都转换为大写在执行
注:oracle可以用双引号用来防止转译
单表查询:
where用于筛选
集合操作:
minus差集
例:(select * from emp where sal > 2000)
minus
(select * from emp where deptno = 20);
intersect交集
例:(select * from emp where sal > 2000)
intersect
(select * from emp where deptno = 20);
union(去重)/union all(不去重);
例:(select * from emp where sal > 2000)
union
(select * from emp where deptno = 20);
distinct去除重复
模糊查询:
like _代表单个字符
%代表任意个字符
例:
select * from emp where to_char(hiredate,'yyyy')like'%81';
不等于 != <>
例:
select * from emp where sal != 3000;
select * from emp where sal <> 3000;
between ..and..语句
select * from emp where sal between 1500 and 3000;
not between ...and ..语句
select * from emp where sal not between 1500 and 3000 or sal is null;
order by 语句
-- 默认为升序,降序 后面加desc
select * from emp order by sal;
gruop by 语句
select ename deptno avg(sal) from emp group by(ename,deptno);
!group by 后面根的字段必须包含所有的单值字段(不是集合函数列)
having字句:
select ename deptno avg(sal) from emp group by(ename,deptno) having avg(sal) > 1500;
?将空值转化为非空值:
nvl(参数一,参数二) 如果参数一为空返回参数二,如果为空则返回参数一
?为字段取别名
select emg as leader_emno from emp;
!一般情况下别名为单个字符
!不能为预定义字符
!查询关键字顺序:select * from * where * group by * having * order by *;
在Oracle中having子句必须有分组才能使用,
所以建议放在group by后面,order by前面。
虚拟列:表里不存在的列(该列通常为计算得出的或处理的列)