安装sql之前怎么删除挂起

技术文章admin 发表了文章 • 0 个评论 • 117 次浏览 • 2018-04-28 14:58 • 来自相关话题

1)添加/删除程序中彻底删除sql server。 2)将没有删除的sql server目录也删除掉。 3)打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目,并删除它。这样就可以清除安装暂挂项目。 4)删除注册表中跟sql server相关的键。 ? ? 将以下两个从注册表中删除,一定可以解决SQL挂起问题: 一、开始\运行\输入regedit回车 +HKEY_LOCAL_MACHINE +SYSTEM +CurrentControlSet +Control +Session Manager下的FileRenameOperations删掉 二、+HKEY_LOCAL_MACHINE +SOFTWARE +Microsoft +Windows +CurrentVersion +Setup +ExceptionComponents下的东西全部删掉如: {077ACEC7-979C-40AB-9835-435BA1511E0D} {30C7234B-6482-4A55-A11D-ECD9030313F2} {3FDF25EE-E592-4495-8391-6E9C504DAC2B} {60204BB3-7078-4F70-8F69-68297621941C}...... 总之有几项,就删几项,删掉后重启,再装SQL Server ? ? 3、清除注册表中有关的信息: 进入注册表的命令是:regedit 将HKEY_CURRENT_USER-->Software-->Microsoft-->Microsoft SQL Server删除 还有:HKEY_LOCAL_MACHINE-->Software-->Microsoft-->Microsoft SQL Server删除 4、到安装SQL Server 2005的目录下将整个文件夹删除。C:\Program Files\Microsoft SQL Server 最后重启一下就可以了。 这个比较彻底,至少我重装数据库就是这样做的……
  查看全部

1)添加/删除程序中彻底删除sql server。 2)将没有删除的sql server目录也删除掉。 3)打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目,并删除它。这样就可以清除安装暂挂项目。 4)删除注册表中跟sql server相关的键。 ? ? 将以下两个从注册表中删除,一定可以解决SQL挂起问题: 一、开始\运行\输入regedit回车 +HKEY_LOCAL_MACHINE +SYSTEM +CurrentControlSet +Control +Session Manager下的FileRenameOperations删掉 二、+HKEY_LOCAL_MACHINE +SOFTWARE +Microsoft +Windows +CurrentVersion +Setup +ExceptionComponents下的东西全部删掉如: {077ACEC7-979C-40AB-9835-435BA1511E0D} {30C7234B-6482-4A55-A11D-ECD9030313F2} {3FDF25EE-E592-4495-8391-6E9C504DAC2B} {60204BB3-7078-4F70-8F69-68297621941C}...... 总之有几项,就删几项,删掉后重启,再装SQL Server ? ? 3、清除注册表中有关的信息: 进入注册表的命令是:regedit 将HKEY_CURRENT_USER-->Software-->Microsoft-->Microsoft SQL Server删除 还有:HKEY_LOCAL_MACHINE-->Software-->Microsoft-->Microsoft SQL Server删除 4、到安装SQL Server 2005的目录下将整个文件夹删除。C:\Program Files\Microsoft SQL Server 最后重启一下就可以了。 这个比较彻底,至少我重装数据库就是这样做的……
 

ORA-28547:连接服务器失败,可能是Oracle Net管理错误

技术文章admin 发表了文章 • 0 个评论 • 123 次浏览 • 2018-04-28 09:45 • 来自相关话题

*1). 绑定你的IP地址,别让其动态获取!

 *2). 修改oracle的网络配置文件,具体做法是:在oracle安装目录下搜索sqlnet.ora文件,一般在$\NETWORK\ADMIN目录下, 
用记事本打开把文件中的一行:  
SQLNET_AUTHENTICATION_SERVICES= (NTS)  
修改为:  
SQLNET_AUTHENTICATION_SERVICES= (NONE) 

--*3).同时修改监听器配置文件,具体做法是: 在oracle安装目录下搜索listener.ora文件,一般在$\NETWORK\ADMIN目录下,把主机名用ip地址代替,例如(ADDRESS = (PROTOCOL = TCP)(HOST = HBONLINE1)(PORT = 1523))改为(ADDRESS = (PROTOCOL = TCP)(HOST = 168.168.168.42)(PORT = 1523))。


 

Oracle数据库服务器IP变动出现以上问题(具体原因还不明确)

1、把服务改为固定IP

2、). 修改sqlnet.ora文件,一般在$\NETWORK\ADMIN目录下, 
用记事本打开把文件中的一行:  
SQLNET_AUTHENTICATION_SERVICES= (NTS)  
修改为:  
SQLNET_AUTHENTICATION_SERVICES= (NONE) 

 

SQLNET_AUTHENTICATION_SERVICES值的含义参考:

http://blog.csdn.net/ppp_10001 ... 45802 查看全部
*1). 绑定你的IP地址,别让其动态获取!

 *2). 修改oracle的网络配置文件,具体做法是:在oracle安装目录下搜索sqlnet.ora文件,一般在$\NETWORK\ADMIN目录下, 
用记事本打开把文件中的一行:  
SQLNET_AUTHENTICATION_SERVICES= (NTS)  
修改为:  
SQLNET_AUTHENTICATION_SERVICES= (NONE) 

--*3).同时修改监听器配置文件,具体做法是: 在oracle安装目录下搜索listener.ora文件,一般在$\NETWORK\ADMIN目录下,把主机名用ip地址代替,例如(ADDRESS = (PROTOCOL = TCP)(HOST = HBONLINE1)(PORT = 1523))改为(ADDRESS = (PROTOCOL = TCP)(HOST = 168.168.168.42)(PORT = 1523))。


 

Oracle数据库服务器IP变动出现以上问题(具体原因还不明确)

1、把服务改为固定IP

2、). 修改sqlnet.ora文件,一般在$\NETWORK\ADMIN目录下, 
用记事本打开把文件中的一行:  
SQLNET_AUTHENTICATION_SERVICES= (NTS)  
修改为:  
SQLNET_AUTHENTICATION_SERVICES= (NONE) 

 

SQLNET_AUTHENTICATION_SERVICES值的含义参考:

http://blog.csdn.net/ppp_10001 ... 45802

SQLNET.AUTHENTICATION_SERVICES

技术文章admin 发表了文章 • 0 个评论 • 104 次浏览 • 2018-04-28 09:41 • 来自相关话题

$ORACLE_HOME/network/admin/sqlnet.ora

 

如果使用了SQLNET.AUTHENTICATION_SERVICES=(NTS)
则说明可以使用OS认证就,只要conn / as sysdba 就可以登陆
但如果注释掉或SQLNET.AUTHENTICATION_SERVICES=(none)
必须要使用conn sys/password@oracle as sysdba才能登陆

1、在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者 ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。
2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为ALL,或者不设置的情况下,OS验证才能成功;设置为 其他任何值都不能使用OS认证。

 

 

 

我们看看ORACLE对这个设置是怎么解释的:
SQLNET.AUTHENTICATION_SERVICES
Purpose

Use the parameter SQLNET.AUTHENTICATION_SERVICES to enable one or more authentication services. If authentication has been installed, it is recommended that this parameter be set to either none or to one of the authentication methods.
Default
None

Values
Authentication Methods Available with Oracle Net Services:

* none for no authentication methods. A valid username and password can be used to access the database.
* all for all authentication methods
* nts for Windows NT native authentication

Windows NT native authentication

An authentication method that enables a client single login access to a Windows NT server and a database running on the server. 查看全部
$ORACLE_HOME/network/admin/sqlnet.ora

 

如果使用了SQLNET.AUTHENTICATION_SERVICES=(NTS)
则说明可以使用OS认证就,只要conn / as sysdba 就可以登陆
但如果注释掉或SQLNET.AUTHENTICATION_SERVICES=(none)
必须要使用conn sys/password@oracle as sysdba才能登陆

1、在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者 ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。
2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为ALL,或者不设置的情况下,OS验证才能成功;设置为 其他任何值都不能使用OS认证。

 

 

 

我们看看ORACLE对这个设置是怎么解释的:
SQLNET.AUTHENTICATION_SERVICES
Purpose

Use the parameter SQLNET.AUTHENTICATION_SERVICES to enable one or more authentication services. If authentication has been installed, it is recommended that this parameter be set to either none or to one of the authentication methods.
Default
None

Values
Authentication Methods Available with Oracle Net Services:

* none for no authentication methods. A valid username and password can be used to access the database.
* all for all authentication methods
* nts for Windows NT native authentication

Windows NT native authentication

An authentication method that enables a client single login access to a Windows NT server and a database running on the server.

无监听

技术文章admin 发表了文章 • 0 个评论 • 120 次浏览 • 2018-04-28 09:35 • 来自相关话题

昨天我在一台win7笔记本中安装了oracle11g,然后打算用另一个win10的笔记本使用plsql developer局域网内连接访问oracle数据库。但是遇到ORA-12541:TNS:无监听程序的错误。

首先我看了一下win7中的以下的两个服务是开启。 


解决方案: 
1.首先查看win7的ip地址,并用win10ping通才可以。

2.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora 
SID_NAME = CLRExtProc 改为 SID_NAME = orcl (orcl是实例名) 
HOST = localhost 改为 HOST = 192.168.1.111

3.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora 
两处 HOST = localhost 改为 HOST = 192.168.1.111 
SID = CLRExtProc 改为 SID = orcl

4.好了,重启oracle的上边的两个服务 查看全部
昨天我在一台win7笔记本中安装了oracle11g,然后打算用另一个win10的笔记本使用plsql developer局域网内连接访问oracle数据库。但是遇到ORA-12541:TNS:无监听程序的错误。

首先我看了一下win7中的以下的两个服务是开启。 


解决方案: 
1.首先查看win7的ip地址,并用win10ping通才可以。

2.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora 
SID_NAME = CLRExtProc 改为 SID_NAME = orcl (orcl是实例名) 
HOST = localhost 改为 HOST = 192.168.1.111

3.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora 
两处 HOST = localhost 改为 HOST = 192.168.1.111 
SID = CLRExtProc 改为 SID = orcl

4.好了,重启oracle的上边的两个服务

ORACL 常用查询

技术文章admin 发表了文章 • 0 个评论 • 119 次浏览 • 2018-04-28 09:16 • 来自相关话题

--查看用户和默认表空间的关系
select username,default_tablespace from dba_users;
--查看当前用户能访问的表
select * from user_tables; 
--Oracle查询用户表
select * from user_all_tables;

--Oracle查询用户视图
select * from user_views;
--查询所有函数和储存过程:
select * from user_source;
--查询所有用户:
select * from all_users;
--select * from dba_users
--查看当前用户连接:
select * from v$Session;
--查看用户角色
SELECT * FROM USER_ROLE_PRIVS;
--查看当前用户权限:
select * from session_privs;
--查看所有用户所拥有的角色
SELECT * FROM DBA_ROLE_PRIVS;
--查看所有角色
select * from dba_roles;
--查看数据库名
SELECT NAME FROM V$DATABASE;
--查看所有表空间使用情况
select a.file_id "FileNo",
       a.tablespace_name "Tablespace_name",
       a.bytes "Bytes",
       a.bytes - sum(nvl(b.bytes, 0)) "Used",
       sum(nvl(b.bytes, 0)) "Free",
       sum(nvl(b.bytes, 0)) / a.bytes * 100 "%free"
  from dba_data_files a, dba_free_space b
 where a.file_id = b.file_id(+)
 group by a.tablespace_name, a.file_id, a.bytes
 order by a.tablespace_name; 查看全部

--查看用户和默认表空间的关系
select username,default_tablespace from dba_users;
--查看当前用户能访问的表
select * from user_tables; 
--Oracle查询用户表
select * from user_all_tables;

--Oracle查询用户视图
select * from user_views;
--查询所有函数和储存过程:
select * from user_source;
--查询所有用户:
select * from all_users;
--select * from dba_users
--查看当前用户连接:
select * from v$Session;
--查看用户角色
SELECT * FROM USER_ROLE_PRIVS;
--查看当前用户权限:
select * from session_privs;
--查看所有用户所拥有的角色
SELECT * FROM DBA_ROLE_PRIVS;
--查看所有角色
select * from dba_roles;
--查看数据库名
SELECT NAME FROM V$DATABASE;
--查看所有表空间使用情况
select a.file_id "FileNo",
       a.tablespace_name "Tablespace_name",
       a.bytes "Bytes",
       a.bytes - sum(nvl(b.bytes, 0)) "Used",
       sum(nvl(b.bytes, 0)) "Free",
       sum(nvl(b.bytes, 0)) / a.bytes * 100 "%free"
  from dba_data_files a, dba_free_space b
 where a.file_id = b.file_id(+)
 group by a.tablespace_name, a.file_id, a.bytes
 order by a.tablespace_name;

