寫出SQL語句中選擇查詢的主要關鍵字,并解釋說明選擇查詢語句的格
1、CREATE [UNIQUE|CLUSTERED] INDEX INDEX_NAME ON TABLE_NAME(PROPERTY_NAME)2、其中UNIQUE和CLUSTERED為可選項,分別是建立唯一索引和聚簇索引,具體解釋為:UNIQUE:表示此索引的每一個索引值只對應唯一的數據。
3、CLUSTERED:表示要建立的索引時聚簇索引,即索引項的順序與表中記錄的物理順序一致的索引組織。拓展:1、SQL語言,是結構化查詢語言(Structured Query Language)的簡稱。
SQL語言是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統;同時也是數據庫腳本文件的擴展名。2、SQL語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。
它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同數據庫系統可以使用相同的結構化查詢語言作為數據輸入與管理的接口。SQL語言語句可以嵌套,這使他具有極大的靈活性和強大的功能。
3、結構化查詢語言SQL(STRUCTURED QUERY LANGUAGE)是最重要的關系數據庫操作語言,并且它的影響已經超出數據庫領域,得到其他領域的重視和采用,如人工智能領域的數據檢索,第四代軟件開發工具中嵌入SQL的語言等。
找一些經典的SQL語句,請詳細說明功能
1、連接數據庫(運行SQL*Plus,使用SCOTT/TIGER)2、簡單查詢SQL> select table_name from user_tables;運行結果如下:TABLE_NAMESALGRADEBONUSEMPDEPTSQL> select * from emp;3、格式化用戶結果SQL> select ename,sal from emp where ename like 'A%';請嘗試一下,如果將上述語句中的'A%'替換為'a%',看看會出現什么結果。
如果只是將select替換成SELECT,看看又會出現什么效果。SQL> column sal format $9,999.99SQL> select ename,sal from emp where ename like 'A%';請注意觀察結果和剛才有什么不同。
如果將$符號替換為¥,看看會出現什么結果。SQL> describe user_objectsSQL> select object_type,object_name from user_objects order by object_type,object_name;SQL> column object_name format a30SQL> run請注意觀察兩次運行的結果有何不同。
SQL> set pause onSQL> select * from emp;SQL> set pause off4、設置用戶頁面大小SQL> set pagesize 10SQL> select rownum,object_name from all_objects where rownum < 20;請注意觀察每一批的記錄有幾條,考慮一下為什么會出現這種情況?SQL> show linesizeSQL> set linesize 200SQL> select * from emp;5、FEEDBACK(在查詢末尾輸出一行,用來指出查詢中返回的記錄數量)SQL> show feedbackSQL> select empno,ename,job from emp where rownum < 7;SQL> set feedback offSQL> select empno,ename,job from emp where rownum < 7;請注意觀察兩次運行的結果有何不同。SQL> set feedback 3SQL> select empno,ename,job from emp where rownum < 3;SQL> select empno,ename,job from emp where rownum < 4;再看看結果有何不同,仔細體會FEEDBACK的作用。
6、更換顯示輸出SQL> create table t(x number);SQL> insert into t values(1234567890);SQL> insert into t values(12345678901);SQL> insert into t values(12345678901234567890);SQL> select x from t;SQL> set numformat 99999999999999999999.9999999999SQL> /SQL> set numformat ""SQL> /7、描述表SQL> desc deptSQL> select deptno,dname,loc from dept;請注意上述兩條語句的執行結果有何不同之處。8、二元操作符SQL> select empno,ename,sal,comm from emp where deptno = 30 and comm > 0;SQL> select empno,ename,sal,comm from emp where sal >= 3000 or comm >= 500;9、用WHERE子句聯接表SQL> connect hr/hr@tbSQL> select *_title,*_name,salary from jobs,employees where *_id = *_id and * > 10000;10、關于NULLSQL> select * from dual;SQL> select * from dual where null = null;SQL> select * 2 from dual 3 where null <> null;結論:在Oracle中,null = null或null <> null結果均為false。
11、ORDER和GROUP BYSQL> select last_name,job_id,salary from employees where salary > 12000 order by job_id,salary;SQL> select job_id,avg(salary),sum(salary),max(salary),count(*) from employees group by job_id;SQL> select job_id,avg(salary) avg_salary from employees group by job_id having avg(salary) >= 10000 order by avg(salary) desc;11、ANSI聯接自然連接(將一個表中的列與第二個表中具有相同名稱的列進行聯接)SQL> select employee_id,last_name,department_name from employees natural join departments where department_name = 'Puchasing';內聯接(在FROM子句中使用聯接條件,必須規定所要聯接的各個表的列)SQL> select *ee_id,*_name,*ment_name from employees e inner join departments d on *ment_id = *ment_id where *_id = 'SA_MAN';外聯接(返回所有滿足聯接條件的行,是對內聯接的擴展)SQL> select *ee_id,*_name,*ment_name from employees e left outer join departments d on *ment_id = *ment_id where *_id = 'SA_MAN';SQL> select *ee_id,*_name,*ment_name from employees e right outer join departments d on *ment_id = *ment_id where *on_id = 1700 order by *ment_name,*_name右外聯接將返回連接條件右邊的表中的所有行。
SQL查詢語句解釋
OBJECT_ID:返回數據庫對象標識號,N是顯式的將非unicode字符轉成unicode字符,它來自 SQL-92 標準中的 National(Unicode)數據類型,用于擴展和標準化 OBJECTPROPERTY:返回當前數據庫中對象的有關信息。
1表“真”。 object_id(N'[dbo].[SelectedCourse]') 是取得這個外鍵的ID號,每個元素在數據庫中都有唯一的ID號 select * from *ects where id = object_id(N'[dbo].[SelectedCourse]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) 這條語句的意思是取表SelectedCourse存放數據庫元素信息,也就是只取指定ID號的那個外鍵的信息 drop procedure [dbo].[SelectedCourse] 刪除叫[dbo].[SelectedCourse] 的約束 GO 執行。
SQL教程之子查詢語句要注意什么
嵌套SELECT語句也叫子查詢,形如: SELECT name FROM bbc WHERE region = (SELECT region FROM bbc WHERE name = 'Brazil') 一個 SELECT 語句的查詢結果可以作為另一個語句的輸入值。
上面的SQL語句作用為獲得和'Brazil'(巴西)同屬一個地區的所有國家。 子查詢不但可以出現在Where子句中,也可以出現在from子句中,作為一個臨時表使用,也可以出現在select list中,作為一個字段值來返回。
本節我們僅介紹的Where子句中的子查詢。 在Where子句中使用子查詢,有一個在實際使用中容易犯的錯在這里說明一下。
通常,就像上面的例子一樣,嵌套的語句總是和一個值進行比較。 語句 (SELECT region FROM bbc WHERE name = 'Brazil') 應該僅返回一個地區,即 'Americas'. 但如果我們在表中再插入一條地區為歐洲,國家名稱為Brazil的記錄,那會發生什么情況? 這將會導致語句的運行時錯誤.因為這個SQL語句的語法是正確的,所以數據庫引擎就開始執行,但當執行到外部的語句時就出錯了。
因為這時的外部語句就像好像是 SELECT name FROM bbc WHERE region = ('Americas', 'Europe'),這個語句當然報錯了。 那么有沒有辦法解決這個問題呢,當然有。
有一些SQL查詢條件允許對列表值(即多個值)進行操作。 例如"IN" 操作符,可以測試某個值是否在一個列表中。
下面的語句就可以安全的執行而不出錯,不管表中有多少條包含Brazils的記錄 SELECT name FROM bbc WHERE region IN (SELECT region FROM bbc WHERE name = 'Brazil') OK, 讓我們再看看一些具體的實例, 一、給出人口多于Russia(俄國)的國家名稱 SELECT name FROM bbcWHERE population>(SELECT population FROM bbcWHERE name='Russia') 二、給出'India'(印度), 'Iran'(伊朗)所在地區的所有國家的所有信息 SELECT * FROM bbcWHERE region IN(SELECT region FROM bbcWHERE name IN ('India','Iran')) 三、給出人均GDP超過'United Kingdom'(英國)的歐洲國家. SELECT name FROM bbcWHERE region='Europe' AND gdp/population >(SELECT gdp/population FROM bbcWHERE name='United Kingdom')。
轉載請注明出處華閱文章網 » sql查詢語句大全講解