oracle学习笔记(1)

  1 //创建用户,用户名是test,密码是test,此时的用户不具有任何权限
  2 create user test identified by test;
  3 //分配基本权限,由system或者sys来授权
  4 grant connect to test;
  5 grant resource to test;
  6 //修改用户口令
  7 alter user test identified by pwd;--这种可以修改所有用户的
  8 //删除用户
  9 deop user test;
 10 //基本操作
 11 //1.显示所有表
 12 select * from tab;
 13 //查看系统时间
 14 select sysdate from dual;
 15 //查看当前用户
 16 select user form dual;/show user;
 17 //查看表结构
 18 desc test;
 19 //连接用户
 20 conn test/test;
 21 //退出
 22 exit/quit
 23 
 24 
 25 
 26 
 27 //数据类型
 28 char 
 29 nchar
 30 varchar2
 31 nvarchar2
 32 raw
 33 number
 34 binary_float
 35 binary_double
 36 long
 37 long_row
 38 date
 39 timestamp
 40 blob
 41 clob
 42 nclob
 43 
 44 //创建表
 45 create table test(
 46 id int,
 47 name varchar2(20)
 48 );
 49 //删除表
 50 drop table test;
 51 
 52 //alter修改
 53 //向表中插入新字段
 54 alter table test add(字段1 类型,字段2 类型……);
 55 //修改表中字段(对类型修改)
 56 alter table test modify(字段1 类型,字段2 类型……);
 57 //删除表中字段
 58 alter table test dorp (字段1 类型,字段2 类型……);
 59 //修改表中字段
 60 alter table test rename column PSWD to PSWD1;
 61 //修改表的名称
 62 rename test to test1;
 63 
 64 
 65 
 66 //employee员工表,有基本信息,员工号、姓名、部门号
 67 //department部门表,有部门号,部门名称,部门所在地
 68 //project项目表,有项目号,项目名称,项目预算
 69 //works_on具体工作表,有参加的员工号,项目名称,具体的工作职位,参加项目时间
 70 
 71 //创建表
 72 create table employee(
 73 emp_no number not null,
 74 emp_fname varchar2(20) not null,
 75 emp_lname varchar2(20) not null,
 76 dept_no varchar2(4)
 77 );
 78 //插入数据
 79 insert into employee values(25348,Mattew ,Smith,d3);
 80 insert into employee values(10102,Ann ,Jones,d3);
 81 insert into employee values(18316,John ,Barrimore,d1);
 82 insert into employee values(29346,James ,James,d2);
 83 insert into employee values(9031,Elsa, Bertoni,d2);
 84 insert into employee values(2581,Elke, Hansel,d2);
 85 insert into employee values(28559,Syhill, Moser,d1);
 86 
 87 
 88 create table department(
 89 dept_no varchar2(4) not null,
 90 dept_name varchar2(25) not null,
 91 location varchar2(30)
 92 );
 93 //插入数据
 94 insert into department values(d1,research,Dallas);
 95 insert into department values(d2,accounting,Seattle);
 96 insert into department values(d3,marketing,Dallas);
 97 
 98 create table project(
 99 project_no varchar2(4) not null,
100 project_name varchar2(15) not null,
101 budget number(10,2)
102 );
103 //插入数据
104 insert into project values(p1,Apollo,120000.00);
105 insert into project values(p2,Gemini,95000.00);
106 insert into project values(p3,Mercury,186500.00);
107 
108 create table works_on(
109 emp_no number not null,
110 project_no varchar2(4) not null,
111 job varchar2(15),
112 enter_date date
113 );
114 //插入数据
115 insert into works_on values(10102,p1,analyst,to_date(1997.10.1,yyyy.mm.dd));
116 insert into works_on values(10102,p3,manager,to_date(1999.1.1,yyyy.mm.dd));
117 insert into works_on values(25348,p2,clerk,to_date(1998.2.15,yyyy.mm.dd));
118 insert into works_on values(18316,p2,null,to_date(1998.6.1,yyyy.mm.dd));
119 insert into works_on values(2581,p3,analyst,to_date(1998.10.15,yyyy.mm.dd));
120 insert into works_on values(9031,p1,null,to_date(1998.10.1,yyyy.mm.dd));
121 insert into works_on values(9031,p3,clerk,to_date(1997.11.15,yyyy.mm.dd));
122 insert into works_on values(29346,p1,clerk,to_date(1997.1.4,yyyy.mm.dd));
123 
124 
125 
126 //使用算术表达式
127 select last_name,salary,salary+300 from employees;
128 
129 //操作符优先级
130 select last_name,salary,12*salary+300 from employees;
131 
132 //使用圆括号
133 select last_name,salary,12*(salary+300) from employees;
134 
135 //计算成绩
136 select studentname , chinese+maths+english as result from studentResult;
137 
138 //定义nul值
139 Null表示不可用、未知的、没有赋值的、不适合的值!
140 Null不是0也不是空格!
141 select last_name,job_id,salary,commission_pct from employees;
142 
143 //使用连接操作运算
144 select last_name || job_id as "Employees" from employess; 
145 //使用字母字符
146 select last_name || is a || job_id as "Employee Details" from employees;
147 
148 //过滤重复行
149 select distinct department_id from employees;
150 
151 //显示表结构
152 desc employees;
153 
154 //字符函数
155 upper(str) ,转为大写
156 lower(str),转为小写
157 substr(str,n,m),从n位开始,截取m个字符
158 substr(str,n),从n位开始,截取后面字符
159 length(str),得到字符串的长度
160 
161 ltrim(str),去掉左边空格
162 rtrim(str),去掉右边空格
163 instr(str,c),得到字符c在str的位置
164 lpad(str,n,c),将str补足为n位长度,不足左边用字符c代替
165 rpad(str,n,c),将str补足为n位长度,不足右边以字符c代替
166 
167 //字符函数例子
168 --不区分大小写查询
169 select emp_code,emp_name from emp;
170 --去掉空格
171 select rtrim (ltrim(emp_code)) from emp;
172 
173 //数值函数
174 round(col,n),四舍五入
175 round(457.628,2) ==>457.63
176 round(457.628,-1) ==>460
177 trunc(col,n),截取数值
178 trunc(457.628,2) ==>457.62
179 trunc(457.628,-1) ==>450
180 
181 //日期函数
182 months_between(date1,date2) ==>两个日期间的月数
183 add_months(date,m) ==>增加m个月,m可以是负数,意为减少m个月
184 trunc,截断日期
185 last_day,当月最后一天
186 
187 //日期函数例子
188 --当前日期增加1个月
189 select add_months(sysdate,1) from duai;
190 --去年同月
191 select add(sysdate,-12) from dual;
192 --得到年初
193 select trunc(sysdate,YYYY) from dual;
194 --得到月初
195 select trunc(sysdate,MM) from dual;
196 --精确到天,截断小时分秒
197 select trunc(sysdate) from dual;
198 --当月最后一天
199 select last_day(sysdate) from dual;
200 
201 
202 
203 //转换函数
204 //日期转为字符
205 to_char(date1,format_model)
206 format_model:转换后的显示格式
207 YYYY年,MM月,DD日,HH24小时,MI分,SS秒
208 select to_char(sysdate,YYYY-MM-DD HH24:MI:SS) rq from dual;
209 
210 //字符转为日期
211 to_date(2007-11-11,YYYY-MM-DD)
212 //数值转为字符
213 select to_char(55676,fm99,999.0) from dual;--fm表示去掉前面的空格和0,==》55,676.00
214 
215 ASC:升序,默认的
216 DESC:降序
217 
218 
219 //聚合函数
220 count(*)  返回所有行记录数
221 count(列名) 返回表达式非null的行记录数
222 min(列名) 返回表达式最小值
223 max(列名) 返回表达式最大值
224 sum(列名) 返回表达式的总和
225 avg(列名) 返回表达式的平均值
226 --参数的数据类型:char,varchar2,number,date
227 
228 select count(*) from employees;
229 select count(job) from works_on;
230 select count(distinct job) from works_on;
231 select min(emp_no) from employees;
232 select max(emp_no) from employees;
233 select sum(budget) from project;
234 select avg(budget) from project;
235 
236 //分组查询
237 select depy_no min(emp_no) 最小员工编号 from employees
238 group by dept_no;
239 //每一个项目的总人数
240 selecy project_no ,count(*) 总人数 from works_on 
241 group by project_no;
242 
243 //多表查询
244 select e.emp_no from employees e;
245 //笛卡尔积
246 select * from employees , department;

oracle学习笔记(1),古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。