oracle 11g 导入表时 提示 ***值太大拒绝执行的错误 修改字符集

技术文章admin 发表了文章 • 0 个评论 • 125 次浏览 • 2018-04-28 09:05 • 来自相关话题

经查询,这个是由于字符集设置的不是gbk的,导致导入时遇到中文字符出现的问题,

1.打开cmd

2.输入sqlplus

3.登录管理员账号:用户名/密码 as sysdba

4.查看版本号:select userenv('language') from dual;  注意带上分好

查询字符集结果有可能是AL32UTF8

更改字符集为ZHS16GBK

cmd命令

SQL> sqlplus /nolog;
SQL> conn /as sysdba;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system enable restricted session;
SQL> alter system set JOB_QUEUE_PROCESSES=0;
SQL> alter system set AQ_TM_PROCESSES=0;
SQL> alter database open;

SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

SQL>shutdown immediate;

SQL>startup;
SQL>alter system disable restricted session; 查看全部
经查询,这个是由于字符集设置的不是gbk的,导致导入时遇到中文字符出现的问题,

1.打开cmd

2.输入sqlplus

3.登录管理员账号:用户名/密码 as sysdba

4.查看版本号:select userenv('language') from dual;  注意带上分好

查询字符集结果有可能是AL32UTF8

更改字符集为ZHS16GBK

cmd命令

SQL> sqlplus /nolog;
SQL> conn /as sysdba;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system enable restricted session;
SQL> alter system set JOB_QUEUE_PROCESSES=0;
SQL> alter system set AQ_TM_PROCESSES=0;
SQL> alter database open;

SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

SQL>shutdown immediate;

SQL>startup;
SQL>alter system disable restricted session;

ORACLE日期时间函数大全

技术文章admin 发表了文章 • 0 个评论 • 110 次浏览 • 2018-04-26 20:27 • 来自相关话题

   TO_DATE格式(以时间:2007-11-02   13:45:25为例)
   
        Year:      
        yy two digits 两位年                显示值:07
        yyy three digits 三位年                显示值:007
        yyyy four digits 四位年                显示值:2007
            
        Month:      
        mm    number     两位月              显示值:11
        mon    abbreviated 字符集表示          显示值:11月,若是英文版,显示nov     
        month spelled out 字符集表示          显示值:11月,若是英文版,显示november 
          
        Day:      
        dd    number         当月第几天        显示值:02
        ddd    number         当年第几天        显示值:02
        dy    abbreviated 当周第几天简写    显示值:星期五,若是英文版,显示fri
        day    spelled out   当周第几天全写    显示值:星期五,若是英文版,显示friday        
        ddspth spelled out, ordinal twelfth 
             
              Hour:
              hh    two digits 12小时进制            显示值:01
              hh24 two digits 24小时进制            显示值:13
              
              Minute:
              mi    two digits 60进制                显示值:45
              
              Second:
              ss    two digits 60进制                显示值:25
              
              其它
              Q     digit         季度                  显示值:4
              WW    digit         当年第几周            显示值:44
              W    digit          当月第几周            显示值:1
              
        24小时格式下时间范围为: 0:00:00 - 23:59:59....      
        12小时格式下时间范围为: 1:00:00 - 12:59:59 .... 
            
1. 日期和字符转换函数用法(to_date,to_char)
         
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //日期转化为字符串   
select to_char(sysdate,'yyyy') as nowYear   from dual;   //获取时间的年   
select to_char(sysdate,'mm')    as nowMonth from dual;   //获取时间的月   
select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日   
select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时   
select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分   
select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒

    
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')    from dual//

2.      
    select to_char( to_date(222,'J'),'Jsp') from dual      
    
    显示Two Hundred Twenty-Two    

3.求某天是星期几      
   select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;      
   星期一      
   select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;      
   monday      
   设置日期语言      
   ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';      
   也可以这样      
   TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')    

4. 两个日期间的天数      
    select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;    

5. 时间为null的用法      
   select id, active_date from table1      
   UNION      
   select 1, TO_DATE(null) from dual;      
   
   注意要用TO_DATE(null)    

6.月份差   
   a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')      
   那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。      
   所以,当时间需要精确的时候,觉得to_char还是必要的 
      
7. 日期格式冲突问题      
    输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01'      
    alter system set NLS_DATE_LANGUAGE = American      
    alter session set NLS_DATE_LANGUAGE = American      
    或者在to_date中写      
    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;      
    注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,      
    可查看      
    select * from nls_session_parameters      
    select * from V$NLS_PARAMETERS    

8.      
   select count(*)      
   from ( select rownum-1 rnum      
       from all_objects      
       where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-      
       02-01','yyyy-mm-dd')+1      
      )      
   where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )      
        not in ( '1', '7' )      
   
   查找2002-02-28至2002-02-01间除星期一和七的天数      
   在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).    

9. 查找月份     
    select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;      
    1      
   select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;      
    1.03225806451613 
       
10. Next_day的用法      
    Next_day(date, day)      
    
    Monday-Sunday, for format code DAY      
    Mon-Sun, for format code DY      
    1-7, for format code D    

11      
   select to_char(sysdate,'hh:mi:ss') TIME from all_objects      
   注意:第一条记录的TIME 与最后一行是一样的      
   可以建立一个函数来处理这个问题      
   create or replace function sys_date return date is      
   begin      
   return sysdate;      
   end;      
   
   select to_char(sys_date,'hh:mi:ss') from all_objects;   
     
12.获得小时数      
     extract()找出日期或间隔值的字段值
    SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer      
    SQL> select sysdate ,to_char(sysdate,'hh') from dual;      
    
    SYSDATE TO_CHAR(SYSDATE,'HH')      
    -------------------- ---------------------      
    2003-10-13 19:35:21 07      
    
    SQL> select sysdate ,to_char(sysdate,'hh24') from dual;      
    
    SYSDATE TO_CHAR(SYSDATE,'HH24')      
    -------------------- -----------------------      
    2003-10-13 19:35:21 19    

       
13.年月日的处理      
   select older_date,      
       newer_date,      
       years,      
       months,      
       abs(      
        trunc(      
         newer_date-      
         add_months( older_date,years*12+months )      
        )      
       ) days 
       
   from ( select      
        trunc(months_between( newer_date, older_date )/12) YEARS,      
        mod(trunc(months_between( newer_date, older_date )),12 ) MONTHS,      
        newer_date,      
        older_date      
        from ( 
              select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date      
              from emp 
             )      
      )    

14.处理月份天数不定的办法      
   select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual    

16.找出今年的天数      
   select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual    

   闰年的处理方法      
   to_char( last_day( to_date('02'    | | :year,'mmyyyy') ), 'dd' )      
   如果是28就不是闰年    

17.yyyy与rrrr的区别      
   'YYYY99 TO_C      
   ------- ----      
   yyyy 99 0099      
   rrrr 99 1999      
   yyyy 01 0001      
   rrrr 01 2001    

18.不同时区的处理      
   select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate      
   from dual;    

19.5秒钟一个间隔      
   Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')      
   from dual    

   2002-11-1 9:55:00 35786      
   SSSSS表示5位秒数    

20.一年的第几天      
   select TO_CHAR(SYSDATE,'DDD'),sysdate from dual
        
   310 2002-11-6 10:03:51    

21.计算小时,分,秒,毫秒      
    select      
     Days,      
     A,      
     TRUNC(A*24) Hours,      
     TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,      
     TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,      
     TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds      
    from      
    (      
     select      
     trunc(sysdate) Days,      
     sysdate - trunc(sysdate) A      
     from dual      
   )    


   select * from tabname      
   order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');      
   
   //      
   floor((date2-date1) /365) 作为年      
   floor((date2-date1, 365) /30) 作为月      
   d(mod(date2-date1, 365), 30)作为日.

23.next_day函数      返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日
   next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。      
   1 2 3 4 5 6 7      
   日 一 二 三 四 五 六    
   
   --------------------------------------------------------------- 
   
   select    (sysdate-to_date('2003-12-03 12:55:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60 from ddual
   日期 返回的是天 然后 转换为ss
     
24,round[舍入到最接近的日期](day:舍入到最接近的星期日)
   select sysdate S1,
   round(sysdate) S2 ,
   round(sysdate,'year') YEAR,
   round(sysdate,'month') MONTH ,
   round(sysdate,'day') DAY from dual

25,trunc[截断到最接近的日期,单位为天] ,返回的是日期类型
   select sysdate S1,                     
     trunc(sysdate) S2,                 //返回当前日期,无时分秒
     trunc(sysdate,'year') YEAR,        //返回当前年的1月1日,无时分秒
     trunc(sysdate,'month') MONTH ,     //返回当前月的1日,无时分秒
     trunc(sysdate,'day') DAY           //返回当前星期的星期天,无时分秒
   from dual

26,返回日期列表中最晚日期
   select greatest('01-1月-04','04-1月-04','10-2月-04') from dual

27.计算时间差
     注:oracle时间差是以天数为单位,所以换算成年月,日
     
      select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))/365) as spanYears from dual        //时间差-年
      select ceil(moths_between(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanMonths from dual        //时间差-月
      select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanDays from dual             //时间差-天
      select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24) as spanHours from dual         //时间差-时
      select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60) as spanMinutes from dual    //时间差-分
      select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from dual //时间差-秒

28.更新时间
     注:oracle时间加减是以天数为单位,设改变量为n,所以换算成年月,日
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n*365,'yyyy-mm-dd hh24:mi:ss') as newTime from dual        //改变时间-年
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),add_months(sysdate,n) as newTime from dual                                 //改变时间-月
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n,'yyyy-mm-dd hh24:mi:ss') as newTime from dual            //改变时间-日
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24,'yyyy-mm-dd hh24:mi:ss') as newTime from dual         //改变时间-时
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual      //改变时间-分
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual   //改变时间-秒

29.查找月的第一天,最后一天
     SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,
       Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,
       Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
       LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
   FROM dual;


三. 字符函数(可用于字面字符或数据库列)

1,字符串截取
   select substr('abcdef',1,3) from dual

2,查找子串位置
   select instr('abcfdgfdhd','fd') from dual

3,字符串连接
   select 'HELLO'||'hello world' from dual;

4, 1)去掉字符串中的空格
    select ltrim(' abc') s1,
    rtrim('zhang ') s2,
    trim(' zhang ') s3 from dual
   2)去掉前导和后缀
    select trim(leading 9 from 9998767999) s1,
    trim(trailing 9 from 9998767999) s2,
    trim(9 from 9998767999) s3 from dual;
   
5,返回字符串首字母的Ascii值
   select ascii('a') from dual

6,返回ascii值对应的字母
   select chr(97) from dual

7,计算字符串长度 
   select length('abcdef') from dual

8,initcap(首字母变大写) ,lower(变小写),upper(变大写)
   select lower('ABC') s1, 
       upper('def') s2, 
       initcap('efg') s3
   from dual;

9,Replace
   select replace('abc','b','xy') from dual;

10,translate
   select translate('abc','b','xx') from dual; -- x是1位

11,lpad [左添充] rpad [右填充](用于控制输出格式)
   select lpad('func',15,'=') s1, rpad('func',15,'-') s2 from dual;
   select lpad(dname,14,'=') from dept;

12, decode[实现if ..then 逻辑]   注:第一个是表达式,最后一个是不满足任何一个条件的值
   select deptno,decode(deptno,10,'1',20,'2',30,'3','其他') from dept;
   例:
   select seed,account_name,decode(seed,111,1000,200,2000,0) from t_userInfo//如果seed为111,则取1000;为200,取2000;其它取0
   select seed,account_name,decode(sign(seed-111),1,'big seed',-1,'little seed','equal seed') from t_userInfo//如果seed>111,则显示大;为200,则显示小;其它则显

示相等

13 case[实现switch ..case 逻辑]
    SELECT CASE X-FIELD 
         WHEN X-FIELD < 40 THEN 'X-FIELD 小于 40'
         WHEN X-FIELD < 50 THEN 'X-FIELD 小于 50'
         WHEN X-FIELD < 60 THEN 'X-FIELD 小于 60'
         ELSE 'UNBEKNOWN'
        END
   FROM DUAL 
   
   注:CASE语句在处理类似问题就显得非常灵活。当只是需要匹配少量数值时,用Decode更为简洁。

四.数字函数
1,取整函数(ceil 向上取整,floor 向下取整)
   select ceil(66.6) N1,floor(66.6) N2 from dual;

2, 取幂(power) 和 求平方根(sqrt)
   select power(3,2) N1,sqrt(9) N2 from dual;

