常用分组函数、单行函数、基础语句、表结构、表数据操作SQL语句

Sql语句含义备注
DESC EMP;查询表结构EMP为表名
SELECT table_name FROM user_tables;查看当前用户下的所有表的名字
select*from emp;查询emp表中的所有记录
DELETE FROM 表名称 WHERE 列名称 = 值DELETE 语句用于删除表中的行。DELETE FROM Person WHERE LastName = 'Wilson' 
DELETE  FROM table_name where id=1删除id为1 的记录
DELETE  FROM table_name所有表记录删除
drop table subject;删除表subject
select Ename,job from emp;查询ename和job这两个字段的值(列)
SELECT DISTINCT 列名称 FROM 表名称去除查询出来的重复值DISTINCT只能在select后边,去重的时候,要在一整行记录都重复的情况下才会去重,否则打破数据对应关系
select id*2 as id2 from emp查询id*2的值显示为id2as也可以用空格代替,给表取别名的时候只能用空格

eg:--查询编号  姓名  年薪  月薪   日薪   
select EMPNO AS 编号, ENAME AS 姓名,SAL*12 AS 年薪,SAL as 月薪,SAL/30 AS 日薪 from EMP; 
||拼接字符串select '编号:'|| empno ||'姓名:'|| ename ||'月薪'||sal 描述
from emp ;
ORDER BY 用于对结果集进行排序。select  * from emp order by id  DESC   按照ID降序排序                       
  ASC是升序(默认)
DESC是降序,
当定义两个字段排序时,会优先拍好第一个字段,然后第一个字段相同时,才会把第二个字段按照第二个条件来排序
is noll、is not null判断null
=  null判断值是否为null
a>200 and     c  <300  或者 between 200 and 300范围查询【闭区间】
IN(10,20,30)取10,20或者30
NOT IN(10,20)不取10或20
like模糊查询
%  表示任意个任意字符
_  (下划线)表示一个任意字符
select * from emp where job like '%S%';      包含S的
select * from emp where job like '_S%';        第二个字符为S的
select * from emp where job like 'S%';       以S开头的
select * from emp where job like '%S';      以S结尾的
SELECT table_name FROM user_tables;查看当前用户下的所有表的名字
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值Update 语句用于修改表中的数据。update emp SET  sal=400 where empno=7369;
NVL(列,数值)

NVL(列,'文本')

------------------------

NVL2(expr1,expr2,expr3) 

如果这个之值为空,则替换为数值

如果这个之值为空,则替换为文本

-------------------------------------------

如果expr1为null,返回expr3,如果expr1不为null,则返回expre2

select sal+nvl(comm,0) as 工资 from emp;

---------------------------------------------------------------------------------------






多表关联查询

(原则:外键=主键)[查出所有的满足条件的字段]      先做笛卡尔积,再笛卡尔积的结果中进行删选

单行函数

字符函数upper(str)把str变为大写
lower(str)把str变为小写
initcap(str)把str首字母变大写
replace(str,f,s)把f换为s
length(str)长度
substr(str,index1,index2)截取    左闭右开区间
substr(str,3)截取3到结尾
substr(str,-3)截取后三位
ASCII('a')获取字符ASCII码
CHAR(100)把ASCII码转化为字符
Ltrim(str)去除str左边空白
trim(str)去除str两边空白字符
Rtrim(str)去除str右边空白
LPAD填充       select LPAD('cc',10,'*')          用*代替cc左边不足10位的字符
RPAD填充       select RPAD('cc',10,'*')          用*代替cc右边边不足10位的字符
instr(‘hello’,‘ll’)返回ll在hello中的索引
concat    和    ||拼接
数值型函数round(1.234)四舍五入保留整数
round(1.234,2)四舍五入保留2位小数
trunc(1.23)直接舍弃小数
trunc(1.23,2)保留两位小数截取
MOD(10,3)10/3的余数(取模运算)
Ceil(45.67)向上取整
Floor(45.56)向下取整
日期函数systimestamp获取当前时间
add_months(sysdate,3)在sysdate日期之后3个月的日期
add_months(sysdate,-3)在sysdate日期之前3个月的日期
next_day(sysdate,'Sunday')下一个星期天的日期
last_day(sysdate)返回本月最后一天
Months_between(sysdate,hiredate)返回两个日期的月差
extract(year from sysdate)从sysdate中获取年份
extract(month from sysdate)从sysdate中获取月份
extract(day from sysdate)从sysdate中获取天
extract(hour from systimestamp)从sysdate中获取时
extract(minute from systimestamp)从sysdate中获取分
extract(second from systimestamp)从sysdate中获取秒
SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM dual;查询当前系统时间,要求显示年月日时分秒
SELECT to_date('1997-01-01','yyyy-mm-dd')
 FROM dual;
