亚信实习第三周(7.24-7.30)

来源:互联网 发布:淘宝牛仔裤哪家好 知乎 编辑:程序博客网 时间:2024/04/30 05:26

亚信第三周,这周刘伟,李昌伟俩人也辞职了,醉了,在我身边陪我吃饭的人一个个都辞职了 。心好累,周五的时候只能一个人吃饭了。  我是不是有毒,陪我吃饭的人都走了。

这周依旧很闲,感觉没怎么学就过去了,没什么新进展,别人都在忙着搞框架里的task和tf,但我不是和他们一个班的,进度比较慢,不考试,所以我不用担心。 一直在看数据模型这个东西。看了三天,卵子都没看出来。终于知道在学校的时候,为啥老万到后面让我们不停的设计数据库了。 麻蛋,看了中国移动的数据模型,我才知道关系数据库原来这么复杂。中国移动的数据库里面有几百张表,每张表里几十个字段,想要得到什么数据,可以,自己去连接数据库去。我看了三天都没看出个门路来,哎。真的心累。 

其余的收获的话,额,大概就是这几天每天晚上结束之后都主动的找大叔或者胖哥聊聊天。混的输了,以后就好意思问问题了,嘿嘿。人际关系可是非常重要的。 自己还下了个王者荣耀,下周中午就可以陪师傅一起王者荣耀了,混熟了以后好干活嘛。

其余感觉就没啥了,奥,对了,我还学会了eclipse的debug,调试程序以后就更加迅速了。师傅还给了我去年他学linux和oracle的文档,不得不说在命令行下写东西还是蛮帅的。非常有成就感。还自己写了一个dos脚本,用来帮我迅速的切换内外网。 不然每次都需要自己去手工修改。现在只用  cmd--->  call  c:\nei c:\wai 就可以迅速切换了。还学了些oracle的sqlplus命令,序列,触发器的简单实用知识。  

下周的话,除了每天晚上加班培训,老大周一说要给我们考核一下,看我们的demo的健壮性,逻辑性,以及表的合理性。所以周末这两天我都在公司待着,自己改代码,希望周一考核的时候自己能表现的好一点,别让老大觉得我太菜了(只要不是觉得我特别菜就行了 嘻嘻)。  不过感觉公司也是蛮不错的。有空调有水,凳子也舒服,不像寝室那样,天昏地暗、日月无光,每天不开灯他妈的连个光都看不到。哎,真害怕哪天就自己发霉了。 希望抓紧时间老大给我们布置一点简单的任务,不然每天都在这里晃悠着没个目标自己想到哪儿学到哪儿太没目标了,效率很低。就这样吧。加油加油,为了将来,每天学习吧!

分割线后面的就是平常的笔记了,以后自己看看。

*******************************************************************************************************************************************

连接数据库  conn/as sysdba  以数据库管理员身份连接数据库

          conn  然后输入用户名 密码

 

                    sys   系统管理员 最高权限

                    system 本地管理员  次高权限

创建新用户方法:  conn/as sysdba

                                   createuser username(你想要的用户名) identified by password

(你想设置的密码)

 

给用户授权 :

          grant createsession  to 用户名;

                  create table

                  createtablespace

                  create createview

                  create table

                  drop table

                  insert、update。

                  all 

 

创建表空间  example:

createtablespace StudentInfo

datafile‘S:/oracle_table_space/StudentInfo.dbf’

size 10M

autoextendon next 5M maxsize 1000M;

删除表空间  drop tablespace StudentInfo includingcontents and datafiles

 

查询数据库中所有表空间   select tablespace_name from dba_tablespaces;

 

显示某个表的结构:   DESC  表名    DESC即describe(描述);

 

修改表结构 altertable 表名 add/modify   (列名  类型 限定);

插入表记录 Insertinto 表名 values (       );

删除表记录 deletefrom 表名 where 条件;

删除表中的所有记录  truncate table  表明;

创建表时指定所属的表空间方法:  在create语句最后的括号外 添加 tablespace表空间名。

这种方式。

 

show user; 查看当前登录的用户       

 

spool  d:\test.txt;  将屏幕显示及查询结果输入到指定文本文件中

操作~~~

spool off;  此次输出会覆盖之前test中的文本内容.

 