3,求余
   select mod(9,5) from dual;

4,返回固定小数位数 (round:四舍五入,trunc:直接截断)
   select round(66.667,2) N1,trunc(66.667,2) N2 from dual;

5,返回值的符号(正数返回为1,负数为-1)
   select sign(-32),sign(293) from dual;

五.转换函数
1,to_char()[将日期和数字类型转换成字符类型]
   1) select to_char(sysdate) s1,
        to_char(sysdate,'yyyy-mm-dd') s2,
        to_char(sysdate,'yyyy') s3,
        to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') s4,
        to_char(sysdate, 'hh24:mi:ss') s5,
        to_char(sysdate,'DAY') s6 
    from dual;
   2) select sal,to_char(sal,'$99999') n1,to_char(sal,'$99,999') n2 from emp

2, to_date()[将字符类型转换为日期类型] 
    insert into emp(empno,hiredate) values(8000,to_date('2004-10-10','yyyy-mm-dd'));
   
3, to_number() 转换为数字类型 
    select to_number(to_char(sysdate,'hh12')) from dual; //以数字显示的小时数
   
六.其他函数
   1.user: 
    返回登录的用户名称 
    select user from dual;
    
   2.vsize: 
    返回表达式所需的字节数
    select vsize('HELLO') from dual;
   
   3.nvl(ex1,ex2):
    ex1值为空则返回ex2,否则返回该值本身ex1(常用) 
    例:如果雇员没有佣金,将显示0,否则显示佣金 
    select comm,nvl(comm,0) from emp;
   
   4.nullif(ex1,ex2): 
    值相等返空,否则返回第一个值
    例:如果工资和佣金相等,则显示空,否则显示工资
    select nullif(sal,comm),sal,comm from emp;
   
   5.coalesce:
    返回列表中第一个非空表达式
    select comm,sal,coalesce(comm,sal,sal*10) from emp;
   
   6.nvl2(ex1,ex2,ex3) :
    如果ex1不为空,显示ex2,否则显示ex3
    如:查看有佣金的雇员姓名以及他们的佣金 
      select nvl2(comm,ename,') as HaveCommName,comm from emp;
   
   
七.分组函数
max min avg count sum
1,整个结果集是一个组
   1) 求部门30 的最高工资,最低工资,平均工资,总人数,有工作的人数,工种数量及工资总和
     select max(ename),max(sal), 
     min(ename),min(sal),
     avg(sal),
     count(*) ,count(job),count(distinct(job)) ,
     sum(sal) from emp where deptno=30;
2, 带group by 和 having 的分组
   1)按部门分组求最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和
    select deptno, max(ename),max(sal),
    min(ename),min(sal),
    avg(sal),
    count(*) ,count(job),count(distinct(job)) ,
    sum(sal) from emp group by deptno;
   
   2)部门30的最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和 
    select deptno, max(ename),max(sal),
    min(ename),min(sal),
    avg(sal),
    count(*) ,count(job),count(distinct(job)) ,
    sum(sal) from emp group by deptno having deptno=30;
   
3, stddev 返回一组值的标准偏差
    select deptno,stddev(sal) from emp group by deptno;
    variance 返回一组值的方差差
    select deptno,variance(sal) from emp group by deptno;

4, 带有rollup和cube操作符的Group By
    rollup 按分组的第一个列进行统计和最后的小计
    cube 按分组的所有列的进行统计和最后的小计
    select deptno,job ,sum(sal) from emp group by deptno,job;
    select deptno,job ,sum(sal) from emp group by rollup(deptno,job); 
    cube 产生组内所有列的统计和最后的小计
    select deptno,job ,sum(sal) from emp group by cube(deptno,job);

八、临时表
   只在会话期间或在事务处理期间存在的表.
   临时表在插入数据时,动态分配空间 
   create global temporary table temp_dept
   (dno number,
   dname varchar2(10))
   on commit delete rows;
   insert into temp_dept values(10,'ABC');
   commit;
   select * from temp_dept; --无数据显示,数据自动清除
   on commit preserve rows:在会话期间表一直可以存在(保留数据)
   on commit delete rows:事务结束清除数据(在事务结束时自动删除表的数据) 查看全部


   TO_DATE格式(以时间:2007-11-02   13:45:25为例)
   
        Year:      
        yy two digits 两位年                显示值:07
        yyy three digits 三位年                显示值:007
        yyyy four digits 四位年                显示值:2007
            
        Month:      
        mm    number     两位月              显示值:11
        mon    abbreviated 字符集表示          显示值:11月,若是英文版,显示nov     
        month spelled out 字符集表示          显示值:11月,若是英文版,显示november 
          
        Day:      
        dd    number         当月第几天        显示值:02
        ddd    number         当年第几天        显示值:02
        dy    abbreviated 当周第几天简写    显示值:星期五,若是英文版,显示fri
        day    spelled out   当周第几天全写    显示值:星期五,若是英文版,显示friday        
        ddspth spelled out, ordinal twelfth 
             
              Hour:
              hh    two digits 12小时进制            显示值:01
              hh24 two digits 24小时进制            显示值:13
              
              Minute:
              mi    two digits 60进制                显示值:45
              
              Second:
              ss    two digits 60进制                显示值:25
              
              其它
              Q     digit         季度                  显示值:4
              WW    digit         当年第几周            显示值:44
              W    digit          当月第几周            显示值:1
              
        24小时格式下时间范围为: 0:00:00 - 23:59:59....      
        12小时格式下时间范围为: 1:00:00 - 12:59:59 .... 
            
1. 日期和字符转换函数用法(to_date,to_char)
         
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //日期转化为字符串   
select to_char(sysdate,'yyyy') as nowYear   from dual;   //获取时间的年   
select to_char(sysdate,'mm')    as nowMonth from dual;   //获取时间的月   
select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日   
select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时   
select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分   
select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒

    
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')    from dual//

2.      
    select to_char( to_date(222,'J'),'Jsp') from dual      
    
    显示Two Hundred Twenty-Two    

3.求某天是星期几      
   select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;      
   星期一      
   select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;      
   monday      
   设置日期语言      
   ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';      
   也可以这样      
   TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')    

4. 两个日期间的天数      
    select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;    

5. 时间为null的用法      
   select id, active_date from table1      
   UNION      
   select 1, TO_DATE(null) from dual;      
   
   注意要用TO_DATE(null)    

6.月份差   
   a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')      
   那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。      
   所以,当时间需要精确的时候,觉得to_char还是必要的 
      
7. 日期格式冲突问题      
    输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01'      
    alter system set NLS_DATE_LANGUAGE = American      
    alter session set NLS_DATE_LANGUAGE = American      
    或者在to_date中写      
    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;      
    注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,      
    可查看      
    select * from nls_session_parameters      
    select * from V$NLS_PARAMETERS    

8.      
   select count(*)      
   from ( select rownum-1 rnum      
       from all_objects      
       where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-      
       02-01','yyyy-mm-dd')+1      
      )      
   where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )      
        not in ( '1', '7' )      
   
   查找2002-02-28至2002-02-01间除星期一和七的天数      
   在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).    

9. 查找月份     
    select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;      
    1      
   select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;      
    1.03225806451613 
       
10. Next_day的用法      
    Next_day(date, day)      
    
    Monday-Sunday, for format code DAY      
    Mon-Sun, for format code DY      
    1-7, for format code D    

11      
   select to_char(sysdate,'hh:mi:ss') TIME from all_objects      
   注意:第一条记录的TIME 与最后一行是一样的      
   可以建立一个函数来处理这个问题      
   create or replace function sys_date return date is      
   begin      
   return sysdate;      
   end;      
   
   select to_char(sys_date,'hh:mi:ss') from all_objects;   
     
12.获得小时数      
     extract()找出日期或间隔值的字段值
    SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer      
    SQL> select sysdate ,to_char(sysdate,'hh') from dual;      
    
    SYSDATE TO_CHAR(SYSDATE,'HH')      
    -------------------- ---------------------      
    2003-10-13 19:35:21 07      
    
    SQL> select sysdate ,to_char(sysdate,'hh24') from dual;      
    
    SYSDATE TO_CHAR(SYSDATE,'HH24')      
    -------------------- -----------------------      
    2003-10-13 19:35:21 19    

       
13.年月日的处理      
   select older_date,      
       newer_date,      
       years,      
       months,      
       abs(      
        trunc(      
         newer_date-      
         add_months( older_date,years*12+months )      
        )      
       ) days 
       
   from ( select      
        trunc(months_between( newer_date, older_date )/12) YEARS,      
        mod(trunc(months_between( newer_date, older_date )),12 ) MONTHS,      
        newer_date,      
        older_date      
        from ( 
              select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date      
              from emp 
             )      
      )    

14.处理月份天数不定的办法      
   select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual    

16.找出今年的天数      
   select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual    

   闰年的处理方法      
   to_char( last_day( to_date('02'    | | :year,'mmyyyy') ), 'dd' )      
   如果是28就不是闰年    

17.yyyy与rrrr的区别      
   'YYYY99 TO_C      
   ------- ----      
   yyyy 99 0099      
   rrrr 99 1999      
   yyyy 01 0001      
   rrrr 01 2001    

18.不同时区的处理      
   select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate      
   from dual;    

19.5秒钟一个间隔      
   Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')      
   from dual    

   2002-11-1 9:55:00 35786      
   SSSSS表示5位秒数    

20.一年的第几天      
   select TO_CHAR(SYSDATE,'DDD'),sysdate from dual
        
   310 2002-11-6 10:03:51    

21.计算小时,分,秒,毫秒      
    select      
     Days,      
     A,      
     TRUNC(A*24) Hours,      
     TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,      
     TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,      
     TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds      
    from      
    (      
     select      
     trunc(sysdate) Days,      
     sysdate - trunc(sysdate) A      
     from dual      
   )    


   select * from tabname      
   order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');      
   
   //      
   floor((date2-date1) /365) 作为年      
   floor((date2-date1, 365) /30) 作为月      
   d(mod(date2-date1, 365), 30)作为日.

23.next_day函数      返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日
   next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。      
   1 2 3 4 5 6 7      
   日 一 二 三 四 五 六    
   
   --------------------------------------------------------------- 
   
   select    (sysdate-to_date('2003-12-03 12:55:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60 from ddual
   日期 返回的是天 然后 转换为ss
     
24,round[舍入到最接近的日期](day:舍入到最接近的星期日)
   select sysdate S1,
   round(sysdate) S2 ,
   round(sysdate,'year') YEAR,
   round(sysdate,'month') MONTH ,
   round(sysdate,'day') DAY from dual

25,trunc[截断到最接近的日期,单位为天] ,返回的是日期类型
   select sysdate S1,                     
     trunc(sysdate) S2,                 //返回当前日期,无时分秒
     trunc(sysdate,'year') YEAR,        //返回当前年的1月1日,无时分秒
     trunc(sysdate,'month') MONTH ,     //返回当前月的1日,无时分秒
     trunc(sysdate,'day') DAY           //返回当前星期的星期天,无时分秒
   from dual

26,返回日期列表中最晚日期
   select greatest('01-1月-04','04-1月-04','10-2月-04') from dual

27.计算时间差
     注:oracle时间差是以天数为单位,所以换算成年月,日
     
      select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))/365) as spanYears from dual        //时间差-年
      select ceil(moths_between(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanMonths from dual        //时间差-月
      select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanDays from dual             //时间差-天
      select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24) as spanHours from dual         //时间差-时
      select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60) as spanMinutes from dual    //时间差-分
      select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from dual //时间差-秒

28.更新时间
     注:oracle时间加减是以天数为单位,设改变量为n,所以换算成年月,日
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n*365,'yyyy-mm-dd hh24:mi:ss') as newTime from dual        //改变时间-年
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),add_months(sysdate,n) as newTime from dual                                 //改变时间-月
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n,'yyyy-mm-dd hh24:mi:ss') as newTime from dual            //改变时间-日
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24,'yyyy-mm-dd hh24:mi:ss') as newTime from dual         //改变时间-时
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual      //改变时间-分
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual   //改变时间-秒

29.查找月的第一天,最后一天
     SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,
       Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,
       Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
       LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
   FROM dual;


三. 字符函数(可用于字面字符或数据库列)

1,字符串截取
   select substr('abcdef',1,3) from dual

2,查找子串位置
   select instr('abcfdgfdhd','fd') from dual

3,字符串连接
   select 'HELLO'||'hello world' from dual;

4, 1)去掉字符串中的空格
    select ltrim(' abc') s1,
    rtrim('zhang ') s2,
    trim(' zhang ') s3 from dual
   2)去掉前导和后缀
    select trim(leading 9 from 9998767999) s1,
    trim(trailing 9 from 9998767999) s2,
    trim(9 from 9998767999) s3 from dual;
   