将字符串转为日期
to_timestamp(‘2018-12-12 12:3:4’,‘yyyy-mm-dd  hh24:mi:ss’)格式化时间格式(字符串转日期)
SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM dual;查询当前系统时间,要求显示年月日时分秒
SELECT to_date('1997-01-01','yyyy-mm-dd')
FROM dual;
'1997-01-01':是一个字符串,能否转换成时间?
转换函数SELECT to_char(123456.789,'99999999.9999')
FROM dual;
SELECT to_char(123456.789,'00000000.0000')
 FROM dual;
SELECT to_char(123456.789,'99,999,999.9999')
 FROM dual;
SELECT to_char(123456.789,'$99,999,999.9999')
 FROM dual;
SELECT to_char(123456.789,'L99,999,999.9999')
FROM dual;
转化为相应的格式,9会在位数不够填充0,0会
to_char(sysdate,‘yyyy-mm-dd  hh24:mi:ss’)将日期格式转化为字符串
to_char(1234567,'999,999,999,999')将格式转化为货币格式,如果为9则不会补0,0则会
to_number('8')将字符8转换为数字
通用函数NVL2(comm,comm,0)如果comm不为null,则取第二个,如果为null,取第三个
NVL(comm,0)将comm为null的值替换为0
NULLIF(1,1)判断两个值是否相等,相等返回null,不相等返回表达式1
decode(表达式1,参数值1,结果1,参数2,结果2);当表达式1的值与参数值相等的时候,返回参数后对应的结果
coalesce(表达式1,表达式2,表达式3)如果表达式1为null,则取表达式2,如果表达式2也是null,则取表达式3,……,如果都为null,则最终结果null
分组函数
count(*)求出全部记录数目(统计某个字段的数目,把*换为字段名)
sum(字段)把摸个字段的所有值相加
avg(字段)平均值
MAX(字段)最大值
Min(字段)最小值
where是在分组前对行进行筛选,后边不能跟分组函数

集合函数(聚合函数)

UNION:并集,包含两个结果集全部的结果,重复的只保留一份,
 会按照结果集第一列排序升序排序
   SELECT first_name,id
FROM s_emp
WHERE id<15
UNION
SELECT first_name,id
FROM s_emp
WHERE id>5;
UNION ALL把两个结果集的结果加起来,不会排序,不会去重SELECT first_name,id
FROM s_emp
WHERE id<15
UNION ALL
SELECT first_name,id
FROM s_emp
WHERE id>5
INTERSECT:交集取两个结果集中都有的结果,会排序,去重SELECT first_name,id
FROM s_emp
WHERE id<15
INTERSECT
SELECT first_name,id
FROM s_emp
WHERE id>5;
MINUS:减,第一个结果集减去(第一个和第二个同时都有的),会去重,排序SELECT first_name,id
FROM s_emp
WHERE id<15
MINUS
SELECT first_name,id
FROM s_emp
WHERE id>5;
rownum列号,代表结果集中的行号
 是一个伪列
 可以用来实现分页
 注意:结果集中的行号永远从1开始
  rownum条件只要不是从1开始,就是没有结果的


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                                    表结构操作
                       表记录操作

————------------— ———————  表结构————————————————


desc student;//查询student表的结构

修改表的名字:RENAME student TO newstudent;

新增列:ALTER TABLE student ADD (phone varchar2(20));

删除列:ALTER TABLE student DROP(phone);

修改列:ALTER TABLE student MODIFY(age number(4)DEFAULT 0);

DEFAULT 用于设置默认值

★添加约束:
ALTER table student ADD constraint user_email_uk UNIQUE(email);
★删除约束:
alter table 约束基于的表名  drop constraint 约束名
★更改表名:
ALTER TABLE 表名 MODIFY(字段名 更改的内容)  【字段名和要改的内容,不改的字段不用写】
EG:alter table student MODIFY(name varchar2(20) not null);
-----------------------表记录————————————————————————————————————————————————————————

修改表数据:update  student set sex='女' where id=2;
删除某条记录:delete from student where id=2;
清空记录:delete from student;
新增记录:insert into student(id,NAME,age,sex) VALUES(2,'文丑',34,'男');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔡定努

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值