sql初步分类DML数据操纵语言(sqlselect)

文章目录

1.sql初步

分类

DML 数据操作语言

插入更新删除选择

DDL 数据定义语言

创建改变滴

DCL 数据控制语言

授予

基本 sql-select 语句

空值是无效、未指定、未知或不可预测的值,空值不是空格或包含空值的数学表达式的值为空

连接器 ||

将列连接到列,将列连接到字符

细绳

日期和字符只能出现在单引号中

删除重复行

使用不同的

sql语句和sql plus命令

SQL是一种语言,ANSI标准,关键字不能缩写,语句用于控制数据库中表的定义信息和表中的数据。

sql plus是环境,Oracle的特点之一,关键字可以缩写,命令不能改变数据库中数据的值,集中运行。

你可以使用 sql plus

eg:   select job form jobs where job  like 'it_%'  escape '';

无效的

使用 is(not) null 判断空值

种类

降序 desc 按别名对多列进行排序

2.单行功能

select * from employees where LOWER(last_name) ='higgins'

字符控制功能

concat(‘hello’,’world’) 字符串拼接,结果为helloworld

substr(‘helloworld’,1,4) 字符串截取结果是地狱

LENGTH(‘helloworld’) 获取字符串长度 10

instr(‘helloworld’,’w’) 获取 w 第一次出现的下标 6

lpad(salary,10,”) 左对齐 24000

rpad(salary,10,”) 右对齐 2400

trim(‘h’, from ‘helloworld’) 去掉两边的 horacle数据库字母大小写,helloworld

reolace(‘abcd’,’b’,’m’) 将 b 替换为 m, amcd

数值函数

round() 回合

trunc() 截断

mod() 余数

日期

oracle中的日期数据实际上包含两个值:日期和时间

months_between() 两个日期之间的月数

add_months() 为指定日期添加月份数

next_day() 指定日期的下一周 * 对应的日期

last_day() 一个月的最后一天

round() 循环日期

trunc() 日期截断

使用 to_char 函数进行日期转换

to_char(日期,’format_model’)

格式:

eg:  select to_char(sysdate,'yyyy-mm-dd') from dual;

通过 to_date 函数转换字符

to_date(char,’format_model’)

to_char 函数转换数字

to_char(数字,格式模型)

以下是to_char函数中经常用到的几种格式

9 –> 数字 0 –> 零 $ –> 美元符号 L –> 当地货币符号

. –> 小数点,–> 千位字符

to_number 函数转换字符

通用功能

这些函数适用于任何数据类型,也适用于空值

nvl(expr1, expr2) 如果 expr1 为空则返回 expr2

nvl2(expr1, expr2, expr3) 如果 expr1 为空,返回 expr2,否则返回 expr3

nullif(expr1, expr2) 等于返回 null,不等于返回 expr1

coalesce(expr1,expr2,exprn) 如果第一个表达式为空,则返回下一个表达式并合并其他参数

案例表达

case expr 当 compare_expr1 然后 return_expr1

否则 else_expr

结尾

eg:
select last_name,job_id, case job_id when 'a' then 111
                                                           when 'b' then 222
                                                           else 333 end
  from employees;

解码功能

解码(列|表达式,搜索1,结果1,

搜索2,结果2,

默认)

eg:
select last_name decode(job_id,'a',111
                                                    'b',222,
                                                        333)
   from employees;

3.多表查询

内连接和外连接

内连接:将两个或多个表的行合并到同一列,结果集中不包含与一个表不匹配的行。

外连接:两个表在连接过程中除了返回满足条件的行外,还会返回左(或右)表中不满足条件的行。这种连接称为左(或右)外连接。当没有匹配的行时,结果表中的对应列为空(null)。

外连接语法

右外连接

select column from table1,table2 where table1.column(+)=table2.column
左外连接
select column from table1,table2 where table1.column=table2.column(+)

自然联系

自然连接子句在两个表中的同名列上创建一个等连接条件。

使用 using 子句创建连接

在自然连接子句中创建等值连接时,可以使用 using 子句指定等值连接中要使用的列。

select column from employees join departments using(department_id);

使用 on 子句创建多表连接

select cloumn from table1 join table2 on table1.column=table2.column

4.群组功能

按有条件的字段分组

5.子查询

子查询的结果被主查询使用

用括号括起来的子查询

将子查询放在比较条件的右侧

