Coskan’s Approach to Oracle

March 5, 2009

What I learned during Oracle SQL Expert Exam Study Part-1

Filed under: Basics, Certification, PL/SQL, Tips — coskan @ 9:36 am

Yesterday, I passed the Oracle SQL Expert Exam. After 4 full years of working with Oracle, it took 2.5 weeks to study for this exam. I have studied from the SQL Fundementals 1-2 course material from Oracle University for focusing the exam topics and I used Oracle official documentation to support what I have learned from the course material. During my studies, I can say I learned a lot of small things and sometimes I felt shamed about not knowing the things that I should have learned as a junior DBA. At the end of the day, I can easily say that I can not be a SQL expert before writing that much SQL code as a database developer nevertheless, I am glad that, I spent time on learning new things by the help of certification. After this brief history, lets talk about something technical. (Warning!!! Post will be long and if you are already good with sql, just review the headers to se if there is something new for you. )

1- q Operator for using character literals with qoutation marks I never heard about it before. Document says its good for readibility but I am not sure :) Usage is simple if you want to say “coskan’s” all you need to do is put it in the braclets q’[]‘ or q’{}’ or q’()’ or q’<>’

SQL> select 'coskan''s approach to oracle' from dual;

'COSKAN''SAPPROACHTOORACLE'
---------------------------
coskan's approach to oracle

SQL> select 'coskan'||q[''s approach to oracle'] from dual;
ERROR:
ORA-01756: quoted string not properly terminated

SQL> select 'coskan'||q'['s approach to oracle]' from dual;

'COSKAN'||Q'['SAPPROACHTOOR
---------------------------
coskan's approach to oracle

SQL> select 'coskan'||q'('s approach to oracle)' from dual;

'COSKAN'||Q'('SAPPROACHTOOR
---------------------------
coskan's approach to oracle

SQL> select 'coskan'||q'{'s approach to oracle}' from dual;

'COSKAN'||Q'{'SAPPROACHTOOR
---------------------------
coskan's approach to oracle

SQL> select 'coskan'||q'<'s approach to oracle>' from dual;

'COSKAN'||Q'<'SAPPROACHTOOR
---------------------------
coskan's approach to oracle

2- null with logical operators . ( I felt really shamed that I didnt know (null&false=false) and (null or true=true) ) table is like below null and true = null null and false = false null OR true = true null OR false = null

SQL> select * from hr.departments where (1=1 and department_id not in (select null from dual)) and rownum<2;

no rows selected

SQL> select * from hr.departments where (1=2 and department_id not in (select null from dual)) and rownum<2;

no rows selected

SQL> select * from hr.departments where (1=1 or department_id not in (select null from dual)) and rownum<2;

DEPARTMENT_ID DEPARTMENT_NAME                MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
           10 Administration                        200        1700

SQL> select * from hr.departments where (1=2 or department_id not in (select null from dual)) and rownum<2;

no rows selected

3- Escape clause to avoid wildcard characters.

To use wildcard characters as normal character you can use Escape clause with Like

SQL> select first_name from hr.employees
     2  where first_name like '%E_%';

FIRST_NAME
--------------------
Ellen
Elizabeth
E_leni

SQL> select first_name from hr.employees 
     2 where first_name like '%E\_%' escape '\';

FIRST_NAME
--------------------
E_leni

SQL> select first_name from hr.employees 
    2   where first_name like '%E?_%' escape '?';

FIRST_NAME
--------------------
E_leni

4 Operator Precedence
You need to know these precedence to make sure your query is doing the right thing. (simple things can cause big problems)
1 Arithmetic operators
2 Concatenation operator
3 Comparison conditions
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 Not equal to
7 NOT logical condition
8 AND logical condition
9 OR logical condition

5-Order by Nulls FIRST/LAST Clause If you want to put nulls in the beginning or end of you resultset all you need to do is add

order by ..... nulls first
or
order by ..... nulls last

 
SQL> select * from hr.departments 
   2 order by manager_id nulls last;

DEPARTMENT_ID DEPARTMENT_NAME                MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
           90 Executive                             100        1700
           60 IT                                    103        1400
          100 Finance                               108        1700
          230 IT Helpdesk                                      1700
          240 Government Sales                                 1700

