十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
sqlserver。
创新互联公司-专业网站定制、快速模板网站建设、高性价比微山网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式微山网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖微山地区。费用合理售后完善,10年实体公司更值得信赖。
selectleft(name,1)+'**'fromtable或者selectsubstring(name,1,1)+'**'fromtable这个*不会自动按剩余数量拼接的,如果你想达到那个效果估计要写个函数了。
rpad:右侧填补字符,填补长度为NAME长度,使用'*'填充空位oracle,其他数据库不好用尝试使用substring代替substr,、len代替length。
select
case
when
regexp_like(字段名,'.([a-z]+|[A-Z])')
then
'包含字母'
else
'不包含字母'
end
from
表名字
正则表达式函数:regexp_like
关键的参数是第二个:'.([a-z]+|[A-Z])'其中.表示匹配任何单字符,换行符除外
[a-z]是小写字母|或[A-Z]大写字母。
编程注意事项:
1、程序不仅需要给计算机读
,
也要给程序员读。
程序设计风格的原则
,
代码应该清楚的和简单的
,
具有直截了当的逻辑
,
自然的表达式
,
通行的语言使用方式
,
有意义的名字和帮助作用和注释。
2、自定义类型名以大写字母开头,各单词之间以大写字母分隔,如
CallType
(即骆驼式命
名法)
。
变量名以小写字母开头,
各单词之间以大写字母
分隔
(变量活动范围前缀以下划线
分隔)
,如
m_pReleaseIn。函数名以大写字母开头,各单词之间以大写字母分隔(进程、进
程页及子函数前缀以下划
线分隔)
,如
Sub_ErrorDealing。
3、命名宏定义时,表示最大个数时定义为
XXX_MAX_NUM(如最大子节点个数可用
SNODE_MAX_NUM表示)
,表示最大取值时定义为
XXX_MAX(如
PT
板
E1的最大取值
可用
PT_E1_MAX表示)
。定义最小个数时定义为
XXX_MIN_NUM,定义最小取值时定义
为
XXX_MIN。
(以防止下标使用时难以分辨是否需要减
1)
首先ORACLE不是把列名默认转换为大写状态,而是ORACLE中存储的就是大写状态,也就是说你不特别加引号来标明的话,ORACLE会默认为大写。所以要让ORACLE查询出来是小写,不需要任何设置,只需要创建表的时候就写成是小写,
SQL
create
table
aa("id"
number,
"Name"
varchar2(10))
;
表已创建。
SQL
select
*
from
aa
;
未选定行
SQL
insert
into
aa
values(1,'WANG')
;
已创建
1
行。
SQL
select
*
from
aa
;
id
Name
----------
----------
1
WANG
学习时整理的 Oracle 1、set linesize 100; 设置长度
2、set pagesize 30; 设置每页显示数目
3、em a.sql 打开记事本
4、@ a 执行文件a中的代码,可指定文件的路径 @d:a.txt
5、conn 用户名/密码 根据用户名和密码连接数据库 如果连接超级管理员(sys) 则应加上as sysdba;
6、show user; 显示当前连接的用户
7、select * from tab; 得到当前用户下的所有表
8、desc temp; 查看表结构
9、/ 继续执行上一个查询语句
clear scr; 清屏字符函数
10、select upper('coolszy') from dual; 将小写字母转换成大写,dual 为一虚表
11、select lower('KUKA') from dual; 将大写字母转换成小写
12、select initcap('kuka') from dual; 将首字母大写
13、select concat('Hello',' world') from dual; 连接字符串,但没有||好用select concat('Hello','world') from dual;
14、select substr('hello',1,3) from dual; 截取字符串
15、select length('hello') from dual; 求字符串长度
16、select replace('hello','l','x') from dual; 替换字符串
17、select substr('hello',-3,3) from dual; 截取后三位数值函数
18、select round(789.536) from dual; 四舍五入,舍去小数
19、select round(789.536,2) from dual; 保留两位小数
20、select round(789.536,-1) from dual; 对整数进行四舍五入
21、select trunc(789.536) from dual; 舍去小数,但不进位
22、select trunc(789.536,2) from dual;
23、select trunc(789.536,-2) from dual;
24、select mod(10,3) from dual; 返回10%3的结果日期函数
25、select sysdate from dual; 返回当前日期
26、select months_between(sysdate,'16-6月 -08') from dual; 返回之间的月数
27、select add_months(sysdate,4) from dual; 在日期上加上月数
28、select next_day(sysdate,'星期一') from dual; 求下一个星期一
29、select last_day(sysdate) from dual; 求本月的最后一天
转换函数
30、select to_char(sysdate,'yyyy') year,to_char(sysdate,'mm'),to_char(sysdate,'dd') from dual;
31、select to_char(sysdate,'yyyy-mm-dd') from dual;
32、select to_char(sysdate,'fmyyyy-mm-dd') from dual; 取消月 日 前面的0
33、select to_char('20394','99,999') from dual; 分割钱 9表示格式
34、select to_char('2034','L99,999') from dual; 加上钱币符号
35、select to_number('123')*to_number('2') from dual;
36、select to_date('1988-07-04','yyyy-mm-dd') from dual; 通用函数
37、select nvl(null,0) from dual; 如果为null,则用0代替
38、select decode(1,1,'内容是1',2,'内容是2',3,'内容是3') from dual; 类似于 switch...case...事务处理
39、commit; 提交事务
40、rollback; 回滚事务
41、select rownum from table; 在没一列前面显示行号
42、drop table 表名 cascade constraint
on delete casecade 当父表中的内容被删除后,子表中的内容也被删除43、desc表名 显示表的结构
44、create user [username] identified by [password] 创建新的用户
45、grant 权限1、权限2...to 用户 给创建用户权限
ex:grant create session to [username] 此时只能连接到数据库
grant connect,resource to [username] 此时权限能满足要求
46、alter user [username] identified by [password] 修改用户密码
47、alter user [username] password expired 下次登录时提示修改密码
48、alter user [username] account lock 锁住用户
49、alter user [username] account unlock 解锁锁用户
50、grant select,delete on scott.emp to [username] 把scott下emp表的两个权限给用户
51、revoke select ,delete on scott.emo from [username] 回收权限
Oracle单表的复杂查询
select avg(sal) max(sal) deptnofrom empgroupby deptno;
select avg(sal) max(sal) deptnofrom empgroupby deptnohavingavg(sal) orderby deptno;
查询工资高于 或者是岗位为MANAGER的雇员 同时还要满足他们的姓名首字母为大写的J?
select *from empwhere (sal or job= manager )and enamelike J% ;
按照部门号升序而雇员的工资降序排列
select *from emporderby deptnoasc saldesc ;
select (sal+nvl(m ))* assum enamefrom emporderbysum;
求最高工资和最低工资
selectmax(sal) min(sal)from emp ;
查询最高工资员工的名字 工作岗位
select ename salfrom empwhere (selectmax(sal)from emp )=sal;
显示工资高于平均工资的员工信息
select *from empwhere sal(selectavg(sal)from emp);
group by 和 having子句
group by用于对查询的结果分组统计
having子句用于限制分组显示结果
如何显示每个部门的平均工资和最高工资
selectavg(sal) max(sal) deptnofrom empgroupby deptno;
显示每个部门的每种岗位的平均工资和最低工资?
selectavg(sal) max(sal) min(sal) deptno jobfrom empgroupby deptno job;
显示平均工资低于 的部门号和它的平均工资?
selectavg(sal) max(sal) deptnofrom empgroupby deptnohavingavg(sal) orderby deptno;
对数据分组的总结
分组函数只能出现在选择列表 having order by子句中(不能出现在where中)
如果在select语句中同时包含有group by having order by那么它们的顺序是group by having order by
在选择列中如果有列 表达式和分组函数 那么这些列和表达式必须有一个出现在group by子句中 否则就会出错
如
lishixinzhi/Article/program/Oracle/201311/18634