5,返回字符串首字母的Ascii值
   select ascii('a') from dual

6,返回ascii值对应的字母
   select chr(97) from dual

7,计算字符串长度 
   select length('abcdef') from dual

8,initcap(首字母变大写) ,lower(变小写),upper(变大写)
   select lower('ABC') s1, 
       upper('def') s2, 
       initcap('efg') s3
   from dual;

9,Replace
   select replace('abc','b','xy') from dual;

10,translate
   select translate('abc','b','xx') from dual; -- x是1位

11,lpad [左添充] rpad [右填充](用于控制输出格式)
   select lpad('func',15,'=') s1, rpad('func',15,'-') s2 from dual;
   select lpad(dname,14,'=') from dept;

12, decode[实现if ..then 逻辑]   注:第一个是表达式,最后一个是不满足任何一个条件的值
   select deptno,decode(deptno,10,'1',20,'2',30,'3','其他') from dept;
   例:
   select seed,account_name,decode(seed,111,1000,200,2000,0) from t_userInfo//如果seed为111,则取1000;为200,取2000;其它取0
   select seed,account_name,decode(sign(seed-111),1,'big seed',-1,'little seed','equal seed') from t_userInfo//如果seed>111,则显示大;为200,则显示小;其它则显

示相等

13 case[实现switch ..case 逻辑]
    SELECT CASE X-FIELD 
         WHEN X-FIELD < 40 THEN 'X-FIELD 小于 40'
         WHEN X-FIELD < 50 THEN 'X-FIELD 小于 50'
         WHEN X-FIELD < 60 THEN 'X-FIELD 小于 60'
         ELSE 'UNBEKNOWN'
        END
   FROM DUAL 
   
   注:CASE语句在处理类似问题就显得非常灵活。当只是需要匹配少量数值时,用Decode更为简洁。

四.数字函数
1,取整函数(ceil 向上取整,floor 向下取整)
   select ceil(66.6) N1,floor(66.6) N2 from dual;

2, 取幂(power) 和 求平方根(sqrt)
   select power(3,2) N1,sqrt(9) N2 from dual;

3,求余
   select mod(9,5) from dual;

4,返回固定小数位数 (round:四舍五入,trunc:直接截断)
   select round(66.667,2) N1,trunc(66.667,2) N2 from dual;

5,返回值的符号(正数返回为1,负数为-1)
   select sign(-32),sign(293) from dual;

五.转换函数
1,to_char()[将日期和数字类型转换成字符类型]
   1) select to_char(sysdate) s1,
        to_char(sysdate,'yyyy-mm-dd') s2,
        to_char(sysdate,'yyyy') s3,
        to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') s4,
        to_char(sysdate, 'hh24:mi:ss') s5,
        to_char(sysdate,'DAY') s6 
    from dual;
   2) select sal,to_char(sal,'$99999') n1,to_char(sal,'$99,999') n2 from emp

2, to_date()[将字符类型转换为日期类型] 
    insert into emp(empno,hiredate) values(8000,to_date('2004-10-10','yyyy-mm-dd'));
   
3, to_number() 转换为数字类型 
    select to_number(to_char(sysdate,'hh12')) from dual; //以数字显示的小时数
   
六.其他函数
   1.user: 
    返回登录的用户名称 
    select user from dual;
    
   2.vsize: 
    返回表达式所需的字节数
    select vsize('HELLO') from dual;
   
   3.nvl(ex1,ex2):
    ex1值为空则返回ex2,否则返回该值本身ex1(常用) 
    例:如果雇员没有佣金,将显示0,否则显示佣金 
    select comm,nvl(comm,0) from emp;
   
   4.nullif(ex1,ex2): 
    值相等返空,否则返回第一个值
    例:如果工资和佣金相等,则显示空,否则显示工资
    select nullif(sal,comm),sal,comm from emp;
   
   5.coalesce:
    返回列表中第一个非空表达式
    select comm,sal,coalesce(comm,sal,sal*10) from emp;
   
   6.nvl2(ex1,ex2,ex3) :
    如果ex1不为空,显示ex2,否则显示ex3
    如:查看有佣金的雇员姓名以及他们的佣金 
      select nvl2(comm,ename,') as HaveCommName,comm from emp;
   
   
七.分组函数
max min avg count sum
1,整个结果集是一个组
   1) 求部门30 的最高工资,最低工资,平均工资,总人数,有工作的人数,工种数量及工资总和
     select max(ename),max(sal), 
     min(ename),min(sal),
     avg(sal),
     count(*) ,count(job),count(distinct(job)) ,
     sum(sal) from emp where deptno=30;
2, 带group by 和 having 的分组
   1)按部门分组求最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和
    select deptno, max(ename),max(sal),
    min(ename),min(sal),
    avg(sal),
    count(*) ,count(job),count(distinct(job)) ,
    sum(sal) from emp group by deptno;
   
   2)部门30的最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和 
    select deptno, max(ename),max(sal),
    min(ename),min(sal),
    avg(sal),
    count(*) ,count(job),count(distinct(job)) ,
    sum(sal) from emp group by deptno having deptno=30;
   
3, stddev 返回一组值的标准偏差
    select deptno,stddev(sal) from emp group by deptno;
    variance 返回一组值的方差差
    select deptno,variance(sal) from emp group by deptno;

4, 带有rollup和cube操作符的Group By
    rollup 按分组的第一个列进行统计和最后的小计
    cube 按分组的所有列的进行统计和最后的小计
    select deptno,job ,sum(sal) from emp group by deptno,job;
    select deptno,job ,sum(sal) from emp group by rollup(deptno,job); 
    cube 产生组内所有列的统计和最后的小计
    select deptno,job ,sum(sal) from emp group by cube(deptno,job);

八、临时表
   只在会话期间或在事务处理期间存在的表.
   临时表在插入数据时,动态分配空间 
   create global temporary table temp_dept
   (dno number,
   dname varchar2(10))
   on commit delete rows;
   insert into temp_dept values(10,'ABC');
   commit;
   select * from temp_dept; --无数据显示,数据自动清除
   on commit preserve rows:在会话期间表一直可以存在(保留数据)
   on commit delete rows:事务结束清除数据(在事务结束时自动删除表的数据)

ORA-12154: TNS: 无法解析指定的连接标识符

技术文章admin 发表了文章 • 0 个评论 • 124 次浏览 • 2018-04-26 17:26 • 来自相关话题

      相信使用过Oracle数据库的人一定碰到过“ORA-12154: TNS: 无法解析指定的连接标识符”错误,我在此做一个小小的总结。

      在程序中连接Oracle数据库的方式与其他常用数据库,如:MySql,Sql Server不同,这些数据库可以通过直接指定IP的方式连接,但是Oracle则需要通过Oracle客户端配置网络服务名的方式来连接。否则就会出现“ORA-12154: TNS: 无法解析指定的连接标识符”。配置Oracle客户端详细步骤如下:
      安装好Oracle客户端之后,在开始菜单中依次找到“Oracle - OraClient10g_home1—>配置和移植工具—>Net Manager”并打开(Win7,Win8用户如果没有取得Administrator账号登陆需要以管理员方式运行),依次展开“Oracle Net配置—>本地—>服务命名”点击左侧“加号”配置新的网络服务

[image]

[image]

[image]

[image]

      最后,点击“下一步”完成即可,如果不知道或者忘记Oracle服务名可以通过查看服务获得,比如我这里配置的主机名是我本机,在我的电脑服务中找到oracle相关的服务

[image]

通过上面的服务名称,可以看出我安装的服务名就是“ORCL”,或者在服务端通过SQL Plus使用sys账号登陆,输入命令
show parameter service_name查看。
OracleDBConsoleORCL是Oracle网页端管理工具的服务,访问地址一般为“http://127.0.0.1:1158/em/console/logon/logon”,如果不习惯用这个来管理数据库可以不用启动。
OracleJobSchedulerORCL是管理Oracle中计划任务的,一般不用启动。
OracleOraDb10g_home1iSQL*Plus是SQL Plus的服务,如果不习惯在命令行下面操作数据库,可以不用启动。
OracleServiceORCL,OracleOraDb10g_home1TNSListener都需要开启,前者是主服务,后者是监听服务。

     当在Oracle客户端中配置好Net Manager中配置好服务后就可以通过我们配置的网络服务名访问Oracle数据库了,此配置实质想D:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora中增加了一行配置(由于我的Oracle是安装在D盘Oracle目录中,具体路径根据安装时选择的路径而定)。[复制代码]
# tnsnames.ora Network Configuration File: d:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora # Generated by Oracle configuration tools. ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL) ) )
[复制代码]    如果在同一台电脑上面同时安装了Oracle客户端和服务端,那么在服务端的安装目录中也会存在同样的配置文件D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora,在这种情况下如果我们配置好了客户端Net Manager然后连接Oracle数据库,可能会出现“ORA-12154: TNS: 无法解析指定的连接标识符”这时,你就应该怀疑,我到底访问的是哪个路径下的配置文件呢?此时可以使用tnsping命令

[image]

      如果你是在客户端Net Manager中配置的网络服务,但是此时解析出来的使用参数文件却是D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\sqlnet.ora,那么我想你应该明白了。这种情况有两种解决办法:
      第一:在服务端的Net Manager也配置相同的网络服务,或者直接拷贝D:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora中的配置到D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora,每次配置了新的网络服务你都需要这么做,如果不想这么麻烦那就使用第二种解决办法。     
      第二:修改系统环境变量Path值,将D:\Oracle\product\10.2.0\client_1\bin;路径移至D:\Oracle\product\10.2.0\db_1\bin;前面即可一劳永逸。
      注意:造成以上这种情况出现的原因是:在一台电脑上同时安装了oracle客户端和数据库服务,并且是先安装客户端,再安装数据库服务造成的,如果先安装数据库服务,再安装客户端就不会出现这种情况了。
      根据以上方式配置完oracle后,相信在程序中就可以正常连接oracle数据库了。

      当我安装好PLSQL Developer软件后登陆时任然出现了“ORA-12154: TNS: 无法解析指定的连接标识符”,如果是Win7,Win8用户甚至可以会出现弹出一个白框的情况,这时需要以管理员身份运行PLSQL Developer,并且确保你的PLSQL Developer是读取的oracle客户端配置,直接取消登陆,在PLSQL Developer工具栏中找到“Tools—>Preferences”,在Oracle的Connection节点中找到Oracle Home选择OraClient10g_home1,保存后关闭PLSQL Developer就可以正常登陆了。

[image]

     需要注意的是,在安装PLSQL Developer时不能安装在带有括号的目录中,如64bit系统的Program Files (x86)目录,就会出现无论你怎么设置,它依然不停的弹出“ORA-12154: TNS: 无法解析指定的连接标识符”。同样的问题也会出现在其他Oracle数据库管理软件中,比如Toad for Oracle

     “ORA-12154: TNS: 无法解析指定的连接标识符”是使用Oracle数据库的新手遇到的比较常见的问题之一,只要我们了解了它的工作方式,冷静排查,相信很容易就能够找到问题的解决办法的。 查看全部

      相信使用过Oracle数据库的人一定碰到过“ORA-12154: TNS: 无法解析指定的连接标识符”错误,我在此做一个小小的总结。

      在程序中连接Oracle数据库的方式与其他常用数据库,如:MySql,Sql Server不同,这些数据库可以通过直接指定IP的方式连接,但是Oracle则需要通过Oracle客户端配置网络服务名的方式来连接。否则就会出现“ORA-12154: TNS: 无法解析指定的连接标识符”。配置Oracle客户端详细步骤如下:
      安装好Oracle客户端之后,在开始菜单中依次找到“Oracle - OraClient10g_home1—>配置和移植工具—>Net Manager”并打开(Win7,Win8用户如果没有取得Administrator账号登陆需要以管理员方式运行),依次展开“Oracle Net配置—>本地—>服务命名”点击左侧“加号”配置新的网络服务

[image]

[image]

[image]

[image]

      最后,点击“下一步”完成即可,如果不知道或者忘记Oracle服务名可以通过查看服务获得,比如我这里配置的主机名是我本机,在我的电脑服务中找到oracle相关的服务

[image]