sqlplus 登录之后,可以使用buff(缓存)来存储/执行/修改要执行的sql语句

   这里的buff的特点:

      1.buff中只能存储一条sql语句(但是这条sql语句可能有很多行)

      2.每次放入新的sql语句,会把之前的覆盖掉

      3.每次执行sql语句,都会把这个sql语句放到buff里面

 

          l   查看缓存中的sql语句

   然后输入想要定位的行号(数字) 定位到该行  然后就可以执行以下命令:

 

          a   在[定位]的那一行后面追加新的内容

          i   在[定位]的那一行下面插入新的一行

          c   替换[定位]的那一行中的某些字符串

                  c/老的字符串/新的字符串

          del 删除[定位]的那一行内容

          n   后面加内容可以重写这一行

          !   后面接终端命令 !clear:清屏 windows中使用$符号 例如:$cls

          /   执行缓存sql命令

 

          clear buffer:清空当前缓存的命令

 

                 

          save  test.sql buff中的sql语句保存在test.sql文件中

          get   test.sql 把test.sql中的内容在加载到buff中,但是没有运行

          start test.sql  把test.sql中的内容在加载到buff中并且执行

          @test.sql       把test.sql中的内容在加载到buff中并且执行

          edit file_name  使用系统默认编辑器去编辑文件

         

  注意:单引号和双引号内大小写敏感 非常重要!!!!

关键字不能缩写,也不能跨行书写,单引号内也不跨行写。

每个子句是一行。

字符串用单引,列别名用双引。

标点符号要用英文标点,中文出错。

 

column

 

column是sqlplus里最实用的一个命令,很多时候sql语句输出的列宽度不合适而影响查看,都需要用到这个命令来更改select语句中指定列的宽度和标题。大部分时候,我们可以简写column为col即可,主要有以下两种用法:

 

修改列宽度

    column c1 format a20          --将列c1(字符型)显示最大宽度调整为20个字符

    column c1 format 9999999--将列c1(num型)显示最大宽度调整为7个字符

修改列标题

column c1 heading c2      --将c1的列名输出为c2

column 显示所有对列格式的设置情况

         columnlast_name 显示对last_name列显示设置的情况

         columnlast_name clear 删除对last_name列格式设置的情况

         Clearcolumn 清除所有column的格式设置

        

         ColumncolumName

         可以显示该列的格式设置,这里的列并不特定于某个表.

 

类型转换函数

           TO_CHAR converts a number or date string to acharacter string.

      TO_NUMBER converts a character stringcontaining digits to a number.

   TO_DATE converts a character string of a date to a date value.

           

 

           to_char 把日期转换为字符

 

             例如:

                  把当前日期按照指定格式转换为字符串 

                  selectto_char(sysdate,'yyyy')

                  fromdual;

                 

                    日期格式:

                    yyyy:四位数的年份

                    rrrr:四位数的年份

                    yy:两位数的年份

                    rr:两位数的年份

                    mm:两位数的月份(数字)

                    D:一周的星期几

                    DD:一月的第几天

                    DDD :一年的第几天

                    YEAR:英文的年份

                    MONTH:英文全称的月份

                    mon:英文简写的月份

                    ddsp:英文的第几天(一个月的)

                    ddspth:英文序列数的第几天(一个月的)

                    DAY:全英文的星期

                    DY:简写的英文星期

                    hh:小时

                    mi:分钟

                    ss:秒

 

                  例如:

                  测试常见的一些日期数据转换为字符串的格式

                  selectto_char(sysdate,'yyyy MM D DD DDD YEAR MONTH ddsp ddspth DAY DY') from dual;

 

                  selectto_char(sysdate,'dd-mm-yy')

                  fromdual;

 

                  selectto_char(sysdate,'yy-mm-dd')

                  fromdual;

 

                  selectto_char(sysdate,'dd-mm-yy HH24:MI:SS AM')

                  fromdual;

类型转换函数

           TO_CHAR converts a number or date string to acharacter string.

      TO_NUMBER converts a character stringcontaining digits to a number.

   TO_DATE converts a character string of a date to a date value.

          

 

           to_char 把日期转换为字符

 

             例如:

                  把当前日期按照指定格式转换为字符串 

                  selectto_char(sysdate,'yyyy')

                  fromdual;

                 

                    日期格式:

                    yyyy:四位数的年份

                    rrrr:四位数的年份

                    yy:两位数的年份

                    rr:两位数的年份

                    mm:两位数的月份(数字)

                    D:一周的星期几

                    DD:一月的第几天

                    DDD :一年的第几天

                    YEAR:英文的年份

                    MONTH:英文全称的月份

                    mon:英文简写的月份

                    ddsp:英文的第几天(一个月的)

                    ddspth:英文序列数的第几天(一个月的)

                    DAY:全英文的星期

                    DY:简写的英文星期

                    hh:小时

                    mi:分钟

                    ss:秒

 

                  例如:

                  测试常见的一些日期数据转换为字符串的格式

                  selectto_char(sysdate,'yyyy MM D DD DDD YEAR MONTH ddsp ddspth DAY DY') from dual;

 

                  selectto_char(sysdate,'dd-mm-yy')

                  fromdual;

 

                  selectto_char(sysdate,'yy-mm-dd')

                  fromdual;

 

                  selectto_char(sysdate,'dd-mm-yy HH24:MI:SS AM')

                  fromdual;

 

