請簡單介紹sql語句的基本格式
下列語句部分是Mssql語句,不可以在access中使用。
SQL分類: DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE) DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT) DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,簡要介紹基礎語句: 1、說明:創建數據庫 CREATE DATABASE database-name 2、說明:刪除數據庫 drop database dbname 3、說明:備份sql server --- 創建 備份數據的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_*' --- 開始 備份 BACKUP DATABASE pubs TO testBack 4、說明:創建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根據已有的表創建新表: --A: create table tab_new like tab_old --(使用舊表創建新表) --B: create table tab_new as select col1,col2… from tab_old definition only 5、說明:刪除新表 drop table tabname 6、說明:增加一個列 Alter table tabname add column col type 注:列增加后將不能刪除。DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:添加主鍵: Alter table tabname add primary key(col) 說明:刪除主鍵: Alter table tabname drop primary key(col) 8、說明:創建索引: create [unique] index idxname on tabname(col….) 刪除索引: drop index idxname 注:索引是不可更改的,想更改必須刪除重新建。 9、說明:創建視圖: create view viewname as select statement 刪除視圖: drop view viewname 10、說明:幾個簡單的基本的sql語句 選擇:select * from table1 where 范圍 插入:insert into table1(field1,field2) values(value1,value2) 刪除:delete from table1 where 范圍 更新:update table1 set field1=value1 where 范圍 查找:select * from table1 where field1 like '%value1%' ---like的語法很精妙,查資料! 排序:select * from table1 order by field1,field2 [desc] 總數:select count * as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、說明:幾個高級查詢運算詞 A: UNION 運算符 UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。
當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符 EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。
C: INTERSECT 運算符 INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。
注:使用運算詞的幾個查詢結果行必須是一致的。 12、說明:使用外連接 A、left outer join: 左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right outer join: 右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。 C:full outer join: 全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
其次,大家來看一些不錯的sql語句 1、說明:復制表(只復制結構,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1 法二:select top 0 * into b from a 2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3、說明:跨數據庫之間表的拷貝(具體數據使用絕對路徑) (Access可用) insert into b(a, b, c) select d,e,f from b in '具體數據庫' where 條件 例子:..from b in '"&*h(".")&"\*" &"' where.. 4、說明:子查詢(表名1:a 表名2:b) select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3) 5、說明:顯示文章、提交人和最后回復時間 select *,*me,*e from table a,(select max(adddate) adddate from table where *=*) b 6、說明:外連接查詢(表名1:a 表名2:b) select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 7、說明:在線視圖查詢(表名1:a ) select * from (SELECT a,b,c FROM a) T where t.a > 1; 8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括 select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 數值1 and 數值2 9、說明:in 的使用方法 select * from table1 where a [not] in ('值1','值2','值4','值6') 10、說明:兩張關聯表,刪除主表中。
求SQL語言建數據庫簡單實例SQL語言學過了,但就是不知道怎么操 -
建立S,P,J,SPJ表,代碼如下:CREATE SCHEMA SPJ AUTHORIZATION PENGCREATE TABLE S(SNO CHAR(4) PRIMARY KEY,SNAME CHAR(20),STATUS SMALLINT,CITY CHAR(8))CREATE TABLE P(PNO CHAR(4) PRIMARY KEY,PNAME CHAR(8),COLOR CHAR(2),WEIGHT SMALLINT)CREATE TABLE J(JNO CHAR(4) PRIMARY KEY,JNAME CHAR(20)UNIQUE,CITY CHAR(8))CREATE TABLE SPJ(SNO CHAR(4),PNO CHAR(4),JNO CHAR(4),QTY SMALLINT,PRIMARY KEY (SNO,PNO,JNO),FOREIGN KEY (SNO) REFERENCES S(SNO),FOREIGN KEY (PNO) REFERENCES P(PNO),FOREIGN KEY (JNO) REFERENCES J(JNO))定義模式語句"CREATE SCHEMA" 和定義數據庫語句"CREATE DATABASE"是等效的,只是"CREATE DATABASE"是99以前的版本出現的。
簡單的SQL語言(數據庫作業)
--⑴ 張鵬同學不及格的那些課程名,以及這些課程的分數、任課教師 select Cn,Score,TEACHER from C join ( select C# ,score from SC where S# = (select S# from S where Sn='張鵬' ) ) T on C.C#=T.C# --⑵ 選了劉洋老師三門以上課程的學生的學號和姓名 select S#,Sn from S where S# in ( select S# from SC where C# in(select C# from C where TEACHER ='劉洋') group by S# having COUNT(*)>3 ) --⑶ 只有男生選的課程名稱和教師——要求不用集合運算符 select Cn,TEACHER from C where C# not in ( select C# from SC where S# in(select S# from S where sex='女') ) --⑷ 全部女生都選了的課程名稱 select C# from SC where S# in(select S# from S where sex='女') group by C# having COUNT(*)= (select COUNT(*) from S where sex='女') -- ⑸ 數據庫課程分數低于平均的學生姓名和他的分數 select Cn,Score from C join ( select C#,Score from SC where C# =(select C# from C where Cn='數據庫') and Score 追問: 第一題不是還有個不及格的條件嗎??是不是在最后加一個where score>60?? 追答: 恩select Cn,Score,TEACHER from C join ( select C# ,score from SC where S# = (select S# from S where Sn='張鵬' and score 追問: 第一題能不能不用連接?像這樣:select *, *R, * from SC, C where C#=(select c# from s where c#= ( select c# from S Where Sn='張鵬' and score>60))額,這個應該是錯的吧。
,,好像C#不在S中 追答: 難道我第一題用的不是連接? 評論0 0 0。
數據庫高手來幫忙寫幾句簡單的sql語句
一共給你兩分答案,第一份是本人寫的.第二份是上課的老師寫的,你可以對比一下:--1.選擇部門30中的雇員.select * from emp where deptno=30;--2.列出所有辦事員的姓名,編號和部門.select ename,empno,deptno from emp where job='CLERK';--3.找出傭金高于薪金的雇員.select * from emp where comm>sal;--4.找出傭金高于薪金的60%的雇員.select * from emp where comm>sal*0.6;--5.找出部門10中所有經理和部門20中所有辦事員的詳細資料.select * from emp where (deptno=10 and job='MANAGER')or (deptno=20 and job='CLERK');select * from emp where deptno=10 and job='MANAGER'unionselect * from emp where deptno=20 and job='CLERK';--6.找出部門10中所有經理.部門20中所有辦事員以及既不是---經理又不是辦事員但其薪金大于或等于2000的所有雇員的詳細資料.select * from emp where deptno=10 and job='MANAGER'unionselect * from emp where deptno=20 and job='CLERK'unionselect * from emp where sal>=2000;--7.找出收取傭金的雇員的不同工作.select distinct job from emp where comm is not null;--8.找出不收取傭金或收取的傭金低于100的雇員.select * from emp where comm is null or comm144;--11.顯示只有首字母大寫的所有雇員的姓名.select initcap(ename) from emp;select * from emp where ename=initcap(ename);--12.顯示正好為5個字符的雇員姓名.select ename from emp where length(ename)=5;--13.顯示不帶有"R"的雇員姓名.select ename from emp where ename not like('%R%');--14.顯示所有雇員的姓名的前三個字符.select substr(ename,1,3) from emp;--15.顯示所有雇員的姓名,用a替換所有"A"select replace(ename,'A','a') from emp;--16.顯示所有雇員的姓名以及滿10年服務年限的日期.select ename,add_months(hiredate,120) from emp;--17.顯示雇員的詳細資料,按姓名排序.select * from emp order by ename;--18.顯示雇員姓名,根據其服務年限,將最老的雇員排在最前面.select ename,hiredate from emp order by hiredate;--19.顯示所有雇員的姓名.工作的薪金,按工作內的工作的降序順序排序,而工作按薪金排序.select ename,job,sal from emp order by job desc,sal;--20.顯示所有雇員的姓名的加入公司的年份和月份,按雇員受雇日所在月排序,--并將最早年份的項目排在最前面.select ename,to_char(hiredate,'yyyy-mon') from emp order by to_char(hiredate,'mon'),to_char(hiredate,'yyyy');--21.顯示在一個月為30天的情況所有雇員的日薪金,忽略余數.select ename,trunc(sal/30) from emp;--22.找出在(任何年份的)2月受聘的所有雇員。
select * from emp where to_char(hiredate,'mm')='02';--23.對于每個雇員,顯示其加入公司的天數.select ename,floor(sysdate-hiredate)as 天數 from emp;--24.顯示姓名字段的任何位置包含"A"的所有雇員的姓名.select * from emp where ename like '%A%';--25.以年.月和日顯示所有雇員的服務年限.select ename,to_char(hiredate,'*') from emp;___________________________________________________使用scott/tiger用戶下的emp表完成下列練習,表的結構說明如下emp員工表(empno員工號/ename員工姓名/job工作/mgr上級編號/hiredate受雇日期/sal薪金/comm傭金/deptno部門編號)------1.選擇部門30中的所有員工.select * from emp where deptno=30; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ---------- 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 7900 JAMES CLERK 7698 03-12月-81 950 30------2.列出所有辦事員(CLERK)的姓名,編號和部門編號. select empno,ename,deptno from emp where job='CLERK'; EMPNO ENAME DEPTNO---------- ---------- ---------- 7369 SMITH 20 7876 ADAMS 20 7900 JAMES 30 7934 MILLER 10------3.找出傭金高于薪金的員工.select * from emp where nvl(comm,0)>sal; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ---------- 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30------4.找出傭金高于薪金的60%的員工.select * from emp where nvl(comm,0)>(sal*0.6); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ---------- 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30------5.找出部門10中所有經理(MANAGER)和部門20中所有辦事員(CLERK)的詳細資料.select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK'); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- ---------- ---------- 。
求一簡單的sql語句
要查第一頁,輸入:
select * from ( select top 2 * from ( select top 2*1 * from your_table order by id asc ) as a_your_table order by id desc ) as b_your_table order by id asc
要查第二頁,輸入:
select * from ( select top 2 * from ( select top 2*2 * from your_table order by id asc ) as a_your_table order by id desc ) as b_your_table order by id asc
要查詢第三頁,輸入:
select * from ( select top 2 * from ( select top 3*2 * from your_table order by id asc ) as a_your_table order by id desc ) as b_your_table order by id asc
代碼導讀,這里的最內層select語句升序讀出規定行數(頁數*每頁顯示記錄數),中間層select語句降序獲得當前頁的2行記錄,為最外層的展示select語句提供服務。
sql 語句大全
1. 查看數據庫的版本 select @@version 2. 查看數據庫所在機器操作系統參數 exec master..xp_msver 3. 查看數據庫啟動的參數 sp_configure 4. 查看數據庫啟動時間 select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 查看數據庫服務器名和實例名 print 'Server Name。
。
。
:' + convert(varchar(30),@@SERVERNAME) print 'Instance。
。
。
:' + convert(varchar(30),@@SERVICENAME) 5. 查看所有數據庫名稱及大小 sp_helpdb 重命名數據庫用的SQL sp_renamedb 'old_dbname', 'new_dbname' 6. 查看所有數據庫用戶登錄信息 sp_helplogins 查看所有數據庫用戶所屬的角色信息 sp_helpsrvrolemember 修復遷移服務器時孤立用戶時,可以用的fix_orphan_user腳本或者LoneUser過程 更改某個數據對象的用戶屬主 sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner' 注意:更改對象名的任一部分都可能破壞腳本和存儲過程。 把一臺服務器上的數據庫用戶登錄信息備份出來可以用add_login_to_aserver腳本 查看某數據庫下,對象級用戶權限 sp_helprotect 7. 查看鏈接服務器 sp_helplinkedsrvlogin 查看遠端數據庫用戶登錄信息 sp_helpremotelogin 8.查看某數據庫下某個數據對象的大小 sp_spaceused @objname 還可以用sp_toptables過程看最大的N(默認為50)個表 查看某數據庫下某個數據對象的索引信息 sp_helpindex @objname 還可以用SP_NChelpindex過程查看更詳細的索引情況 SP_NChelpindex @objname clustered索引是把記錄按物理順序排列的,索引占的空間比較少。
對鍵值DML操作十分頻繁的表我建議用非clustered索引和約束,fillfactor參數都用默認值。 查看某數據庫下某個數據對象的的約束信息 sp_helpconstraint @objname9.查看數據庫里所有的存儲過程和函數 use @database_name sp_stored_procedures 查看存儲過程和函數的源代碼 sp_helptext '@procedure_name' 查看包含某個字符串@str的數據對象名稱 select distinct object_name(id) from syscomments where text like '%@str%' 創建加密的存儲過程或函數在AS前面加WITH ENCRYPTION參數 解密加密過的存儲過程和函數可以用sp_decrypt過程 10.查看數據庫里用戶和進程的信息 sp_who 查看SQL Server數據庫里的活動用戶和進程的信息 sp_who 'active' 查看SQL Server數據庫里的鎖的情況 sp_lock 進程號1--50是SQL Server系統內部用的,進程號大于50的才是用戶的連接進程. spid是進程編號,dbid是數據庫編號,objid是數據對象編號 查看進程正在執行的SQL語句 dbcc inputbuffer () 推薦大家用經過改進后的sp_who3過程可以直接看到進程運行的SQL語句 sp_who3 檢查死鎖用sp_who_lock過程 sp_who_lock 11.查看和收縮數據庫日志文件的方法 查看所有數據庫日志文件大小 dbcc sqlperf(logspace) 如果某些日志文件較大,收縮簡單恢復模式數據庫日志,收縮后@database_name_log的大小單位為M backup log @database_name with no_log dbcc shrinkfile (@database_name_log, 5) 12.分析SQL Server SQL 語句的方法:set statistics time {on | off} set statistics io {on | off} 圖形方式顯示查詢執行計劃 在查詢分析器->查詢->顯示估計的評估計劃(D)-Ctrl-L 或者點擊工具欄里的圖形 文本方式顯示查詢執行計劃 set showplan_all {on | off} set showplan_text { on | off } set statistics profile { on | off } 13.出現不一致錯誤時,NT事件查看器里出3624號錯誤,修復數據庫的方法 先注釋掉應用程序里引用的出現不一致性錯誤的表,然后在備份或其它機器上先恢復然后做修復操作 alter database [@error_database_name] set single_user 修復出現不一致錯誤的表 dbcc checktable('@error_table_name',repair_allow_data_loss) 或者可惜選擇修復出現不一致錯誤的小型數據庫名 dbcc checkdb('@error_database_name',repair_allow_data_loss) alter database [@error_database_name] set multi_user CHECKDB 有3個參數:repair_allow_data_loss 包括對行和頁進行分配和取消分配以改正分配錯誤、結構行或頁的錯誤,以及刪除已損壞的文本對象,這些修復可能會導致一些數據丟失。
修復操作可以在用戶事務下完成以允許用戶回滾所做的更改。 如果回滾修復,則數據庫仍會含有錯誤,應該從備份進行恢復。
如果由于所提供修復等級的緣故遺漏某個錯誤的修復,則將遺漏任何取決于該修復的修復。 修復完成后,請備份數據庫。
repai*_**st 進行小的、不耗時的修復操作,如修復非聚集索引中的附加鍵。 這些修復可以很快完成,并且不會有丟失數據的危險。
repair_rebuild 執行由 repai*_**st 完成的所有修復,包括需要較長時間的修復(如重建索引)。 執行這些修復時不會有丟失數據的危險。
添加、刪除、修改使用*e(Sql)命令執行操作 ╔--------------------╗ ☆ 數據記錄篩選 ☆ ╚--------------------╝ 注意:單雙引號的用法可能有誤(沒有測式) Sql = "Select Distinct 字段名 From 數據表" Distinct函數,查詢數據庫存表內不重復的記錄 Sql = "Select Count(*) From 數據表 where 字段名1>#18:0:0# and 。