通过上面的服务名称,可以看出我安装的服务名就是“ORCL”,或者在服务端通过SQL Plus使用sys账号登陆,输入命令
show parameter service_name查看。
OracleDBConsoleORCL是Oracle网页端管理工具的服务,访问地址一般为“http://127.0.0.1:1158/em/console/logon/logon”,如果不习惯用这个来管理数据库可以不用启动。
OracleJobSchedulerORCL是管理Oracle中计划任务的,一般不用启动。
OracleOraDb10g_home1iSQL*Plus是SQL Plus的服务,如果不习惯在命令行下面操作数据库,可以不用启动。
OracleServiceORCL,OracleOraDb10g_home1TNSListener都需要开启,前者是主服务,后者是监听服务。

     当在Oracle客户端中配置好Net Manager中配置好服务后就可以通过我们配置的网络服务名访问Oracle数据库了,此配置实质想D:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora中增加了一行配置(由于我的Oracle是安装在D盘Oracle目录中,具体路径根据安装时选择的路径而定)。[复制代码]
# tnsnames.ora Network Configuration File: d:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora # Generated by Oracle configuration tools. ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL) ) )
[复制代码]    如果在同一台电脑上面同时安装了Oracle客户端和服务端,那么在服务端的安装目录中也会存在同样的配置文件D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora,在这种情况下如果我们配置好了客户端Net Manager然后连接Oracle数据库,可能会出现“ORA-12154: TNS: 无法解析指定的连接标识符”这时,你就应该怀疑,我到底访问的是哪个路径下的配置文件呢?此时可以使用tnsping命令

[image]

      如果你是在客户端Net Manager中配置的网络服务,但是此时解析出来的使用参数文件却是D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\sqlnet.ora,那么我想你应该明白了。这种情况有两种解决办法:
      第一:在服务端的Net Manager也配置相同的网络服务,或者直接拷贝D:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora中的配置到D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora,每次配置了新的网络服务你都需要这么做,如果不想这么麻烦那就使用第二种解决办法。     
      第二:修改系统环境变量Path值,将D:\Oracle\product\10.2.0\client_1\bin;路径移至D:\Oracle\product\10.2.0\db_1\bin;前面即可一劳永逸。
      注意:造成以上这种情况出现的原因是:在一台电脑上同时安装了oracle客户端和数据库服务,并且是先安装客户端,再安装数据库服务造成的,如果先安装数据库服务,再安装客户端就不会出现这种情况了。
      根据以上方式配置完oracle后,相信在程序中就可以正常连接oracle数据库了。

      当我安装好PLSQL Developer软件后登陆时任然出现了“ORA-12154: TNS: 无法解析指定的连接标识符”,如果是Win7,Win8用户甚至可以会出现弹出一个白框的情况,这时需要以管理员身份运行PLSQL Developer,并且确保你的PLSQL Developer是读取的oracle客户端配置,直接取消登陆,在PLSQL Developer工具栏中找到“Tools—>Preferences”,在Oracle的Connection节点中找到Oracle Home选择OraClient10g_home1,保存后关闭PLSQL Developer就可以正常登陆了。

[image]

     需要注意的是,在安装PLSQL Developer时不能安装在带有括号的目录中,如64bit系统的Program Files (x86)目录,就会出现无论你怎么设置,它依然不停的弹出“ORA-12154: TNS: 无法解析指定的连接标识符”。同样的问题也会出现在其他Oracle数据库管理软件中,比如Toad for Oracle

     “ORA-12154: TNS: 无法解析指定的连接标识符”是使用Oracle数据库的新手遇到的比较常见的问题之一,只要我们了解了它的工作方式,冷静排查,相信很容易就能够找到问题的解决办法的。

香港大学推荐的50本经典书籍

书籍资料admin 发表了文章 • 0 个评论 • 123 次浏览 • 2018-04-26 14:28 • 来自相关话题

书是人类进步的阶梯,读书开阔视野,拓宽境界。香港大学为我们推荐了50本经典书籍,这些推荐的书籍涵盖了经济、心理、商业、历史、人文…是不可多得的精神产物。本站强烈建议你能收藏此文,有事没事把这些推荐的经典书籍拿出来读一读,提升自己的思想境界。




1、《追寻生命的意义》

作者:弗兰克尔




弗兰克尔是20世纪著名的心理学家,纳粹时期,作为犹太人,他的全家都被关进了奥斯威辛集中营,他的父母、妻子、哥哥,全都死于毒气室中,只有他和妹妹幸存。弗兰克尔不但超越了这炼狱般的痛苦,更将自己的经验与学术结合,开创了意义疗法,替人们找到绝处再生的意义。本书第一部分叙述了弗兰克尔的集中营经历,第二部分阐述了他的“意义疗法”。本书不仅适合于心理学爱好者,也适合面临挑战希望寻找生活意义的人们。




2、《拖延心理学》


作者: [美]简·博克/ [美]莱诺拉·袁




你想要向拖延的恶习开刀吗?这两位加利福尼亚心理学家在她们治疗拖延者的实践中精准地捕捉到了拖延的根本原因。这本书可以帮助读者减轻拖延,更好地享受生活。




3、《梦的解析》


作者: [奥地利]弗洛伊德




弗洛伊德的《梦的解析》被誉为精神分析的第一名著。它通过对梦境的科学探索和解释,找破了几千年来人类对梦的无知、迷信和秘感,同时揭示了左右人们思想和行为的潜意识的奥秘。不管你是否对心理学感兴趣,这本书都会带给你看待人的精神世界的一个新的视角。




4、《宽容》


作者: [美]房龙




在宽容与不宽容之间,宗教以血腥和仁慈维护着它几千年的统治,更迭变幻、不滞不流。从众神的黄昏到好奇的人,从宗教裁判所到新天堂,从耶稣基督到布鲁诺……历史席卷一切,也记忆一切。而在这一切之后,始终不离其左右,是利益抑或是人性?这是一部宗教的历史,一部宽容与不宽容的历史,也是一郜人性血腥与进步的历史。文图之间,《宽容》生动地再现了这一历史。




5、《如何阅读一本书》


作者:[美]莫提默·艾德勒 /查尔斯·范多




你会阅读吗?莫提默·艾德勒告诉你,阅读并非那么简单。不懂阅读的人,初探阅读的人,读这本书可以少走冤枉路。对阅读有所体会的人,读这本书可以有更深的印证和领悟。本书介绍了阅读的三个层次,对每个层次都进行了细致的指导,是一本非常实用的读书用手册。




6、《影响力》


[美]罗伯特·B·西奥迪尼


影响力是改变他人思想和行动的能力。政治家运用影响力来赢得选举,商人运用影响力来兜售商品,推销员运用影响力诱惑你乖乖地把金钱捧上… 人们对影响力的运用存在于社会的每个角落,当一个要求用不同的方式提出来时,你的反应就会不知不觉地从负面抵抗变成积极合作,你为什么会说“是”,这一转变中究竟蕴涵着怎样的心理策略?《影响力》这本妙趣横生的书可以告诉你。




7、《政府论》


作者: [英]洛克




《政府论》英国约翰·洛克的政治著作,出版于1690年。本书可视为政治学的研究范畴,但对法学研究而言,此书亦属必读之列。《政府论》汇集了洛克的主要政治哲学思想,不仅使洛克成为古典自由主义思想的集大成者,而且对于后世的现实政治产生了深远的影响.




8、《人的潜能和价值》


作者: [美]马斯洛等




一个广为人知的理论认为,人脑有上千亿个细胞,其中98.5%-99%的细胞处于休眠状态,大约有1%-1.5%的细胞参加脑的神经功能活动,这说明人的潜能有极大的发挥空间。《人的潜能和价值》是人本主义心理学有关“人的潜能和价值”讨论的论文集。主要选录了马斯洛等有关人心理学价值观点的文章。这本书中收录了著名的马斯洛需求层次理论,该理论在心理学、管理学等众多领域影响很大。本书是希望开发自身潜能和价值的同学所必读的一本好书。




9、《设计心理学》


作者: [美]唐纳德·A·诺曼




本书是对产品设计感兴趣同学的必读书。诺曼博士本书中强调以使用者为中心的设计哲学,提醒消费者在挑选的物品,必须要方便好用,易于理解,希望设计师在注重设计美感的同时,不要忽略设计的一些必要因素,因为对于产品设计来说,安全好用永远是竞争的关键。虽然本书讨论的是日常用品的设计,但是其思想同样适合于互联网产品的设计,建议计算机相关专业的同学阅读。




10、《小王子》


作者:[法]圣埃克苏佩里




圣埃克苏佩里是一个传奇飞行家,他的书中以一位飞行员作为故事叙述者,讲述了小王子从自己星球出发前往地球的过程中,所经历的各种历险。小王子的孩子式的眼光,看到了成人的空虚、盲目和愚妄,记下了人类的孤独寂寞、没有根基随风流浪的命运。本质的言语、本真的视角,也带给许许多多人感动和向往。




11、《策略思维》


作者:迪克西特 /奈尔伯夫




耶鲁大学教授奈尔伯夫和普林斯顿大学教授迪克西特的这本著作,用许多活生生的例子,向没有经济学基础的读者展示了博弈论策略思维的道理。人生是一个永不停息的决策过程。从事什么样的工作,怎样打理一宗生意,该和谁结婚,怎样将孩子抚养成人,要不要竞争总裁的位置,都是这类决策的例子。这本书不仅适合对博弈论感兴趣的同学,也同样适合所有希望让生活决策更有条理的同学。




12、《无价》


作者: [美]威廉·庞德斯通




为什么免费的巧克力让我们疯狂?为什么百老汇剧场里价格越高的位置卖得越火?为什么100万美元带来的愉悦感,400万美元才能让它翻倍?为什么议价时,一定要抢先报价,而且一定要狮子大开口?威廉·庞德斯通告诉我们答案:价格只是一场集体幻觉。如果你想了解价格的奥秘,就来读这本书吧!




13、《浅薄》


作者: [美]尼古拉斯·卡尔




“谷歌在把我们变傻吗?”当尼古拉斯卡尔在发表于《大西洋月刊》上赫赫有名的那篇封面文章中提出这个问题的时候,他就开启了人们热切渴望的期盼源泉,让人急于弄清楚互联网是在如何改变我们的。卡尔在本书中阐述了他对互联网时代的看法:互联网会在现代人的心智中打下深深的烙印。这本书会让你看到互联网对我们的影响的另一面。




14、《定位》


作者: [美]艾·里斯/杰克·特劳特




20多年前,美国《广告时代》杂志约请年轻的营销专家里斯和特劳特撰写一系列有关营销和广告新思维的文章,总标题就是“定位的时代”。系列文章刊载之后,引起全行业的轰动,定位成了营销界人人谈论的热闹话题,经作者之手送出的文章就达12万份之多,由此开创了营销理论全面创新的时代。20年过去,定位思想已经深入人心,成为营销中必须考虑的要素。本书适合所有对商业感兴趣的同学阅读。




15、《麦肯锡方法》


作者: [美]埃森M拉塞尔




《麦肯锡方法》披露了麦肯锡小心守护的一系列管理技巧——那些可以帮助任何水平的任何人像麦肯锡顾问一样思考的工具。这是一套你可以应用在任何社工、实习、团队管理中的方法,像你的咨询顾问一样,为你指出通向成功的解决方案。这是从事咨询行业的必读书,也是希望丰富管理素养、提升自身领导力的同学的良好参考。




16、《社会契约论》


作者: [法]卢梭




《社会契约论》是法国思想家让雅克卢梭于1762年写成的一本书。《社会契约论》中主权在民的思想,是现代民主制度的基石,深刻地影响了逐步废除欧洲君主绝对权力的运动,和18世纪末北美殖民地摆脱英帝国统治、建立民主制度的斗争。美国的《独立宣言》和法国的《人权宣言》及两国的宪法均体现了《社会契约论》的民主思想。




17、《人月神话》


作者: [美]弗雷德里克·布鲁克斯




本书是软件工程领域的名著,为人们管理复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践。如果你有志从事技术领域的管理工作,或者面临领导团队的工作,本书是你的必读之书。




18、《伦理学》


作者:斯宾诺莎




《伦理学》一书是斯宾诺莎一生哲学思想的结晶。该书所阐述的实体、属性和样式的学说,是17世纪西欧先进的唯物主义哲学思想发展的总结。它肯定了唯一独立存在的自然物质实体是各种物体相互联系的整体,更精彩分享请加扣扣:七六三一二八三九二!坚持了从世界本身来说明世界的唯物主义观点。斯宾诺莎《伦理学》一书所阐发的哲学思想在近现代欧洲哲学史上产生了多方面的影响。黑格尔就曾经明确地提出,要研究哲学,就必须首先作一个斯宾诺莎主义者。马克思在他的哲学著作中,也经常把斯宾诺莎作为近代哲学史上唯物主义和辩证法的杰出代表。




19、《目送》


作者:龙应台