5 rows selected.

SQL> select * from hr.departments 
   2 order by manager_id nulls first;

DEPARTMENT_ID DEPARTMENT_NAME                MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
          240 Government Sales                                 1700
          230 IT Helpdesk                                      1700
           90 Executive                             100        1700
           60 IT                                    103        1400
          100 Finance                               108        1700

5 rows selected.

6- How to see seconds past midnight (dont know how I missed this when I prepare take control of time post)

SQL> select to_char(sysdate,'sssss') seconds_pass_midnight
  2  from dual;

SECON
-----
61546

7- nullif function
Document says NULLIF compares expr1 and expr2. If they are equal, then the function returns null. If they are not equal, then the function returns expr1.

Say you want to put null for the lenght_diff for employees whose first_name lenght is equal to last_name lenght (dont ask why :) )

SQL> select  first_name,last_name
  2  ,nullif (length(first_name),length(last_name)) lengt_diff
  3  from employees;

FIRST_NAME LAST_NAME  LENGT_DIFF
---------- ---------- ----------
MARKO      JANKO
JOE        JANKO               3

8- Coalesce Function
Document says; COALESCE returns the first non-null expr in the expression list. You must specify at least two expressions. If all occurrences of expr evaluate to null, then the function returns null.

Lets see how ;


SQL> SELECT last_name, employee_id,manager_id,department_id,
  2  COALESCE(to_char(department_id),TO_CHAR(manager_id), 'No manager no department who are you ???')
  3  FROM hr.employees
  4  ;