单行运算符对应单行子查询,多行运算符对应多行子查询

6.创建和管理表

表名和列名的命名规则

----表名
----列名,数据类型,尺寸

数据类型

数据类型描述

varchar2(大小)

变长字符数据

字符(大小)

定长字符数据

数量(p,s)

变长数值数据

日期

日期数据

变长字符数据,最大2g

字符数据,最大4g

生(长生)

原始二进制数据

斑点

二进制数据,最大 4g

文件

存储外部文件的二进制数据,最大4g

行号

线路地址

使用子查询创建表

图片[1]-sql初步分类DML数据操纵语言(sqlselect)-唐朝资源网

create table emp1 as select * from employees;

更改表语句

使用 alter table 语句

追加一个新列
alter table 表名
add (job_id varchar2(8)):
修改一个列
alter table 表名
modify (job_id varchar2(8)):
删除一个列
alter table 表名
drop column job_id;
重命名一个列
alter table 表名
rename column job_id to id;
删除表
drop table 表名
清空表
truncate table 表名;
改变对象的名称
rename dept to detail_dept;

7.数据处理

DML数据操作语言,可以在以下条件下执行

insert into 表名 (column...) values (val...)
从其他表中拷贝数据
insert into 表名(字段1,字段2)
select 字段1,字段2 from 表名

更新数据

update 表名  set  要更新的字段  where  条件

删除数据

delete from 表名 where 条件

数据库事务

事务:一组逻辑操作单元,使数据从一种状态变为另一种状态。

提交和回滚语句的优点

使用提交和回滚语句,我们可以

savepoint  update_done
rollback to update_done

8.约束

什么是约束

约束是表级别的强制性约定

有以下五个约束

last_name varchar2(23) constraint emp_email_uk unique 

constraint  emp_email_uk unique(email)

外键约束

constraint emp_dept_fk foreign key (department_id) references(department_id)

on delete cascade 级联删除,当父表中的列被删除时,子表中对应的列也被删除

on delete set null 级联空,子表对应列为空

检查约束

sal number(8,2) check(sal>0 and sal <100000)

添加约束的语法

使用 alter table 语句:

添加约束举例
alter table 表名
add constraint 约束名  foreign key(manage_id)
references employees(employee_id);
添加not null 约束
alter table emp modify(empname varchar2(50) not null);
删除约束
alter table employees 
drop constraint emp_manage_fk;
无效化约束
alter table employees
disable constraint emp_emp_id_pk;
激活约束
alter table employees
enable constraint emp_emp_id_pk;

9.观看次数

常用数据库对象

表(数据存储的基本集合,由行和列组成)。

视图(从表中提取的逻辑相关的数据集合)

序列(提供常规数值)

索引(提高查询效率)

同义词(别名对象)

看法

视图是一个虚拟表

视图基于现有表,构建视图的表称为基表

给视图提供数据内容的语句就是select语句,视图可以理解为存储的select语句

视图为用户提供了基表数据的另一种表示形式

创建视图

create  view empview
as
select column from emp

修改视图

create or replace view empview
as

select column from emp

阻止 DML 操作

可以使用 with read only 选项阻止对视图的 DML 操作

create or replace view emp (字段1...) as select 字段1... from 表名 with read only

删除视图

drop view 视图名

top-n 分析

top-n分析查询一列中最大或最小的n个值。您只能对 rownum 使用 < 或 >= 并且不会返回任何数据。

10.其他数据库对象

创建、维护和使用序列

创建和维护索引

创建同义词

什么是序列

序列,可供多个用户使用以生成唯一值的数据库对象

create sequence dept_deptid_seq
                  increment by 10
                  start with 120
                  maxvalue 9999
                  nocache
                  nocycle

nextval 和 currval 伪列

nextval 返回序列中的下一个有效值,任何用户都可以引用

序列的当前值存储在 currval

nextval 应在 currval 之前指定,否则会引发错误oracle数据库字母大小写,表明 currval 尚未在此会话中定义。

修改顺序

alter sequence dept_deptid_seq
                  increment by 10
                  start with 120
                  maxvalue 9999
                  nocache
                  nocycle

删除序列

drop sequence 序列名

指数

创建索引

create index emp_last_name_idx 
         on  employee(last_name);

何时创建索引

create synonym d_sum for dept_sum_vu;
drop synonym d_sum;

© 版权声明
THE END
喜欢就支持一下吧
点赞83赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容