《目送》共由七十四篇散文组成,是为一本极具亲情、感人至深的文集。由父亲的逝世、母亲的苍老、儿子的离开、朋友的牵挂、兄弟的携手共行,写出失败和脆弱、失落和放手,写出缠绵不舍和绝然的虚无。作者平淡朴实的文笔、真诚深挚的情感和传统现代的思考,都让人感觉身心放松、恍若相通,值得一读。




20、《欢乐的经济学》


作者:戴维·亨德森




这是一本通过对作者亲身经历进行生动有趣的分析,向读者普及经济学思维、传达自由至上理念的书。本书的作者是一名专业经济学家,致力于传播自由经济与市场经济的理念。




21、《一九八四》


作者: [英]乔治·奥威尔




这一部奥威尔的传世之作,堪称世界文坛上最著名的政治讽喻小说。他在小说中他创造的“老大哥”、“双重思想”、“新话”等词汇都已收入权威的英语词典,甚至由他的姓衍生了一个形容词“奥威尔式”不断出现在报道国际新闻的记者笔下,足见其在英语国家影响之深远。




22、《雪国》


作者: [日]川端康成




年轻的少年在多雪的岛国与两个女子,发生了平淡的故事,然而川端康成笔下唯美的情景与诗意的语言,让这本书打动无数人心灵。空灵境界,遥远人物,哀伤故事,是川端康成的永恒主题。《雪国》中东方式的虚无充满了日本古典文学传统,而人物的描绘又带给人强烈的真实感。




23、《自私的基因》


作者:[英]里查德·道金斯




这是一本关于进化论的书,但是从这本书中读者可以获得关于人类行为的许多启发。道金斯使用“自私的基因”来表达基因中心的进化论观点。这种观点和基于物种或生物体的进化论观点不同,能够解释生物体之间的各种利他行为。




24、《Facebook效应》


作者: [美]大卫·柯克帕特里克




本书叙述了Facebook如何从哈佛的宿舍里萌发,创始人的内讧,权力之争,如何放弃华盛顿邮报的投资,怎样争取到第一个广告客户,而第一轮融资又如何获得一亿美元的估值…… 作者近距离地采访了与Facebook相关的人士,更精彩分享请加扣扣:七六三一二八三九二!其中包括Facebook的创始人、员工、投资人、意向投资人以及合作伙伴,加起来超过了130人。这是真切详实的访谈,更是超级精彩的故事。Facebook 作为一个传奇企业,值得所有希望了解互联网和新媒体的同学深入了解。




25、《历史研究》


作者:汤因比




汤因比在本书中将人类史作为一个整体来加以考察,以极其宏大的视角展现了诸多文明的成长、碰撞、融合的历程,在这一令人着迷的历史画卷中,作者以其博大精深的历史学知识和哲学睿智为读者带来了吸收知识和进行思考的快乐——这本书或许言辞难懂,但并不晦涩,对于一个想借上帝之眼来看人类古今历史的人,这本书是最合适的选择之一。




26、《论美国的民主》


作者: [法]托克维尔




《论美国的民主》这本书是世界学术界第一部对美国社会、政治制度和民情进行社会学研究的著作,也是第一部论述民主制度的专著,19世纪最著名的社会学著作之一,同时,它也是当代青年不可不读的经典名著之一。




27、《西方美学史》


作者:朱光潜




一部美学史并不单一的只是纯粹美学理论的历史,而且还是人类心灵自我展现的历史,或者说,在那些看似抽象的理论背后,我们所感受到的乃是各个时代人类精神脉博的跳动,这是一种精神的还乡历程——请跟随朱光潜先生来一次西方美学的精神漫游吧。




28、《长尾理论》


作者: [美]克里斯·安德森




本书讲述了互联网时代如何改变了长尾的经济价值。本书中阐述,商业和文化的未来不在于传统需求曲线上那个代表“畅销商品”(hits)的头部;而是那条代表“冷门商品”(misses)经常为人遗忘的长尾。比如,亚马逊网络书店的销售额有四分之一来自于排名10万之后的书籍。本书适合所有希望了解产品与市场的同学阅读。




29、《理想国》


作者: [古希腊]柏拉图




柏拉图认为,正义的城邦城理想国必须具备三个条件。第一,统治者应从有才能的人中挑选出来,可以是男人,也可以是女人。第地一,统治者阶层应过公社生活。第三,国王应该是哲学家,或应该让哲学家做国王。




30、《菊花与刀》


作者: [美]鲁斯·本尼迪克特




《菊花与刀》的前身是一份研究报告——作者受美国战时情报局委托写的有关日本的研究报告。后来在原报告基础上加上前后两章,即成此书。此书于1946年发表后反响巨大,亦成为日本最畅销的图书之一,因其学术价值和借鉴意义,60多年后依然长销不衰,成为文化人类学的典范之作,是了解我们一衣带水的近邻—— 日本民族的绕不过的经典读本。




31、《激荡三十年》


作者:吴晓波




本书记载了1978-2008年间中国的企业变革,作者没有用传统的教科书或历史书的方式来写作这部作品,而是站在民间的角度,以真切而激扬的写作手法描绘了中国企业在改革开放年代走向市场、走向世界的成长、发展之路。




32、《经济学原理》


作者: [美] N.格里高利·曼昆




曼昆的《经济学原理》是世界上最流行的经济学教材。现代社会中经济与每个人的生活都密切相关,所有的大学生都该懂点经济学,而这本书无疑是最受欢迎的经济学入门经典。




33、《悲惨世界》


作者: [法]雨果




故事的主线围绕主人公获释罪犯冉阿让试图赎罪的历程,融进了法国的历史、建筑、政治、道德哲学、法律、正义、宗教信仰。文中真实的故事,丰富的人物内心和故事包涵的深刻意义,使读者们都体会到作品有一种深远的分量感,也让一代代的人深深感动。




34、《芙蓉镇》


作者:古华




古华借位于湘、粤、桂三省交界处的芙蓉镇上,一个人称“芙蓉姐”的漂亮女人胡玉音在“四清运动”及“文化大革命”中的坎坷遭遇,向我们展示了特定历史时期人民生活的升迁沉浮。数十年间整个国家的人所承受的痛苦和欢乐,更重要的是后来人对这些事情痛苦和欢乐的思考,教会我们不要忘记。




35、《平凡的世界》


作者:路遥




这一本呕心沥血写成的百万字的长篇巨著全景式地表现中国当代城乡社会生活。路遥在中国70年代中期到80年代中期近十年间的广阔背景上,通过复杂的矛盾纠葛,以孙少安和孙少平两兄弟为代表展开了劳动与爱情、挫折与追求、痛苦与欢乐、日常生活与巨大社会冲突纷繁地交织在一起,深刻地展示了普通人在大时代历史进程中所走过的艰难曲折的道路,故事的广阔和深刻可谓是改革开放以来最可读的书之一。




36、《老人与海》


作者: [美]海明威




《老人与海》是海明威最著名的作品之一,它围绕一位老年古巴渔夫,与一条巨大的马林鱼在离岸很远的湾流中搏斗的故事。海明威电报式的简洁有力的写作风格, “冰山”原则指导下的荡人心魄描写,都在这片文章中得到了淋漓尽致的展现。海上捕鱼老人的拼搏、勇毅、不屈服,让每个人心中都波涛汹涌。




37、《乌合之众:大众心理研究》


作者: [法]古斯塔夫·勒庞




这本书是社会心理学领域的经典著作,至今已被翻译成近20种语言出版。在书中,作者以十分简约的方式,考察了群体的特殊心理与思维方式,尤其对个人与群体的迥异心理进行了精辟分析。二战中日本普通民众如何变成丧尽天良的战争机器,更精彩分享请加扣扣:七六三一二八三九二!“文革”中的单纯学生又为何会作出那许多丧心病狂的举动?个人到群体的变化总是叫人难以理解、难以置信,此书的解释,或能稍解你的困惑。




38、《红与黑》


作者:[法]司汤达




年轻人于连一步步向上爬却最终跌落谷底,法国批判现实主义之父司汤达借此批判法国封建贵族与新兴资产阶级的赤裸裸的斗争。与此同时,小说以深刻细腻的笔调充分展示了主人公的心灵空间,广泛运用了独白和自由联想等多种艺术手法挖掘出了于连深层意识的活动,开创了现代小说的写作风格。




39、《人间词话》


作者:王国维




清末文史学和考证学的大师王国维先生留给了我们的《人间词话》是晚清以来最有影响的著作之一。这是一部接受了西洋美学思想之洗礼后,以崭新的眼光对中国旧文学所作的文学批评著作,在旧日诗词论著中,称得上一部屈指可数的作品。在以往词论界里,许多人把它奉为圭臬,把它的论点作为词学、美学的根据,影响很是深远。




40、《战争论》


作者: [德]克劳塞维茨




本书作者亲身参加过普法战争和法俄战争,积累了丰富的作战经验。他的思想还受到德国古典哲学的很大影响,这为他研究战争理论和写作此书提供了有利的主客观条件。作为西方军事史上的理论名著,它甚至受到过恩格斯和列宁的好评。正是这部著作最早提出了“战争是政治通过另一种手段(即暴力)的继续”这一著名的公理。




41、《惠普之道》


作者: [美]戴维·帕卡德




《惠普之道》是惠普公司创始人戴维·帕卡德所写的创立惠普公司的故事,本书文笔通俗简练,前半部分叙述惠普公司的创业经历,后半部分阐释惠普公司的价值观、宗旨与做法。惠普公司是硅谷的纪念碑和常春藤,惠普公司以其健康的绩效、良好的企业环境得到了长足的发展。本书阐释的“惠普之道”被许多卓越的企业所效仿,本书是所有对创业和企业管理感兴趣的同学的必读书。




42、《非暴力沟通》


作者:[美]马歇尔·卢森堡




良言一句三冬暖,恶语伤人二月寒。不正确的沟通方式不仅会导致对他人的伤害,也会导致无法进行有效的沟通。卢森堡博士在本书中揭示了那些长久被人忽视的沟通障碍,并总结了和谐有效的沟通方式。无论是同学之间、恋人之间、师生之间、同事之间,非暴力沟通方式都能帮助你进行有效的沟通。本书的内容非常易懂和实用,穿插出现的沟通练习帮助你随时演练书中的沟通原则,对于困扰于沟通的同学们,本书是不可不读的好书。




43、《人性的弱点》


作者: [美]戴尔·卡内基




“世界成功学第一书”,戴尔·卡耐基被称为美国“成人教育之父”,他运用社会学和心理学知识,对人性进行了深刻的探讨和分析。他讲述的许多普通人通过奋斗获得成功的真实故事,激励了无数陷入迷茫和困境的人,帮助他们重新找到了自己的人生。不管成功学有怎样的缺陷,这些故事对于处于迷茫中的同学无疑是一种指引和帮助。




44、《爱的艺术》


[美]弗洛姆


爱情是大学期间一门重要的必修课,心理学家弗洛姆这本著名的《爱的艺术》一定能够对你有所帮助。弗洛姆认为,不成熟的、幼稚的爱是“我爱你,因为我需要你。”,而成熟的爱是“我需要你,因为我爱你。”。希望从这本书中得到追求攻略的同学往往会失望,但是如果你静下心,就可以从本书中读出爱的艺术的真谛。




45、《正义论》


作者: [美]约翰·罗尔斯




罗尔斯在《正义论》当中提出了关于正义的两条原则:第一条是所谓平等的自由原则,即每个人应该在社会中享有平等的自由权利;第二条原则包括差别原则与机会平等原则。前者要求在进行分配的时候,如果不得不产生某种不平等的话,这种不平等应该有利于境遇最差的人们的最大利益,就是说,利益分配应该像处于不利地位的人们倾斜;后者要求将机会平等的原则应用于社会经济的不平等,使具有同等能力、技术与动机的人们享有平等的获得职位的机会。




46、《心理学与生活》


作者: [美]理查德·格里格




本书是心理学的入门经典,是美国斯坦福大学多年来使用的教材,也是在美国许多大学里推广使用的经典教材,被ETS推荐为GRE心理学专项考试的主要参考用书。这本书写作流畅,通俗易懂,深入生活,把心理学理论与知识联系人们的日常生活与工作,使它同样也成为一般人了解心理学与自己的极好的读物。




47、《玩偶之家》


作者: [挪威]易卜生




娜拉是个具有资产阶级个性解放思想的叛逆女性,伴随着一系列事件,她与丈夫海尔茂的矛盾逐渐激化直至两个人分手。她对社会的背叛和弃家出走,被誉为妇女解放的“独立宣言”,易卜生高超的戏剧创作手法也在这部著作中得到体现。




48、《生命是什么》


[奥]埃尔温·薛定谔