LAST_NAME                 EMPLOYEE_ID MANAGER_ID DEPARTMENT_ID COALESCE(TO_CHAR(DEPARTMENT_ID),TO_CHAR(
------------------------- ----------- ---------- ------------- ----------------------------------------
OConnell                          198        124            50 50
Grant                             199        124            50 50
Whalen                            200        101            10 10
Hartstein                         201        100            20 20
Fay                               202        201           160 160
Mavris                            203        101            40 40
Baer                              204        101            70 70
Higgins                           205        101           110 110
Gietz                             206        205           110 110
King                              100                       90 90	******************
Kochhar                           101        100            90 90
....................................................................................
....................................................................................
....................................................................................
....................................................................................
Feeney                            197                          No manager no department who are you ??? ****************

107 rows selected.

9- Need of group by clause for nested group by functions.

---single aggregate function

SQL> select avg(salary) from employees;

AVG(SALARY)
-----------
 6461.68224


---nested aggregate functions
SQL> select max(avg(salary)) from employees;
select max(avg(salary)) from employees
           *
ERROR at line 1:
ORA-00978: nested group function without GROUP BY

SQL> select max(avg(salary)) from employees
  2  group by department_id;

MAX(AVG(SALARY))
----------------
      19333.3333

10-Natural Join
Despite coming from a SQL Server DBA background with computer engineering diploma I never heard about natural joins or I heard at university but never cared about it ....

Document says:
A natural join is based on all columns in the two tables that have the same name. It selects rows from the two tables that have equal values in the relevant columns. When specifying columns that are involved in the natural join, do not qualify the column name with a table name or table alias.

SQL> select employee_id,department_name from employees natural join departments;

32 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2052257371

----------------------------------------------------------------------------------
| Id  | Operation          | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |             |    11 |   330 |     7  (15)| 00:00:01 |
|*  1 |  HASH JOIN         |             |    11 |   330 |     7  (15)| 00:00:01 |
|*  2 |   TABLE ACCESS FULL| DEPARTMENTS |    11 |   209 |     3   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL| EMPLOYEES   |   108 |  1188 |     3   (0)| 00:00:01 |
----------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("EMPLOYEES"."DEPARTMENT_ID"="DEPARTMENTS"."DEPARTMENT_ID"
              AND "EMPLOYEES"."MANAGER_ID"="DEPARTMENTS"."MANAGER_ID")
   2 - filter("DEPARTMENTS"."MANAGER_ID" IS NOT NULL)


11-When joining with JOIN...USING syntax table aliases are not allowed for the joining column

SQL> ---WRONG
SQL> select e.first_name,e.department_id
  2  from employees e join departments d
  3  using (department_id)
  4  where d.department_id=10 and rownum<2;
where d.department_id=10 and rownum<2
      *
ERROR at line 4:
ORA-25154: column part of USING clause cannot have qualifier


SQL> ---WRONG after removing from where
SQL> select e.first_name,e.department_id
  2  from employees e join departments d
  3  using (department_id)
  4  where department_id=10 and rownum<2;
select e.first_name,e.department_id
                    *
ERROR at line 1:
ORA-25154: column part of USING clause cannot have qualifier


SQL> --RIGHT
SQL> select e.first_name,department_id
  2  from employees e join departments d
  3  using (department_id)
  4  where department_id=10 and rownum<2;

FIRST_NAME           DEPARTMENT_ID
-------------------- -------------
Jennifer                        10 

12-ANY/ALL operator for subqueries
My face is going red for not using these two before. I think I never need them :)

Document says same thin for both of them;
Compares a value to each value in a list or returned by a query. Must be preceded by =, !=, >, <, =. Can be followed by any expression or subquery that returns one or more values.

The only difference is ANY Evaluates to FALSE if the query returns no rows. ALL Evaluates to TRUE if the query returns no rows.

I won't go deep into but if you not already know them its good practice to play with them

SQL> ---ANY
SQL> SELECT employee_id, last_name, job_id, salary
  2  FROM employees
  3  WHERE  salary < ANY
  4  (SELECT salary
  5  FROM employees
  6  WHERE job_id = 'ST_MAN')
  7  AND job_id <> 'ST_MAN' and rownum<2;

EMPLOYEE_ID LAST_NAME                 JOB_ID         SALARY
----------- ------------------------- ---------- ----------
        132 Olson                     ST_CLERK         2100

SQL>
SQL> ----USING ANY WITH NOT CHECK THE SYNTAX
SQL> SELECT employee_id, last_name, job_id, salary
  2  FROM employees
  3  WHERE  NOT salary < ANY
  4  (SELECT salary
  5  FROM employees
  6  WHERE job_id = 'IT_PROG')
  7  AND job_id <> 'IT_PROG' and rownum<2;

EMPLOYEE_ID LAST_NAME                 JOB_ID         SALARY
----------- ------------------------- ---------- ----------
        158 McEwen                    SA_REP           9000

SQL> ---ALL
SQL> SELECT employee_id, last_name, job_id, salary
  2  FROM employees
  3  WHERE  salary < ALL
  4  (SELECT salary
  5  FROM employees
  6  WHERE job_id = 'ST_MAN')
  7  AND job_id <> 'ST_MAN' and rownum<2;

EMPLOYEE_ID LAST_NAME                 JOB_ID         SALARY
----------- ------------------------- ---------- ----------
        105 Austin                    IT_PROG          4800

SQL>
SQL> ----USING ALL WITH NOT CHECK THE SYNTAX
SQL> SELECT employee_id, last_name, job_id, salary
  2  FROM employees
  3  WHERE  NOT salary < ALL
  4  (SELECT salary
  5  FROM employees
  6  WHERE job_id = 'IT_PROG')
  7  AND job_id <> 'IT_PROG' and rownum<2;

EMPLOYEE_ID LAST_NAME                 JOB_ID         SALARY
----------- ------------------------- ---------- ----------
        100 King                      AD_PRES         24000


13- Using NOT IN with subqueries with NULL values
I knew this but its nice to remind for the ones who doesnt know already. If you use NOT IN for a subquery with possible NULL clause it wont bring resultset because comparing null as you know equals to null. To workaround you can use NVL function.

Look what happens because of 2 NULL values


SQL> select count(*) from departments
  2  where department_id
  3  not in (select department_id
  4  from employees);

  COUNT(*)
----------
         0

SQL> select count(*) from employees
  2  where department_id is null;

  COUNT(*)
----------
         2
SQL>--change nulls with 999999

SQL> select count(*) from departments
  2  where department_id
  3  not in (select nvl(department_id,99999)
  4  from employees);

  COUNT(*)
----------
        16



14- Creating views with check option

To be honest I was totally unfamiliar to "with check option". Document says; Specify WITH CHECK OPTION to indicate that Oracle Database prohibits any changes to the table or view that would produce rows that are not included in the subquery. When used in the subquery of a DML statement, you can specify this clause in a subquery in the FROM clause but not in subquery in the WHERE clause.


SQL> CREATE OR REPLACE VIEW empv
  2  AS SELECT *
  3  FROM employees
  4  WHERE department_id = 10
  5  WITH CHECK OPTION CONSTRAINT empv10_ck ;

View created.

SQL> update empv set department_id=15 where Last_name='Whalen';
update empv set department_id=15 where Last_name='Whalen'
       *
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation

15- Sequences restart from MINVALUE(thanks Radino for the correction) with CYCLE option regardless from the START WITH value on the definition
I never used a sequence with cyle option before but I was thinking that it will re-use the already used ones when you recycle the values but it won't. If you set MINVALUE it will use MINVALUE, not the START WITH value and if you dont set MINVALUE it will use 1 which is default MINVALUE like below.


SQL> CREATE SEQUENCE cos_seq
  2  INCREMENT BY 10
  3  START WITH 10
  4  MAXVALUE 30
  5  NOCACHE
  6  CYCLE;

Sequence created.

SQL> select cos_seq.nextval from dual;

   NEXTVAL
----------
        10

SQL> select cos_seq.nextval from dual;

   NEXTVAL
----------
        20

SQL> select cos_seq.nextval from dual;

   NEXTVAL
----------
        30

SQL> select cos_seq.nextval from dual;

   NEXTVAL
----------
         1

SQL> select cos_seq.nextval from dual;

   NEXTVAL
----------
        11

SQL> select cos_seq.nextval from dual;

   NEXTVAL
----------
        21

SQL> select cos_seq.nextval from dual;

   NEXTVAL
----------
         1

16- NEXTVAL must be used before the initial usage of CURRVAL in a session.

Never tried, never got the error so never heard.


SQL> ---Brand New session
SQL> select cos_seq.currval from dual;
select cos_seq.currval from dual
       *
ERROR at line 1:
ORA-08002: sequence COS_SEQ.CURRVAL is not yet defined in this session


SQL> select cos_seq.nextval from dual;

   NEXTVAL
----------
        11
SQL> select cos_seq.currval from dual;

   CURRVAL
----------
        11

This is the end of PART-1. I hope I can complete the PART-2 of this series.

Warning: This post is not about what is being asked in Exam. It is about what I learned during my studies. If you want the questions just study and take the exam. Try to think what would you expect from a SQL Expert and study the things you think you would expect.

Update : Dont forget to check the links in Comment of Tonguc for better understanding of SQL Fundementals.

About these ads

32 Comments »

  1. Good to see you back! :)

    Oracle is like an ocean, after each new release the ocean get fatter. We all share and learn from each other, thanks for these notes.

    ps: from this post I finally understood that you were not reading my blog :)P

    http://tonguc.wordpress.com/2007/01/11/like-escape-characters-and-alternative-quoting-mechanism-for-string-literals/

    http://tonguc.wordpress.com/2006/12/31/oracle-built-in-functions-part-1/

    http://tonguc.wordpress.com/2007/01/07/oracle-sql-extentions-part-1/

    Comment by H.Tonguç Yılmaz — March 5, 2009 @ 12:24 pm

    • Hey Mate come on, those entries are very old thats why they were missed :)
      Bu to be honest last year except the last 3 months (got certified on 11g 10g and linux) was a waste year about Oracle because of moving to another country changing my job changing my language getting married credit crunch etc . We will see you when you get married, I hope you will keep going like this otherwise I will send you welcome back messages :)

      And about the post as you said Oracle is a huge ocean.

      Thank you very much for adding value with your posts to this post.

      Comment by coskan — March 5, 2009 @ 1:42 pm

  2. Last weekend Tonguç was upgraded from boyfriend to engaged! The previous release was cool but we will test&see this new release on production :o)

    By the way, why did you decide to collect all those certificates? Is it related to the abroad conditions, maybe another post’s topic right.

    Comment by H.Tonguç Yılmaz — March 5, 2009 @ 1:49 pm

    • Congrats coming from London to Istanbul. At last I found something to be one step ahead of you. You were before me in University Tekstilbank Oracle …. but when it comes to marriage I am the boss :)

      I will write a topic about it but basically if you approach exam for learning something certification is not Evil. I dont really care if somebody is cheating and decreasing the value of certifications because I took them for me not to show it during job hunting. As long as I learn something and it keeps me enthusiastic about Oracle I will continue to take the exams.

      Look how many things I learned during my study, If I didnt have a target, these probably wont be learnt. At least I have my own SQL Reference now and this is just one gain.

      I wish I will work for someone who can support me to be an OCM. It will be a great challenge for me.

      As a last word when I put my self development in the center of certification it is not evil for me.

      Comment by coskan — March 5, 2009 @ 2:06 pm

  3. Hi Coskan,
    Thanks for the exhaustive tips.

    Some of the above functions and operators like ANY/ALL are quite handy if you’re a server side developer.

    Definitely worth to read it.

    Comment by Kurtulus — March 5, 2009 @ 6:49 pm

  4. Thanks Mr Coskan,
    I congratulate to you! I hope you will be OCM…But if you will be OCM dont leave writing article :))

    Comment by UMIT — March 5, 2009 @ 10:35 pm

  5. just few notes :)

    ad 10&11) natural joins are evil :)
    Gints has a good post about some issues:
    http://gplivna.blogspot.com/2007/10/natural-joins-are-evil-motto-if-you.html

    ad 13)
    one of good explanation, why is it so:
    a not in (2, null, 3)
    is equivalent to
    a 2 and a null and a 3

    All of subexpressions has to be TRUE, but anull is NULL.

    ad 15) sequence is restarted from minvalue..

    SQL> create sequence seq_a minvalue 10 start with 18 maxvalue 20 cycle cache 2;

    Sequence created

    SQL> select seq_a.nextval from dual;

    NEXTVAL
    ----------
    18

    SQL> select seq_a.nextval from dual;

    NEXTVAL
    ----------
    19

    SQL> select seq_a.nextval from dual;

    NEXTVAL
    ----------
    20

    SQL> select seq_a.nextval from dual;

    NEXTVAL
    ----------
    10

    Did you know this :) :

    SQL> select seq_a.nextval, seq_a.nextval from dual;

    NEXTVAL NEXTVAL
    ---------- ----------
    11 11

    when you have more occurences of seq_a.nextval in a SQL statement then the result of nexval is the same.

    Comment by radino — March 6, 2009 @ 1:11 pm

    • Thank you ver much for these very nice feedbacks Radino especially for the minvalue I ned to update the post with your feedback

      about nextvals I think below is more interesting :)

      SQL> select cos_seq.currval,cos_seq.nextval,cos_seq.nextval from dual;

      CURRVAL NEXTVAL NEXTVAL
      ———- ———- ———-
      21 21 21

      For the natural join i totally agree that it is something we need to stay away.

      Comment by coskan — March 6, 2009 @ 2:08 pm

  6. some chars were deleted from my previous comment

    ad 13)
    one of good explanation, why is it so:
    a not in (2, null, 3)
    is equivalent to
    a 2 != and a != null and a != 3

    All of subexpressions has to be TRUE, but anull is NULL.

    Comment by radino — March 6, 2009 @ 1:14 pm

  7. Congratulations Coskan!
    - Harold

    Harold Green
    Sr Certification Program Manager | ORACLE UNIVERSITY

    Comment by Harold Green — March 6, 2009 @ 3:58 pm

  8. Coskan,

    Thanks for all the tips. Some I’ve never heard of it before! I’m looking forward to part II (and more). Most people don’t realize that Oracle documents contain a lot of good stuff especially for exam preparation.

    BTW, congrats for your certification.

    Ittichai

    Comment by ittichai — March 8, 2009 @ 1:26 am

  9. [...] Many of you might be considering some more training or certification. Coskan Gundogar has already been there, and has returned with the tale to tell, What I learned during Oracle SQL Expert Exam Study Part-1. [...]

    Pingback by Pythian Group - Blog — March 13, 2009 @ 4:26 pm

  10. [...] 18, 2009 by coskan I wrote Part-1 of this series for covering what I learned from SQL Fundamentals I while studying for SQL Expert [...]

    Pingback by What I learned during Oracle SQL Expert Exam Study Part-2 « Coskan’s Approach to Oracle — March 18, 2009 @ 9:33 pm

  11. Hi!
    I want to get tables which are present in one database and not present in other database using database links.The tables must start with PS_.
    I wrote a query for this.but its not functioning.Can u help me out please..

    SELECT C.TABLE_NAME FROM USER_TABLES C WHERE C.table_name like ‘PS\_%’ESCAPE’\’ AND C.TABLE_NAME NOT IN(SELECT A.TABLE_NAME FROM USER_TABLES A
    WHERE A.table_name like ‘PS\_%’ESCAPE’\’
    INTERSECT
    SELECT B.TABLE_NAME FROM USER_TABLES@PJCRM B
    WHERE B.table_name like ‘PS\_%’ESCAPE’\’)

    Comment by Ashok — March 21, 2009 @ 10:40 am

  12. Hi!
    I want to get tables which are present in one database and not present in other database using database links.The tables must start with PS_.
    I wrote a query for this.but its not functioning.I want to get it using Escape characters.Can u help me out please..

    SELECT C.TABLE_NAME FROM USER_TABLES C WHERE C.table_name like ‘PS\_%’ESCAPE’\’ AND C.TABLE_NAME NOT IN(SELECT A.TABLE_NAME FROM USER_TABLES A
    WHERE A.table_name like ‘PS\_%’ESCAPE’\’
    INTERSECT
    SELECT B.TABLE_NAME FROM USER_TABLES@PJCRM B
    WHERE B.table_name like ‘PS\_%’ESCAPE’\’)

    Comment by Ashok — March 21, 2009 @ 10:41 am

  13. I think not in is totally unnecessary on your query.

    You try to search for table name PS_% but you exclude all the results with using not in.

    First query before intersect returns nothing thats why your whole query result is not right

    SQL> create table PS_TEST (id number);

    Table created.

    SQL> SELECT C.TABLE_NAME FROM USER_TABLES C WHERE C.table_name like ‘PS\_%’ESCAPE’\’ AND C.TABLE_NAME NOT IN(SELECT A.TABLE_NAME FROM USER_TABLES A
    2 WHERE A.table_name like ‘PS\_%’ESCAPE’\’);

    no rows selected

    —without not in

    SQL> SELECT C.TABLE_NAME FROM USER_TABLES C WHERE C.table_name like ‘PS\_%’ESCAPE’\’ ;

    TABLE_NAME
    ——————————
    PS_TEST

    Comment by coskan — March 21, 2009 @ 8:38 pm

  14. Hi Coskan!!
    I want to retrieve the tables from two databases.And the tables must be present in one database and which are not present in other database

    Comment by Ashok — March 23, 2009 @ 5:29 am

  15. Hi Ashok I see what you want to do, the problem is you dont get anything from Database A with the query before intersect and instead of intersect you need to use minus

    select * from user_tables where table_name like ‘PS\_%’ escape ‘\’
    minus
    select * from user_tables@DB_2 where table_name like ‘PS\_%’ escape ‘\’

    the query above will bring you tables starting with PS_ on database DB_1 which are not present on DB_2

    if you want to to do reverse

    select * from user_tables@DB_2 where table_name like ‘PS\_%’ escape ‘\’
    minus
    select * from user_tables@DB_2 where table_name like ‘PS\_%’ escape ‘\’

    hope this time it is clear

    Comment by coskan — March 23, 2009 @ 9:52 am

  16. Hi Coskan,
    Your tips are great. I’m really enjoying learning this stuff.
    Right now I’m doing some java training but I definitely find your info worth reading.

    Comment by vicbowling — May 20, 2010 @ 8:58 pm

  17. Hi,

    I have already passed OCA certification ( 1Z0-007 and 1Z0-147) and now i am thinking about writing Oracle SQL Expert exam. Do you think its worth sitting on this exam?

    Can i use exam 1Z0-007 study material for SQL Expert exam?

    Comment by Hanah — June 7, 2010 @ 2:08 pm

  18. hi,
    good of u to publish these stuff. really helpful. keep it up.

    Comment by Atheeb — July 9, 2010 @ 9:47 am

    • Does any one Here to give me tips on creating manually database creation

      Comment by suffiyab — October 15, 2010 @ 1:53 pm

  19. Hi Coskan,
    I m the student of BSCS final year and I am preparing for OCP also. I want to ask you about the Salary which is paid to smart DBAs

    Comment by Shaheryar Khalid — July 18, 2010 @ 1:57 am

  20. Thanks Dude this Query are really simple try some complex Queries
    using set operators and subQueries alson

    Comment by suffiyab — October 15, 2010 @ 1:52 pm

  21. Merhaba,

    Gerci herkes ingilizce yazmis ama iki Turk baska dilde komik geldi, Turkce yazmak istedim. Londra’da Data Analyst olarak calismaktayim ve kariyerimin ilk basamagindan ikincisine gecmemde yardimci olacagini dusunerek bir SQL sertifikasi almaya karar verdim. MIS mezunuyum. Niyetim sizin gibi DBA olmak degil acikcasi daha cok BI ustune gitmek ve oradan da Strategic Planning gibi olayin business kismina kaymak istiyorum, hayal ediyorum.
    Konuya donersem, sertifika icin belli basla firmalari arastirdim ve Oracle SQL Expert’i buldum. Ne var ki yine Oracle’in Fundamentals I-II sertifikalari da var. Ikisi hakkinda da cok okudum, ne bulduysam okudum ama bir turlu kafamda hangisini alirsam daha faydali olurun cevabini netlestiremedim. Bu hususta varsa bir tavsiyeniz dinlemek isterim. Tesekkurler :)

    Comment by Mert Senkal — November 21, 2011 @ 11:24 am

    • Acikcasi ben sertifikasyonun is hayatimda yararini ise alim surecinde pek gormedim ama yeni teknolojiden haberdar olmak normalde kullanmayacagim teknolojilerin varligini gormek acisindan yararli oldugunu soyleyebilirim. Hangisini alayim dersen hicbirinin zararini gormessin bu nedenle hepsini al derim finansmanini yapabildigin surece. bu arada sanirim Fundementals 1-2 sinav degil de kurs sonucta sertifika olarak yine sql expert i alabiliyorsun. PL/SQL icin sertifika cikti mi cikmadi mi acikcasi haberim yok ama cikmissa yararini gorursun.

      Basarilar

      Comment by coskan — November 21, 2011 @ 4:58 pm

  22. Selamlar,

    SQL expert sınavı hakkında biraz detaylı bilgi verebilirmisiniz ?

    Comment by Gokhan Y. — November 24, 2011 @ 8:52 pm

  23. wooow
    do i suppose to post a comment……………..?
    im just a bloody beginner in oracle world!!!im planing to write my sql expert exam next month……pls need help

    Comment by alsahar2007 — February 28, 2012 @ 10:25 am

  24. hi i already passed the SQL Expert…………………planning for DB Administrative one….April

    Comment by Ahmad — March 23, 2012 @ 11:37 am

  25. the nullif as difference of the length is a bad example:
    if value1 is not equal to value2, then the value1 will be returned.
    besides, value1 and values2 can not only be number, but also be string, and the upper and lower case of string are considered.

    Comment by Jipeng — May 27, 2013 @ 3:05 pm

  26. I know this if off topic but I’m looking into starting my own weblog and was wondering what all is required to get setup?
    I’m assuming having a blog like yours would cost a pretty penny?
    I’m not very web savvy so I’m not 100% positive. Any
    recommendations or advice would be greatly appreciated.

    Kudos

    Comment by http://wypozyczalniasamochodowdostawczychkatowice.com.pl/ — May 27, 2014 @ 1:28 pm


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

The Silver is the New Black Theme. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

Join 199 other followers

%d bloggers like this: