<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學習和生活

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
    [ 作者:陳蘇文????轉貼自:http://www.chinaunix.net????點擊數:9525????文章錄入:sdccf
    下面通過實例來對Select的通常用法加以介紹。
    例1:選擇所有的列,語法為select * from table_list
    如:select * from publishers
    例2:選擇指定的列,語法為
    select column_name[,column_name]…
    from table_name
    如:select pub_id,pub_name from publishers
    例3:重命名查詢結果中的列,語法為
    select column_heading= column_name
    from table_name
    如:select Publisher=pub_name,pub_id
    from publishers
    例4:select列表中的計算值,可以對select列表中的數值數據進行計算,下面列出了算術運算符。

    符號運算
    +加
    -減
    /除
    *乘
    %取模
    如select title_id,total_sales,total_sales*2 from titles
    例5:使用distinct消除重復的查詢結果
    可選的關鍵詞消除select語句的結果中的重復行。若不指定distinct,缺省值為all,將檢索出包含重復行的所有行數據。
    如:select distinct au_id from titleauthor
    例6:選擇行——where語句
    select語句中的確切指定要檢索哪些行的準則,其一般格式為:
    select select_list from table_list where search_conditions
    where子句中的搜索條件(或稱限制)包括:
    ·比較運算符(=,<,>,!=等=
    如:where advance*2>total_sales*price
    ·范圍(between和not between)
    如:where total_sales between 5000 and 10000
    ·列表(in和not in)
    如:where state in(“CA”,”IN”,”MD”)
    ·匹配字符(like和not like)
    如:where phone like “0535%”
    ·未知值(is null和is not null)
    如:where advance is null
    ·以上各項的組合(and, or)
    如:where advance<5000 or total_sales between 500 and 1000
    例7:用集合函數小結查詢結果
    集合函數用特定列的數據來計算小結值。
    集合函數結 果
    Sum([all|distinct]expression)數值列中(不重復)值的總和
    Avg([all|distinct]expression)數值列中(不重復)值的平均
    count([all|distinct]expression)列中(不重復)非空值的數目
    Count(*)選定的行數
    Max(expression)Expression的最大值
    Min(expression)Expression的最小值
    如:select avg(advance),sum(total_sales)
    from titles
    where type=”as”
    select count(*) from titles
    select avg(distinct price) from titles
    select max(price) from books
    例8:分組組織查詢結果——group by 子句
    group by 子句用在select語句中將一張表分成若干組。
    如:select type, advance from titles group by type
    例9:選擇分組數據——having子句
    having為group by 子句設置條件,與where為select語句設置條件一樣。Having搜索條件與where相同,但having可包括集合函數,而where不能包括。
    下列語句使用帶集合函數having子句的例子。它把title表中的行按類型分組,但去掉了那只包含一本書的分組。
    Select type from titles group by type having count(*)>1
    下面是一個不帶集合函數的having子句的例子。它把title表中的行按類型分組,但去掉了那些不以字母“p”開頭的類型。
    Select type from titles group by type having type like “p%”
    例10:查詢結果排序——order by子句
    Order by子句允許按一列或多列對查詢結果排序。每個排序可以是升序的(asc)或降序的(desc)。若不特別指明,則按升序進行。下列查詢返回按pub_id排序的結果:
    Select pub_id,type,title_id from titles order by pub_id
    例11:連接——從多張表中檢索數據
    連接兩張或兩張以上的表是這樣一個過程:比較指定字段中的數據,根據比較結果用符合條件的行組成一張新表。
    舉例:
    select publishers.pub_id,publishers.pub_name,authors.*
    from publishers,authors
    where publishers.city=authors.city
    例12:分組計算子句
    Compute是Sybase對SQL標準中Group子句的擴充,可以將其看作帶聚集計算的Group子句。例如:
    Select type,price,advance
    From titles
    Order by type
    Compute sum(price),sum(advance) by type
    2.Insert語句
    用Insert命令向數據庫中添加行有兩種方法:使用關鍵詞values或使用select語句。
    Insert語句的基本語法為:
    Insert[into]表名[(字段列表)]
    {values(值列表)|select_statement}
    舉例:insert into publishers
    values(‘1622’,’Jardin,Inc.’,’Camden’,’NJ’)
    Insert into publishers(pub_id,pub_name)
    values(‘1756’,’The Health Center’)
    Insert authors select * from newauthors
    Insert authors(au_id,address,au_lname,au_fname)
    Select * from newauthors
    3.Delect語句
    Delect可以對一行或多行進行操作。
    Delect語句的基本語法為:
    Delect 表名
    [from 表名列表]
    [where條件表達式]
    舉例:Delect publishers
    where pub_name=”Jardin,Inc.”
    Delect titles
    From authors, titles
    Where titles.title_id=authors.title_id
    4.Update語句
    可以使用Update命令來改動表中的單個行、一組行或所有行。
    Update語句的基本語法為:
    Update表名
    Set column_name1={expression1|null|(select_statement)}
    [,column_name2={expression2|null|(select_statement)}]
    [……]
    [from 表名列表]
    [where 條件表達式]
    舉例:
    update authors set_au_lname=”Health”,aufname=”Goodbody”
    where au_lname=”Bloth”
    update titles
    set total_sales=total_sales + qty
    from titles,sales
    where titles.title_id=sales.title_id
    六、Sybase預定義函數
    1.聚集函數
    sum([all|distinct]表達式)
    avg([all|distinct]表達式)
    count([all|distinct]表達式)
    count(*)
    max(表達式)
    min(表達式)
    2.字符串函數
    upper(字符表達式)
    lower(字符表達式)
    char(整型表達式)
    char_length(字符表達式)
    ltrim(字符表達式)
    rtrim(字符表達式)
    ……
    3.數學函數
    abs(精確小數型表達式)
    floor(精確小數型表達式)求小于或等于給定表達式值的最大整數(取底)
    rand([整數型]
    round(精確小數型表達式,整數)
    sign(精確小數型表達式)
    power(精確小數型表達式,整數冪)
    ……
    4.日期函數
    getdate()
    datepart(日期部分,日期)
    datediff(日期部分,日期1,日期2)
    dateadd(日期部分,數值表達式,日期)
    5.類型轉換函數
    convert(數據類型,表達式[,格式])
    6.系統函數
    db_name([數據庫ID])
    host_name()
    isnull(表達式1,表達式2)
    ……
    七、數據控制語言
    用來控制數據的安全性,如權限控制語句GRANT和REVOKE等。


    第七講 數據庫編程基礎

    一、批處理
    SQL Server可以處理作為一批而提交的多個SQL語句,既可以是交互式的,也可以是一個文件。批處理SQL語句由批結束標志終止,該標志指示SQL Server從前面開始執行該批處理語句,對于獨立的SQL實用程序isql而言,其批結束標志為單獨占一行的“go”。
    舉例:選擇表title及表authors的行數
    select count(*) from titles
    select count(*) from authors
    go
    二、流程控制語言
    1.變量聲明與賦值
    全局變量由系統預定義,以符號@@打頭。
    局部變量聲明使用Declare語句,這個變量必須以符號@開頭,后跟一個標識符。
    Declare @變量名 數據類型[,@變量名 數據類型,……]
    變量賦值使用Select語句,未賦值的變量其值為Null。
    舉例:
    Declare @msg char(50)
    Select @msg=’How are you?’
    Select @msg=emp_name from employee
    Where emp_id=12345678
    2.SQL語句塊
    Begin
    Statement Block/*多個順序執行的SQL 語句*/
    End
    3.條件語句
    If 條件表達式
    語句(塊)
    Else
    語句(塊)
    舉例:
    if(select max(id) from sysobjects)<50
    print ‘數據庫里沒有用戶創建的對象‘
    else
    select name,type,id from sysobjects where id>50
    4.循環語句
    While 條件表達式
    語句(塊)
    ●兩個特殊的循環控制語句:
    Continue 執行下一次循環
    Break 退出當前循環
    舉例:
    While(select avg(price) from titles)>$20
    Begin
    Update titles set price=price/2
    If(select avg(price) from titles)<$40
    Break
    Else
    Continue
    End
    5.其它控制語句
    ◇Return語句——無條件結束當前過程,并可返回給調用者的一個狀態值:Return[整數表達式]
    ◇Print語句
    ◇RaiseError語句
    ◇Waitfor語句
    三、存儲過程
    存儲過程是存儲在服務器端的一類數據庫對象,它實質上是一段用SQL語言編寫的程序,它在服務器端預先經過編譯,并確定出執行計劃,因此與同樣功能的批處理語句相比,它的執行速度較快。
    基本語法:
    Create Procedure[owner.]過程名
    [@參數名 數據類型[=默認值][Output]]
    [,@參數名 數據類型[=默認值][Output]]
    [……]
    AS
    Begin
    SQL語句(塊)
    End
    存儲過程是數據庫對象,和表、索引是一個級別的;是SQL語句和控制流語言的集合,存儲過程在首次運行時被編譯,并駐留在過程高速緩存的內存中,所以存儲過程的招待非常快。存儲過程可以帶參數,可以調用其他過程,返回狀態值,返回參數值,并且可以在遠程SQL Server執行。可以在遠程SQL Server執行對數據庫設計有特別重要的意義。SQL Server提供的存儲過程稱為系統過程。
    存儲過程大大增強了SQL的能力、效率和靈活性,經過編譯的存儲過程極大地改善SQL語句和批處理的性能。
    存儲過程有很多優點:
    ●存儲過程在第一次執行時編譯,并存儲在過程高速緩存的內存中。編譯時系統對其進行優化,以選擇最佳的路徑來訪問數據集中的數據,這種優化考慮了數據集的實際數據結構。因此存儲過程大大提高了系統的性能。
    ●存儲過程可以跨服務器運行。這一點是通過觸發器來實現的,當然,首先存儲過程要能登錄到該遠程服務器。
    ●應用程序也能執行存儲過程,從而實現服務器和客戶之間的協同作業。
    ●存儲過程減少了網絡的交通。這是因為存儲過程的文本存儲在數據庫里,調用存儲過程時通過網絡的只是存儲過程的過程名。
    ●利用存儲過程可以提供一個附加的安全層。
    如(該例子取自pubs2數據庫):
    Create proc titleid_proc(@title_id varchar(80))
    As
    Begin
    Select @title_id=lower(@title_id)+”%”
    Select title,title_id,price
    Form titles
    Where lower(title_id) like @title_id
    Return @@rowcount
    End
    注意例子中的黑體部分,這實際上是一條賦值語句。該存儲過程有返回值。
    存儲過程可以變得非常復雜。我們認為,創建存儲過程還是要遵循“最簡單就是最好”的原則。建議在創建存儲過程時采用縮進風格,否則創建的存儲過程三天之后連自己都看不懂。
    需要對存儲過程作些說明:
    ●Create procedure 語句不能和其他語句在同一個批命令里。
    ●Create procedure 語句不能包括下列語句:
    use
    Create View
    Create default
    Create rule
    Create trigger
    Create procedure
    不能使用use語句好理解,存儲過程是針對數據庫的,不能在一個數據庫里訪問另外的數據庫。如果在存儲過程里訪問另外的數據庫,則數據庫表的參照完整性難于得到保障。
    從另外幾條語句看,在存儲過程里一般不能創建新的數據庫對象。但可以創建表和索引,以及和表相關聯的鍵,表是臨時表,在存儲過程結束后不能看見創建的臨時表;否則的話每運行一次存儲過程就創建一個表,結果可想而知。
    存儲過程里不能創建一個對象,刪除它;然后又在同一存儲過程里用相同的名字創建新的對象。實際上,SQL Server在存儲過程運行時而不是在編譯時創建對象的。
    ●如果存儲過程調用另外的存儲過程,則第二個存儲過程可以調用在第一個存儲過程里創建的對象。
    ●存儲過程包含的最多參數為255個,對存儲過程里的局部和全局變量沒有限制。
    最后討論一下系統存儲過程。系統存儲過程以sp_開頭,當然用戶創建的存儲過程也可以以sp_開頭;?/span>
    posted on 2006-06-07 09:21 TrampEagle 閱讀(921) 評論(0)  編輯  收藏 所屬分類: datebase
    主站蜘蛛池模板: 久久一区二区三区免费| 特级aa**毛片免费观看| 日韩视频免费在线观看| 亚洲国产精品无码久久一区二区| 午夜免费国产体验区免费的| 亚洲国产精品综合久久网络| xxxx日本在线播放免费不卡| 相泽亚洲一区中文字幕| 久久久精品午夜免费不卡| 久久夜色精品国产嚕嚕亚洲av| 久久中文字幕免费视频| 亚洲毛片无码专区亚洲乱| 动漫黄网站免费永久在线观看| 国产亚洲中文日本不卡二区| 国产大片91精品免费观看男同 | 久久亚洲精品成人AV| 曰批全过程免费视频播放网站 | 免费观看激色视频网站bd| 亚洲视频一区二区三区四区| 成年女人免费v片| 黄床大片30分钟免费看 | 亚洲一区二区三区四区在线观看| 亚洲成人免费电影| 亚洲日韩av无码中文| 亚洲人成电影网站国产精品 | 国产高清对白在线观看免费91| 亚洲精品乱码久久久久久久久久久久 | 中文字幕人成人乱码亚洲电影 | 亚洲乱码一二三四五六区| 香蕉高清免费永久在线视频| 一级毛片a免费播放王色 | 亚洲香蕉久久一区二区三区四区| 国产精品久免费的黄网站| 国产又黄又爽胸又大免费视频 | 78成人精品电影在线播放日韩精品电影一区亚洲 | 亚洲免费闲人蜜桃| 亚洲AV成人潮喷综合网| 午夜老司机永久免费看片| 亚洲精品成a人在线观看☆| 亚洲精品高清无码视频| 野花高清在线观看免费3中文|