理工科学生大概都对薛定谔耳熟能详,这位诺贝尔奖获得者撰写的《生命是什么》更是一本伟大的科学人文经典。这本书专为生命科学的门外汉书写,内容通俗易懂,历史证明这本书成为了推动分子生物学诞生的激励者和推动者。本书适合于任何希望增进科学素养的同学阅读。




49.《西方的没落》


作者:[德]奥斯瓦尔德·斯宾格勒




《西方的没落》是著名史学家斯宾格勒上世纪初创作的一部史学巨著,素有“历史博物馆”之称。在书中斯宾格勒从宏大的文化比较形态学的角度以生物生长过程的观念进行历史研究,把世界历史分成八个完全发展的文化,细致考察其各个时期的不同现象,揭示其共同具有的产生、发展、衰亡及毁灭的过程,通过对西方文化的精神逻辑和时代症状的描述,预言西方文化终将走向没落。




50.《论法的精神》


作者:[法]孟德斯鸠




公认的十八世纪最伟大的、最深远地影响了历史的作品是哪几部?人们可以很轻易地说出亚当施密的《国富论》、卢梭的《社会契约论》和孟德斯鸠的《论法的精神》。《论法的精神》以法律为中心,又遍涉经济、政治、宗教、历史、地理等领域,内容极为丰富。《论法的精神》中提出的“追求自由”、“主张法制”、“三权分立”等理论,极大地影响了人类社会的发展进程,成为了美、英、法等国的立国之本。 查看全部



书是人类进步的阶梯,读书开阔视野,拓宽境界。香港大学为我们推荐了50本经典书籍,这些推荐的书籍涵盖了经济、心理、商业、历史、人文…是不可多得的精神产物。本站强烈建议你能收藏此文,有事没事把这些推荐的经典书籍拿出来读一读,提升自己的思想境界。




1、《追寻生命的意义》

作者:弗兰克尔




弗兰克尔是20世纪著名的心理学家,纳粹时期,作为犹太人,他的全家都被关进了奥斯威辛集中营,他的父母、妻子、哥哥,全都死于毒气室中,只有他和妹妹幸存。弗兰克尔不但超越了这炼狱般的痛苦,更将自己的经验与学术结合,开创了意义疗法,替人们找到绝处再生的意义。本书第一部分叙述了弗兰克尔的集中营经历,第二部分阐述了他的“意义疗法”。本书不仅适合于心理学爱好者,也适合面临挑战希望寻找生活意义的人们。




2、《拖延心理学》


作者: [美]简·博克/ [美]莱诺拉·袁




你想要向拖延的恶习开刀吗?这两位加利福尼亚心理学家在她们治疗拖延者的实践中精准地捕捉到了拖延的根本原因。这本书可以帮助读者减轻拖延,更好地享受生活。




3、《梦的解析》


作者: [奥地利]弗洛伊德




弗洛伊德的《梦的解析》被誉为精神分析的第一名著。它通过对梦境的科学探索和解释,找破了几千年来人类对梦的无知、迷信和秘感,同时揭示了左右人们思想和行为的潜意识的奥秘。不管你是否对心理学感兴趣,这本书都会带给你看待人的精神世界的一个新的视角。




4、《宽容》


作者: [美]房龙




在宽容与不宽容之间,宗教以血腥和仁慈维护着它几千年的统治,更迭变幻、不滞不流。从众神的黄昏到好奇的人,从宗教裁判所到新天堂,从耶稣基督到布鲁诺……历史席卷一切,也记忆一切。而在这一切之后,始终不离其左右,是利益抑或是人性?这是一部宗教的历史,一部宽容与不宽容的历史,也是一郜人性血腥与进步的历史。文图之间,《宽容》生动地再现了这一历史。




5、《如何阅读一本书》


作者:[美]莫提默·艾德勒 /查尔斯·范多




你会阅读吗?莫提默·艾德勒告诉你,阅读并非那么简单。不懂阅读的人,初探阅读的人,读这本书可以少走冤枉路。对阅读有所体会的人,读这本书可以有更深的印证和领悟。本书介绍了阅读的三个层次,对每个层次都进行了细致的指导,是一本非常实用的读书用手册。




6、《影响力》


[美]罗伯特·B·西奥迪尼


影响力是改变他人思想和行动的能力。政治家运用影响力来赢得选举,商人运用影响力来兜售商品,推销员运用影响力诱惑你乖乖地把金钱捧上… 人们对影响力的运用存在于社会的每个角落,当一个要求用不同的方式提出来时,你的反应就会不知不觉地从负面抵抗变成积极合作,你为什么会说“是”,这一转变中究竟蕴涵着怎样的心理策略?《影响力》这本妙趣横生的书可以告诉你。




7、《政府论》


作者: [英]洛克




《政府论》英国约翰·洛克的政治著作,出版于1690年。本书可视为政治学的研究范畴,但对法学研究而言,此书亦属必读之列。《政府论》汇集了洛克的主要政治哲学思想,不仅使洛克成为古典自由主义思想的集大成者,而且对于后世的现实政治产生了深远的影响.




8、《人的潜能和价值》


作者: [美]马斯洛等




一个广为人知的理论认为,人脑有上千亿个细胞,其中98.5%-99%的细胞处于休眠状态,大约有1%-1.5%的细胞参加脑的神经功能活动,这说明人的潜能有极大的发挥空间。《人的潜能和价值》是人本主义心理学有关“人的潜能和价值”讨论的论文集。主要选录了马斯洛等有关人心理学价值观点的文章。这本书中收录了著名的马斯洛需求层次理论,该理论在心理学、管理学等众多领域影响很大。本书是希望开发自身潜能和价值的同学所必读的一本好书。




9、《设计心理学》


作者: [美]唐纳德·A·诺曼




本书是对产品设计感兴趣同学的必读书。诺曼博士本书中强调以使用者为中心的设计哲学,提醒消费者在挑选的物品,必须要方便好用,易于理解,希望设计师在注重设计美感的同时,不要忽略设计的一些必要因素,因为对于产品设计来说,安全好用永远是竞争的关键。虽然本书讨论的是日常用品的设计,但是其思想同样适合于互联网产品的设计,建议计算机相关专业的同学阅读。




10、《小王子》


作者:[法]圣埃克苏佩里




圣埃克苏佩里是一个传奇飞行家,他的书中以一位飞行员作为故事叙述者,讲述了小王子从自己星球出发前往地球的过程中,所经历的各种历险。小王子的孩子式的眼光,看到了成人的空虚、盲目和愚妄,记下了人类的孤独寂寞、没有根基随风流浪的命运。本质的言语、本真的视角,也带给许许多多人感动和向往。




11、《策略思维》


作者:迪克西特 /奈尔伯夫




耶鲁大学教授奈尔伯夫和普林斯顿大学教授迪克西特的这本著作,用许多活生生的例子,向没有经济学基础的读者展示了博弈论策略思维的道理。人生是一个永不停息的决策过程。从事什么样的工作,怎样打理一宗生意,该和谁结婚,怎样将孩子抚养成人,要不要竞争总裁的位置,都是这类决策的例子。这本书不仅适合对博弈论感兴趣的同学,也同样适合所有希望让生活决策更有条理的同学。




12、《无价》


作者: [美]威廉·庞德斯通




为什么免费的巧克力让我们疯狂?为什么百老汇剧场里价格越高的位置卖得越火?为什么100万美元带来的愉悦感,400万美元才能让它翻倍?为什么议价时,一定要抢先报价,而且一定要狮子大开口?威廉·庞德斯通告诉我们答案:价格只是一场集体幻觉。如果你想了解价格的奥秘,就来读这本书吧!




13、《浅薄》


作者: [美]尼古拉斯·卡尔




“谷歌在把我们变傻吗?”当尼古拉斯卡尔在发表于《大西洋月刊》上赫赫有名的那篇封面文章中提出这个问题的时候,他就开启了人们热切渴望的期盼源泉,让人急于弄清楚互联网是在如何改变我们的。卡尔在本书中阐述了他对互联网时代的看法:互联网会在现代人的心智中打下深深的烙印。这本书会让你看到互联网对我们的影响的另一面。




14、《定位》


作者: [美]艾·里斯/杰克·特劳特




20多年前,美国《广告时代》杂志约请年轻的营销专家里斯和特劳特撰写一系列有关营销和广告新思维的文章,总标题就是“定位的时代”。系列文章刊载之后,引起全行业的轰动,定位成了营销界人人谈论的热闹话题,经作者之手送出的文章就达12万份之多,由此开创了营销理论全面创新的时代。20年过去,定位思想已经深入人心,成为营销中必须考虑的要素。本书适合所有对商业感兴趣的同学阅读。




15、《麦肯锡方法》


作者: [美]埃森M拉塞尔




《麦肯锡方法》披露了麦肯锡小心守护的一系列管理技巧——那些可以帮助任何水平的任何人像麦肯锡顾问一样思考的工具。这是一套你可以应用在任何社工、实习、团队管理中的方法,像你的咨询顾问一样,为你指出通向成功的解决方案。这是从事咨询行业的必读书,也是希望丰富管理素养、提升自身领导力的同学的良好参考。




16、《社会契约论》


作者: [法]卢梭




《社会契约论》是法国思想家让雅克卢梭于1762年写成的一本书。《社会契约论》中主权在民的思想,是现代民主制度的基石,深刻地影响了逐步废除欧洲君主绝对权力的运动,和18世纪末北美殖民地摆脱英帝国统治、建立民主制度的斗争。美国的《独立宣言》和法国的《人权宣言》及两国的宪法均体现了《社会契约论》的民主思想。




17、《人月神话》


作者: [美]弗雷德里克·布鲁克斯




本书是软件工程领域的名著,为人们管理复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践。如果你有志从事技术领域的管理工作,或者面临领导团队的工作,本书是你的必读之书。




18、《伦理学》


作者:斯宾诺莎




《伦理学》一书是斯宾诺莎一生哲学思想的结晶。该书所阐述的实体、属性和样式的学说,是17世纪西欧先进的唯物主义哲学思想发展的总结。它肯定了唯一独立存在的自然物质实体是各种物体相互联系的整体,更精彩分享请加扣扣:七六三一二八三九二!坚持了从世界本身来说明世界的唯物主义观点。斯宾诺莎《伦理学》一书所阐发的哲学思想在近现代欧洲哲学史上产生了多方面的影响。黑格尔就曾经明确地提出,要研究哲学,就必须首先作一个斯宾诺莎主义者。马克思在他的哲学著作中,也经常把斯宾诺莎作为近代哲学史上唯物主义和辩证法的杰出代表。




19、《目送》


作者:龙应台




《目送》共由七十四篇散文组成,是为一本极具亲情、感人至深的文集。由父亲的逝世、母亲的苍老、儿子的离开、朋友的牵挂、兄弟的携手共行,写出失败和脆弱、失落和放手,写出缠绵不舍和绝然的虚无。作者平淡朴实的文笔、真诚深挚的情感和传统现代的思考,都让人感觉身心放松、恍若相通,值得一读。




20、《欢乐的经济学》


作者:戴维·亨德森




这是一本通过对作者亲身经历进行生动有趣的分析,向读者普及经济学思维、传达自由至上理念的书。本书的作者是一名专业经济学家,致力于传播自由经济与市场经济的理念。




21、《一九八四》


作者: [英]乔治·奥威尔




这一部奥威尔的传世之作,堪称世界文坛上最著名的政治讽喻小说。他在小说中他创造的“老大哥”、“双重思想”、“新话”等词汇都已收入权威的英语词典,甚至由他的姓衍生了一个形容词“奥威尔式”不断出现在报道国际新闻的记者笔下,足见其在英语国家影响之深远。




22、《雪国》


作者: [日]川端康成




年轻的少年在多雪的岛国与两个女子,发生了平淡的故事,然而川端康成笔下唯美的情景与诗意的语言,让这本书打动无数人心灵。空灵境界,遥远人物,哀伤故事,是川端康成的永恒主题。《雪国》中东方式的虚无充满了日本古典文学传统,而人物的描绘又带给人强烈的真实感。




23、《自私的基因》


作者:[英]里查德·道金斯




这是一本关于进化论的书,但是从这本书中读者可以获得关于人类行为的许多启发。道金斯使用“自私的基因”来表达基因中心的进化论观点。这种观点和基于物种或生物体的进化论观点不同,能够解释生物体之间的各种利他行为。




24、《Facebook效应》


作者: [美]大卫·柯克帕特里克