select to_char(sysdate,’yyyy mm dd’) fromdual;        

 

不等值连接

                  假设数据库中还有一张工资等级表:salgrade

                  工资等级表salgrade:

                          gradeName列表示等级名称

                          losal        列表示这个级别的最低工资数

                          hisal    列表示这个级别的最高工资数

 

                  表中的数据类似于下面内容:

                  id  salgrade   losalhisal

                  1  初级程序员   2000 4000

                  2  中级程序员   4000 6000

                 

                  例如:

                  查询出员工的名字、职位、工资、工资等级名称9

                  SELECT  e.last_name, e.title, e.salray, s.gradeName

                  FROM    s_emp e, salgrade s

                  WHERE   e.salray BETWEEN s.losal AND s.hisal

 

左外连接   以左为主全部显示,即便右边的表无匹配

select *

from a left outer join b

where a.~=b.~

 

右外连接  相反 right outer join

全连接   full outer join    顾名思义

 

自连接

 

 

执行多条连续插入的语句.

insert all into class values('CS0701','计算机科学与技术07-01班','信息管理学院',2007,null)

  into class values('CS0702','计算机科学与技术07-02班','信息管理学院',2007,null)

  into class values('IS0701','信息管理与信息系统07-01班','信息管理学院',2007,null)

  into class values('IS0801','信息管理与信息系统08-01班','信息管理学院',2008,null)

  into class values('CP0801','注册会计08_01班','会计学院',2008,null)

  into class values('CP0802','注册会计08_02班','会计学院',2008,null)

  into class values('CP0803','注册会计08_03班','会计学院',2008,null)

  into class values('ER0701','金融管理07-01班','金融学院',2007,null)

  into class values('CS0801','计算机科学与技术08-01班','信息管理学院',2008,null)

select * from dual;

 

修改表的某列的结构的时候:

 alter table tablename modify(列名  新基础属性);

例如  alter table Class modify( classnamevarchar(100));

 

 

运行时参数

         sql语句中的值,我们可以使用一个参数来代替,然后每次运行的时候都可以重新输入这个值

        

         例如:

         selectlast_name,salary,dept_id

         froms_emp

         whereid=&id;

 

         selectlast_name,salary,dept_id

         froms_emp

         wherelast_name=&name;

        

         selectlast_name,salary,dept_id

         froms_emp

         wherelast_name='&name';

 

         selectlast_name,salary,dept_id

         froms_emp

         where

         salary>&a

         and

         salary<&b;

 

         selectlast_name,salary,dept_id

         froms_emp

         where&con;

 

         selectlast_name,salary,dept_id

         froms_emp

         &con;

 

         注意:&变量名 表示使用这个oracle定义的变量,如果这个变量之前没有定义过,那么这个时候会让你重写输入这个变量的值.如果之前有定义过,那么就是要之前定义过的值

        

define undefined  accept  prompt命令

         例如:

         命令def可以定义一个变量

         定义变量:                def A=s_emp

         查看定义的变量:  def

         取消定义的变量:  undef A

 

         然后变量A之前定义过,那么这里会之前替换为之前定义的值

         selectid,last_name,salary

         from&A;

 

         accept命令也可以定义一个变量,而且变量的值需要用户再次输入

         例如:

         acceptA

         回车之前需要用户再次输入变量A的值

         之后可以使用def命令来查看刚刚定义的A变量

 

         prompt可以在用户输入的时候显示一个提示信息:

         例如:

         acceptname prompt '请输入name变量的值: '

 

         hide可以隐藏用户的输入内容不被看见

         例如:

         acceptname prompt '请输入name变量的值: ' hide

 

 

         注意:这些定义的都是临时变量,sqlplus退出后重新登录进来就没有了

 

序列的简单使用方法:

1.创建表

create table test(

id number(3) primary key,

name varchar2(30) not null

)

#查看约束

select * from user_constraints;

 

2.创建序列

create sequence test_seq  

start with 1

increment by 1;

#查看序列

select *

from user_sequences;

 

3.创建触发器

create or replace trigger test_trigger

before insert on test

for each row

when(new.id is null)

begin

 select t_user_id_seq.nextval into:NEW.ID from dual;

end;

#查看触发器

select * from user_triggers;

 

#测试

insert into test values(null,’lyf’);

commit;

 

select * from test;