1. 程式人生 > >資料庫基本----SQL語句大全

資料庫基本----SQL語句大全

資料庫基本 ---- SQL語句大全


一、基礎

    
1 、說明:建立資料庫
    Create DATABASE database
- name

    
2 、說明:刪除資料庫
    drop database dbname

    
3 、說明:備份sql server
    
---
 建立 備份資料的 device
    USE master
    EXEC sp_addumpdevice 
' disk ' ' testBack ' ' c:/mssql7backup/MyNwind_1.dat '
    
---  開始 備份
    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:
    全外連線:不僅包括符號連線表的匹配行,還包括兩個連線表中的所有記錄。

二、提升

    
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   ' "&Server.MapPath("."&"/data.mdb" &" '  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 a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title
= a.title) 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 、說明:兩張關聯表,刪除主表中已經在副表中沒有的資訊
    delete from table1 where not exists ( select 
*  from table2 where table1.field1 = table2.field1

    
11 、說明:四表聯查問題:
    select 
*  from a left inner join b on a.a = b.b right inner join c on a.a = c.c inner join d on a.a = d.d where ..

    
12 、說明:日程安排提前五分鐘提醒
    select 
*  from 日程安排 where datediff( ' minute ' ,f開始時間,getdate()) > 5

    
13 、說明:一條sql 語句搞定資料庫分頁
    select top 
10  b. *  from (select top  20  主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位  =  a.主鍵欄位 order by a.排序欄位

    
14 、說明:前10條記錄
    select top 
10   *  form table1 where 範圍

    
15 、說明:選擇在每一組b值相同的資料中對應的a最大的記錄的所有資訊(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)
    select a,b,c from tablename ta where a
= (select max(a) from tablename tb where tb.b = ta.b)

    
16 、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重複行而派生出一個結果表
    (select a from tableA   except (select a from tableB) except (select a from tableC)

    
17 、說明:隨機取出10條資料
    select top 
10   *  from tablename order by newid()

    
18 、說明:隨機選擇記錄
    select newid()

    
19 、說明:刪除重複記錄
    Delete from tablename where id not 
in  (select max(id) from tablename group by col1,col2,)

    
20 、說明:列出資料庫裡所有的表名
    select name from sysobjects where type
= ' U '

    
21 、說明:列出表裡的所有的
    select name from syscolumns where id
= object_id( ' TableName ' )

    
22 、說明:列示type、vender、pcs欄位,以type欄位排列,case可以方便地實現多重選擇,類似select 中的case。
    select type,sum(
case  vender when  ' A '  then pcs  else   0  end),sum( case  vender when  ' C '  then pcs  else   0  end),sum( case  vender when  ' B '  then pcs  else   0  end) 

FROM tablename group by type
    顯示結果:
    type vender pcs
    電腦 A 
1
    電腦 A 
1
    光碟 B 
2
    光碟 A 
2
    手機 B 
3
    手機 C 
3

    
23 、說明:初始化表table1

    TRUNCATE TABLE table1

    
24 、說明:選擇從10到15的記錄
    select top 
5   *  from (select top  15   *  from table order by id asc) table_別名 order by id desc

三、技巧

    
1 1 = 1 1 = 2的使用,在SQL語句組合時用的較多

    “where 
1 = 1 ” 是表示選擇全部   “where  1 = 2 ”全部不選,
    如:
    
if  @strWhere  != '
    begin
        
set  @strSQL  =   ' select count(*) as Total from [ '   +  @tblName  +   ' ] where  '   +  @strWhere
    end
    
else
        begin
            
set  @strSQL  =   ' select count(*) as Total from [ '   +  @tblName  +   ' ] '
        end

    我們可以直接寫成
    
set  @strSQL  =   ' select count(*) as Total from [ '   +  @tblName  +   ' ] where 1=1 安定  ' +  @strWhere

    
2 、收縮資料庫
    
-- 重建索引
    DBCC REINDEX
    DBCC INDEXDEFRAG
    
-- 收縮資料和日誌
    DBCC SHRINKDB
    DBCC SHRINKFILE

    
3 、壓縮資料庫
    dbcc shrinkdatabase(dbname)

    
4 、轉移資料庫給新使用者以已存在使用者許可權
    exec sp_change_users_login 
' update_one ' , ' newname ' , ' oldname '
    go

    
5 、檢查備份集
    RESTORE VERIFYONLY from disk
= ' E:/dvbbs.bak '

    
6 、修復資料庫
    Alter DATABASE [dvbbs] SET SINGLE_USER
    GO
    DBCC CHECKDB(
' dvbbs ' ,repair_allow_data_loss) WITH TABLOCK
    GO
    Alter DATABASE [dvbbs] SET MULTI_USER
    GO

    
7 、日誌清除
    SET NOCOUNT ON
    DECLARE @LogicalFileName sysname,
             @MaxMinutes INT,
             @NewSize INT


    USE     tablename             
--  要操作的資料庫名
    Select   @LogicalFileName 
=   ' tablename_log ' ,    --  日誌檔名
    @MaxMinutes 
=   10 ,                --  Limit on time allowed to wrap log.
             @NewSize 
=   1                     --  你想設定的日誌檔案的大小(M)

    
--  Setup  /  initialize
    DECLARE @OriginalSize 
int
    Select @OriginalSize 
=  size
       FROM sysfiles
       Where name 
=  @LogicalFileName
    Select 
' Original Size of  '   +  db_name()  +   '  LOG is  '   +
             CONVERT(VARCHAR(
30 ),@OriginalSize)  +   '  8K pages or  '   +
             CONVERT(VARCHAR(
30 ),(@OriginalSize * 8 / 1024 ))  +   ' MB '
       FROM sysfiles
       Where name 
=  @LogicalFileName
    Create TABLE DummyTrans
       (DummyColumn 
char  ( 8000 ) not  null )


    DECLARE @Counter   INT,
             @StartTime DATETIME,
             @TruncLog   VARCHAR(
255 )
    Select   @StartTime 
=  GETDATE(),
             @TruncLog 
=   ' BACKUP LOG  '   +  db_name()  +   '  WITH TRUNCATE_ONLY '

    DBCC SHRINKFILE (@LogicalFileName, @NewSize)
    EXEC (@TruncLog)
    
--  Wrap the log  if  necessary.
    WHILE     @MaxMinutes 
>  DATEDIFF (mi, @StartTime, GETDATE())  --  time has not expired
           AND @OriginalSize 
=  (Select size FROM sysfiles Where name  =  @LogicalFileName)
           AND (@OriginalSize 
*   8   / 1024 >  @NewSize
       BEGIN 
--  Outer loop.
         Select @Counter 
=   0
         WHILE   ((@Counter 
<  @OriginalSize  /   16 ) AND (@Counter  <   50000 ))
           BEGIN 
--  update
             Insert DummyTrans VALUES (
' Fill Log ' )
             Delete DummyTrans
             Select @Counter 
=  @Counter  +   1
           END
         EXEC (@TruncLog)
       END
    Select 
' Final Size of  '   +  db_name()  +   '  LOG is  '   +
             CONVERT(VARCHAR(
30 ),size)  +   '  8K pages or  '   +
             CONVERT(VARCHAR(
30 ),(size * 8 / 1024 ))  +   ' MB '
     FROM sysfiles
     Where name 
=  @LogicalFileName

相關推薦

資料庫基本----SQL語句大全

資料庫基本 ---- SQL語句大全一、基礎     1 、說明:建立資料庫    Create DATABASE database - name   &nb

Python-資料庫 基本SQL語句

1.什麼是資料庫 ***** 存放資料的倉庫 資料庫中包含所有內容: 欄位(列) 一行中的某個資料 記錄 一行資料 表 檔案 庫 資料夾 DBMS 資料庫管理系統 socket軟體 資料庫伺服器 計算機 一個庫可以包含多個表 一個表可以包含

資料庫基本_SQL語句大全

CREATE USER user_name1 IDENTIFIED BY ‘password’,  user_name2 IDENTIFIED  BY ‘password’; 一次可以建立多個數據庫使用者 ■刪除資料庫使用者: DROP USER user_name; ■選擇使用者: select user(

VB6基本資料庫應用(三):連線資料庫SQL語句的Select語句初步

資料庫我們已經建好了,重提一下上一章的結果,我們最後建立了一張Student的表,其中有StudentID(數字的雙精度型別)和StudentName(文字型別。補充一下,2013中有【長文字】和【短文字】,人名不會很長,根據上一章選擇儘量小的資料型別的規則,這裡就選【短文字】就可以了)。儘

資料庫基本sql語句

資料庫中 有很多語句,這裡羅列一些基礎的增刪查改的sql語句(這裡的sql是mysql中的一些簡單sql語句,) sql (是 Structured Query Language 結構化查詢語言的 縮寫) – 建立資料庫 create database 資料

sqlite資料庫中的sql語句大全

2010年SQLite學習筆記之一 一. 如何獲取SQLite最新版本 即如下頁面下載 二.Windows下的SQLite的原始碼是哪個軟體壓縮包? 三.Window下的SQLite命令列工具 四.Window下的SQLite開發庫,即動態連結庫以及DEF檔案 五.SQLite最新版本是:

各種資料庫分頁查詢sql語句大全

在顯示記錄條目時往往要用到分頁,一種常用的辦法是利用各種資料庫自帶的定位介面對原始查詢語句進行改寫,從而只取出特定範圍的某些記錄。不同的資料庫,查詢定位介面是不一樣的,下面做一彙總:  資料庫  分頁查詢語句  說明  MySQL    "QUERY_SQL

Sql Server】經典SQL語句大全

left 提高 status 需要 minute etime 路徑 求和 組合 一、基礎 1、說明:創建數據庫 CREATE DATABASE database-name 2、說明:刪除數據庫 drop database dbname 3、說明:備份sql

基本sql語句

-h utf8 刪除表 character art primary blank 屬性。 code 庫 1. 創建庫 create database test; 2.#指定字符集(mysql 5.0 以上) create database redmine character

測試需要知道的9條基本sql語句

sql語句1、測試需要學習簡單的基本的sql語句選擇:select from table1 where 範圍插入:insert into table1(field1,field2) values(value1,value2)刪除:delete from table1 where 範圍更新:update ta

SQL語句大全

大於等於 算術 特定 per 字符 ger 選擇 小年 外連接 SQL語句實例 表操作 例 1 對於表的教學管理數據庫中的表 STUDENTS ,可以定義如下: CREATE TABLE STUDENTS (SNO NUMERIC

1 基本sql語句

語句 delet class pre bold use delete rss cat TRUNCATE TABLE rdrssit_4.pysbig_table1; DELETE from rdrssit_5.test_table01 where userid>

Python-數據庫 基本SQL語句

數據庫服務 網絡 eat date lec client 容量 必須 ODB 1.什麽是數據庫 ***** 存放數據的倉庫 數據庫中包含所有內容: 字段(列) 一行中的某個數據 記錄 一行數據 表 文件 庫 文件夾 DBM

Python連線MySQL資料庫執行sql語句時的引數問題

由於工作需要,今天寫了一個Python小指令碼,其中需要連線MySQL資料庫,在執行sql命令時需要傳遞引數,結果出問題了。在網上查了一下,發現有以下幾種方式傳遞引數: 一.直接把sql查詢語句完整寫入字串 try: connection = MySQLdb.connect(user

Oracle資料庫 基礎SQL語句練習

一、說明   第一次使用Oracle,想做一些練習,熟悉一些oracle。   表:使用的是scott使用者,預設的表   具體表講解,可以參考該文件:https://www.cnblogs.com/xjcheng1/p/7220159.html 二、基礎練習 第一、查詢工資在0-1000,1000

access資料庫SQL語句

一, 有個表student,兩個欄位Sname和Age,values 一次搞一條,想搞多條用select ...union select...結果集; 單條插入INSERT INTO student (Sname,Age) 

PHP中連線資料庫sql語句的執行

在PHP中連線資料庫的方式主要有:mysql(面向過程)、mysqli(面向物件、面向過程)、PDO 但是,最常用的方式就是:mysqli的面向物件,實現的方法就是將mysqli封裝成一個類。 構造方法: —construct([string $host [,string $userna

資料庫——常用SQL語句總結

資料庫是個好東西,最好是系統地學習一下相關的知識,當然,如果實在沒有時間,那就學習一下如何操作資料庫好了。這裡就根據網上的各類總結文章,總結一下常用的SQL語句,給學習SQL的胖友,更是給健忘的自己。 一、基礎操作 1、使用sql對資料庫操作 連線資料庫命令: mysql -u r

mysql sql語句大全(轉載)

原文地址:https://www.cnblogs.com/bchjazh/p/5997728.html 1、說明:建立資料庫 CREATE DATABASE database-name 2、說明:刪除資料庫 drop database dbname 3、說明:備份sql server --- 建立

小白學python---------------基本sql語句

一.庫的增刪改查 資料夾:庫 增: create database db1 charset utf8; 刪: drop database db1; 改: alter database db1 ch