本书叙述了Facebook如何从哈佛的宿舍里萌发,创始人的内讧,权力之争,如何放弃华盛顿邮报的投资,怎样争取到第一个广告客户,而第一轮融资又如何获得一亿美元的估值…… 作者近距离地采访了与Facebook相关的人士,更精彩分享请加扣扣:七六三一二八三九二!其中包括Facebook的创始人、员工、投资人、意向投资人以及合作伙伴,加起来超过了130人。这是真切详实的访谈,更是超级精彩的故事。Facebook 作为一个传奇企业,值得所有希望了解互联网和新媒体的同学深入了解。




25、《历史研究》


作者:汤因比




汤因比在本书中将人类史作为一个整体来加以考察,以极其宏大的视角展现了诸多文明的成长、碰撞、融合的历程,在这一令人着迷的历史画卷中,作者以其博大精深的历史学知识和哲学睿智为读者带来了吸收知识和进行思考的快乐——这本书或许言辞难懂,但并不晦涩,对于一个想借上帝之眼来看人类古今历史的人,这本书是最合适的选择之一。




26、《论美国的民主》


作者: [法]托克维尔




《论美国的民主》这本书是世界学术界第一部对美国社会、政治制度和民情进行社会学研究的著作,也是第一部论述民主制度的专著,19世纪最著名的社会学著作之一,同时,它也是当代青年不可不读的经典名著之一。




27、《西方美学史》


作者:朱光潜




一部美学史并不单一的只是纯粹美学理论的历史,而且还是人类心灵自我展现的历史,或者说,在那些看似抽象的理论背后,我们所感受到的乃是各个时代人类精神脉博的跳动,这是一种精神的还乡历程——请跟随朱光潜先生来一次西方美学的精神漫游吧。




28、《长尾理论》


作者: [美]克里斯·安德森




本书讲述了互联网时代如何改变了长尾的经济价值。本书中阐述,商业和文化的未来不在于传统需求曲线上那个代表“畅销商品”(hits)的头部;而是那条代表“冷门商品”(misses)经常为人遗忘的长尾。比如,亚马逊网络书店的销售额有四分之一来自于排名10万之后的书籍。本书适合所有希望了解产品与市场的同学阅读。




29、《理想国》


作者: [古希腊]柏拉图




柏拉图认为,正义的城邦城理想国必须具备三个条件。第一,统治者应从有才能的人中挑选出来,可以是男人,也可以是女人。第地一,统治者阶层应过公社生活。第三,国王应该是哲学家,或应该让哲学家做国王。




30、《菊花与刀》


作者: [美]鲁斯·本尼迪克特




《菊花与刀》的前身是一份研究报告——作者受美国战时情报局委托写的有关日本的研究报告。后来在原报告基础上加上前后两章,即成此书。此书于1946年发表后反响巨大,亦成为日本最畅销的图书之一,因其学术价值和借鉴意义,60多年后依然长销不衰,成为文化人类学的典范之作,是了解我们一衣带水的近邻—— 日本民族的绕不过的经典读本。




31、《激荡三十年》


作者:吴晓波




本书记载了1978-2008年间中国的企业变革,作者没有用传统的教科书或历史书的方式来写作这部作品,而是站在民间的角度,以真切而激扬的写作手法描绘了中国企业在改革开放年代走向市场、走向世界的成长、发展之路。




32、《经济学原理》


作者: [美] N.格里高利·曼昆




曼昆的《经济学原理》是世界上最流行的经济学教材。现代社会中经济与每个人的生活都密切相关,所有的大学生都该懂点经济学,而这本书无疑是最受欢迎的经济学入门经典。




33、《悲惨世界》


作者: [法]雨果




故事的主线围绕主人公获释罪犯冉阿让试图赎罪的历程,融进了法国的历史、建筑、政治、道德哲学、法律、正义、宗教信仰。文中真实的故事,丰富的人物内心和故事包涵的深刻意义,使读者们都体会到作品有一种深远的分量感,也让一代代的人深深感动。




34、《芙蓉镇》


作者:古华




古华借位于湘、粤、桂三省交界处的芙蓉镇上,一个人称“芙蓉姐”的漂亮女人胡玉音在“四清运动”及“文化大革命”中的坎坷遭遇,向我们展示了特定历史时期人民生活的升迁沉浮。数十年间整个国家的人所承受的痛苦和欢乐,更重要的是后来人对这些事情痛苦和欢乐的思考,教会我们不要忘记。




35、《平凡的世界》


作者:路遥




这一本呕心沥血写成的百万字的长篇巨著全景式地表现中国当代城乡社会生活。路遥在中国70年代中期到80年代中期近十年间的广阔背景上,通过复杂的矛盾纠葛,以孙少安和孙少平两兄弟为代表展开了劳动与爱情、挫折与追求、痛苦与欢乐、日常生活与巨大社会冲突纷繁地交织在一起,深刻地展示了普通人在大时代历史进程中所走过的艰难曲折的道路,故事的广阔和深刻可谓是改革开放以来最可读的书之一。




36、《老人与海》


作者: [美]海明威




《老人与海》是海明威最著名的作品之一,它围绕一位老年古巴渔夫,与一条巨大的马林鱼在离岸很远的湾流中搏斗的故事。海明威电报式的简洁有力的写作风格, “冰山”原则指导下的荡人心魄描写,都在这片文章中得到了淋漓尽致的展现。海上捕鱼老人的拼搏、勇毅、不屈服,让每个人心中都波涛汹涌。




37、《乌合之众:大众心理研究》


作者: [法]古斯塔夫·勒庞




这本书是社会心理学领域的经典著作,至今已被翻译成近20种语言出版。在书中,作者以十分简约的方式,考察了群体的特殊心理与思维方式,尤其对个人与群体的迥异心理进行了精辟分析。二战中日本普通民众如何变成丧尽天良的战争机器,更精彩分享请加扣扣:七六三一二八三九二!“文革”中的单纯学生又为何会作出那许多丧心病狂的举动?个人到群体的变化总是叫人难以理解、难以置信,此书的解释,或能稍解你的困惑。




38、《红与黑》


作者:[法]司汤达




年轻人于连一步步向上爬却最终跌落谷底,法国批判现实主义之父司汤达借此批判法国封建贵族与新兴资产阶级的赤裸裸的斗争。与此同时,小说以深刻细腻的笔调充分展示了主人公的心灵空间,广泛运用了独白和自由联想等多种艺术手法挖掘出了于连深层意识的活动,开创了现代小说的写作风格。




39、《人间词话》


作者:王国维




清末文史学和考证学的大师王国维先生留给了我们的《人间词话》是晚清以来最有影响的著作之一。这是一部接受了西洋美学思想之洗礼后,以崭新的眼光对中国旧文学所作的文学批评著作,在旧日诗词论著中,称得上一部屈指可数的作品。在以往词论界里,许多人把它奉为圭臬,把它的论点作为词学、美学的根据,影响很是深远。




40、《战争论》


作者: [德]克劳塞维茨




本书作者亲身参加过普法战争和法俄战争,积累了丰富的作战经验。他的思想还受到德国古典哲学的很大影响,这为他研究战争理论和写作此书提供了有利的主客观条件。作为西方军事史上的理论名著,它甚至受到过恩格斯和列宁的好评。正是这部著作最早提出了“战争是政治通过另一种手段(即暴力)的继续”这一著名的公理。




41、《惠普之道》


作者: [美]戴维·帕卡德




《惠普之道》是惠普公司创始人戴维·帕卡德所写的创立惠普公司的故事,本书文笔通俗简练,前半部分叙述惠普公司的创业经历,后半部分阐释惠普公司的价值观、宗旨与做法。惠普公司是硅谷的纪念碑和常春藤,惠普公司以其健康的绩效、良好的企业环境得到了长足的发展。本书阐释的“惠普之道”被许多卓越的企业所效仿,本书是所有对创业和企业管理感兴趣的同学的必读书。




42、《非暴力沟通》


作者:[美]马歇尔·卢森堡




良言一句三冬暖,恶语伤人二月寒。不正确的沟通方式不仅会导致对他人的伤害,也会导致无法进行有效的沟通。卢森堡博士在本书中揭示了那些长久被人忽视的沟通障碍,并总结了和谐有效的沟通方式。无论是同学之间、恋人之间、师生之间、同事之间,非暴力沟通方式都能帮助你进行有效的沟通。本书的内容非常易懂和实用,穿插出现的沟通练习帮助你随时演练书中的沟通原则,对于困扰于沟通的同学们,本书是不可不读的好书。




43、《人性的弱点》


作者: [美]戴尔·卡内基




“世界成功学第一书”,戴尔·卡耐基被称为美国“成人教育之父”,他运用社会学和心理学知识,对人性进行了深刻的探讨和分析。他讲述的许多普通人通过奋斗获得成功的真实故事,激励了无数陷入迷茫和困境的人,帮助他们重新找到了自己的人生。不管成功学有怎样的缺陷,这些故事对于处于迷茫中的同学无疑是一种指引和帮助。




44、《爱的艺术》


[美]弗洛姆


爱情是大学期间一门重要的必修课,心理学家弗洛姆这本著名的《爱的艺术》一定能够对你有所帮助。弗洛姆认为,不成熟的、幼稚的爱是“我爱你,因为我需要你。”,而成熟的爱是“我需要你,因为我爱你。”。希望从这本书中得到追求攻略的同学往往会失望,但是如果你静下心,就可以从本书中读出爱的艺术的真谛。




45、《正义论》


作者: [美]约翰·罗尔斯




罗尔斯在《正义论》当中提出了关于正义的两条原则:第一条是所谓平等的自由原则,即每个人应该在社会中享有平等的自由权利;第二条原则包括差别原则与机会平等原则。前者要求在进行分配的时候,如果不得不产生某种不平等的话,这种不平等应该有利于境遇最差的人们的最大利益,就是说,利益分配应该像处于不利地位的人们倾斜;后者要求将机会平等的原则应用于社会经济的不平等,使具有同等能力、技术与动机的人们享有平等的获得职位的机会。




46、《心理学与生活》


作者: [美]理查德·格里格




本书是心理学的入门经典,是美国斯坦福大学多年来使用的教材,也是在美国许多大学里推广使用的经典教材,被ETS推荐为GRE心理学专项考试的主要参考用书。这本书写作流畅,通俗易懂,深入生活,把心理学理论与知识联系人们的日常生活与工作,使它同样也成为一般人了解心理学与自己的极好的读物。




47、《玩偶之家》


作者: [挪威]易卜生




娜拉是个具有资产阶级个性解放思想的叛逆女性,伴随着一系列事件,她与丈夫海尔茂的矛盾逐渐激化直至两个人分手。她对社会的背叛和弃家出走,被誉为妇女解放的“独立宣言”,易卜生高超的戏剧创作手法也在这部著作中得到体现。




48、《生命是什么》


[奥]埃尔温·薛定谔


理工科学生大概都对薛定谔耳熟能详,这位诺贝尔奖获得者撰写的《生命是什么》更是一本伟大的科学人文经典。这本书专为生命科学的门外汉书写,内容通俗易懂,历史证明这本书成为了推动分子生物学诞生的激励者和推动者。本书适合于任何希望增进科学素养的同学阅读。




49.《西方的没落》


作者:[德]奥斯瓦尔德·斯宾格勒




《西方的没落》是著名史学家斯宾格勒上世纪初创作的一部史学巨著,素有“历史博物馆”之称。在书中斯宾格勒从宏大的文化比较形态学的角度以生物生长过程的观念进行历史研究,把世界历史分成八个完全发展的文化,细致考察其各个时期的不同现象,揭示其共同具有的产生、发展、衰亡及毁灭的过程,通过对西方文化的精神逻辑和时代症状的描述,预言西方文化终将走向没落。




50.《论法的精神》


作者:[法]孟德斯鸠




公认的十八世纪最伟大的、最深远地影响了历史的作品是哪几部?人们可以很轻易地说出亚当施密的《国富论》、卢梭的《社会契约论》和孟德斯鸠的《论法的精神》。《论法的精神》以法律为中心,又遍涉经济、政治、宗教、历史、地理等领域,内容极为丰富。《论法的精神》中提出的“追求自由”、“主张法制”、“三权分立”等理论,极大地影响了人类社会的发展进程,成为了美、英、法等国的立国之本。

cmd重启ORACLE数据

技术文章admin 发表了文章 • 0 个评论 • 131 次浏览 • 2018-04-26 11:52 • 来自相关话题

建立一个 startup.sql的文件,内容:

1
2
3
conn /as sysdba;
shutdow immediate;
startup

然后再创建一个restartup.bat

1
sqlplus /nolog @startup.sql

然后用restartup.bat就可以了。 查看全部
建立一个 startup.sql的文件,内容:

1
2
3
conn /as sysdba;
shutdow immediate;
startup

然后再创建一个restartup.bat

1
sqlplus /nolog @startup.sql

然后用restartup.bat就可以了。