文章出處

摘要

因為最近參加校招,題庫中有一部分sql語句的題目,感覺不是很難吧?但因之前沒學過sql這門語言,當時心里是拒絕的,所以決定發瘋圖強,找些資料,學了之后根據自己的理解寫出來,再說以后肯定也是會用到的,所以學了肯定是有百利而無一害,所以,大家共勉~

雞湯一則:

“人生不是百米賽跑,而是馬拉松~”

本文目錄

一sql 簡介 sql是用于訪問和處理數據庫的標準的計算機語言什么是sql 二安裝與配置 sql server 2012版 三sql DML DDL 基礎認識數據庫表重要事項 sql DML 和 DDL SQL 中最重要的 DDL 語句 四sql 基本語句簡單介紹一 sql create table 語句 insert into 子句 二sql select 語句 where 子句 between and like 子句 in 子句 distinct 關鍵字 group by 語句 having 子句 三 update 語句   四delete 語句

一、sql 簡介

sql是用于訪問和處理數據庫的標準的計算機語言。

結構化查詢語言SQL(STRUCTURED QUERY LANGUAGE)是最重要的關系數據庫操作語言,并且它的影響已經超出數據庫領域,得到其他領域的重視和采用,如人工智能領域的數據檢索,第四代軟件開發工具中嵌入SQL的語言等。

什么是sql?

sql指結構化查詢語句

sql讓我們有能力訪問數據庫

上面只是大致的介紹了sql的定義和作用,想詳細了解,百度一下,我就不在這里贅述了。

二、安裝與配置

sql server 2012版

這里我提供了安裝鏈接,大家根據自己的電腦版本自行選擇。2012簡體中文版官方下載頁面:http://www.microsoft.com/zh-cn/download/details.aspx?id=29066

操作系統:

至少等于或者高于win7操作系統版本.

內存空間:

最少1GB,推薦使用4GB的內存,最好不要安裝在C盤。

安裝步驟:

具體的安裝步驟網上有很多教程,我自己是根據慕課網的教學視頻安裝的。說的很詳細,謝謝慕課網的老師們!這里的學習安裝視頻地址:http://www.imooc.com/video/8469

那當你安裝配置好sql server 2012之后,我們開始學習sql語言。

三、sql DML DDL 基礎認識

數據庫表

一個數據庫通常包含一個或多個表。每個表由一個名字標識(例如“客戶”或者“訂單”)。表包含帶有數據的記錄(行)。

下面的例子是一個名為”Persons”的表:

nameagessexaddresscity

張三23男北京路南京

李四22男上海路北京

小明19男遵義路北京

妮兒18女廣州路重慶

翠花21女天津路哈爾濱

上面的表包含四條記錄(每一條對應一個人)和五個列(姓名、年齡、性別、地址、城市)

重要事項

sql對大小寫不敏感

sql DML 和 DDL

sql DML(數據操作語言)

可以把SQL分為兩個部分:數據操作語言(DML)和數據定義語言(DDL)。

sql(結構化查詢語言)是用于執行查詢的語法。sql語言也包括更新、插入和刪除記錄的語法。

查詢和更新指令構成了sql的DML部分:

select -從數據庫表中獲取數據

update -跟新數據庫表中的數據

delete -從數據庫表中刪除數據

insert into -向數據庫表中插入數據

sql DDL(數據定義語言)

SQL 的數據定義語言 (DDL) 部分使我們有能力創建或刪除表格。

SQL 中最重要的 DDL 語句:

create database - 創建新數據庫 alter database - 修改數據庫 create table - 創建新表 alter table - 變更(改變)數據庫表 drop table - 刪除表 create index - 創建索引(搜索鍵) drop index - 刪除索引

四、sql 基本語句簡單介紹

下面我先在數據庫中創建一個數據表,然后在對數據表進行一系列的操作。

那么先了解在數據庫中怎么創建一張數據表?

(一) sql create table 語句

create table語句 用于創建數據庫中的表。

sql create table語法

create table 表名

(列名稱1 數據類型,

列名稱2 數據類型,

列名稱3 數據類型,

......

)

數據類型規定了列可容納何種數據類型。下面的表格包含了sql中最常用的數據類型。

數據類型描述

integer/int/smallint/tinyint(size)僅容納整數。在括號內規定數字的最大位數

decimal/numeric(size,d)容納帶有小數的數字。”size”規定數字的最大位數。”d”規定小數點右側的最大位數

char(size)容納固定長度的字符串(可容納字母,數字以及特殊字符)。在括號中規定字符串的長度

varchar(size)容納可變長度的字符串(可容納字母、數字以及特殊的字符)。在括號中規定字符串的最大長度。

date(yyyymmdd)容納日期

那么我們使用create table創建上述的表Persons。

在創建數據Persons表之前,先得先創建一個數據庫,可以理解為庫是一個容器,創建庫的方法很簡單,如下圖所示就可以創建一個新的數據庫,或者使用“create database 數據庫名” 語句也可以成功創建一個新的數據庫。

 

創建數據庫

 

創建好數據庫之后,我在數據庫中創建一張數據表,把我上面的Persons的值全插入進去,進行后面的sql操作。但是由于中文與sql默認編碼不符,所以會出現全是???的亂碼,所以我先解決編碼問題。

解決編碼問題,以sql server 2012為例,詳細步驟如:右鍵點擊剛創建好的數據庫->屬性-> 選項->排序規則->選擇為Chinese_PRC_CI_AS

解決好上述一系列問題之后,就可以創建一個數據表了,我以上面的Persons表為例。sql語句如下:

use [MyDB] /*use 語句指定數據庫*/

create table Persons

(

name varchar(255) not null,

age int not null,

sex varchar(255) not null,

location varchar(255),

city varchar(255)

);

創建好數據表Persons之后,使用insert into 插入數據。insert into 分為行插數據跟列插數據。

insert into 子句

行插:insert into 表名稱 values(值1,值2,……) 列插:insert into 表名稱 (列1,列2,……) values(值1,值2,……)

我使用行插方法對表Persons插入數據。

insert into Persons values(N'張三',23,N'男',N'北京路',N'南京');

insert into Persons values(N'李四',22,N'男',N'上海路',N'北京');

insert into Persons values(N'小明',19,N'男',N'遵義路',N'北京');

insert into Persons values(N'妮兒',18,N'女',N'廣州路',N'重慶');

insert into Persons values(N'翠花',21,N'女',N'天津路',N'哈爾濱');

得到如下結果集:

 

插入數據之后的結果集

 

下面使用我生成好的數據表Persons進行下面的sql操作。

(二)sql select 語句

select 語句用于從表中選取數據,結果被存儲在一個結果表中。

select 列名 from 表名; /*columns_name為想獲取的列*/

select * from 表名; /*如果想獲取全部列信息,可用*替代columns_name */

那么假如我想獲取上面”Persons”表的name和city列,使用如下sql代碼即可得到:

select name,city from Persons ; /*當選取多行時,中間用英文狀態下的','分隔開*/

查詢結果如下所示:

 

選擇列為name和city

 

那么假如我希望此結果只輸出性別為男性的數據,此處用where子句。如下sql語句所示:

select * from Persons where sex=N'男'; /*中文前面加"N"*/

查詢結果如下所示:

 

使用where找出性別為男的數據

 

下面對where子句進行詳細介紹

where 子句

作用:where子句用于規定選擇的標準。

如需有條件地從表中選取數據,可將where子句添加select語句

select 列名 from 表名 where 列名 運算符 值

下表的運算符可在where子句中使用:

操作符描述

=等于(切記sql中等于為一個”=”號,某些語言中等于為”==”號)

<>不等于(某些版本的sql可以寫為”!=”)

>大于

<小于

>=大于等于

<=小于等于

between and在某個范圍內

like搜索某種模式

in可以規定多個值

對上述表中的等于、不等于、小于、不小于、大于、不大于的使用跟其他語言的使用方法一樣,在這里不贅述,詳細來介紹下between and、like、in的使用方法。

1. between and

between 操作符在where子句中使用,作用是選取介于兩個值之間的數據范圍。

sql between 語法

select 列名 from 表名 where 列名 between 值1 and 值2; /*語句中的列名可相同可不同,值1與值2的數據類型必須相同*/

使用between and 語句獲取表Persons中age在18-22歲的人,sql between語句如下:

select * from Persons where age between 18 and 21; /*between and語句獲取的值包含兩端的值*/

select * from Persons where age >=18 and age<= 21; /*等同于上句的查詢結果*/

查詢結果如下所示:

 

使用between and語句查詢一個范圍內的數據

 

2. like 子句

like 操作符用于在where子句中搜索列中的指定模式。

sql like 操作符語法

select 列名 from 表名 where 列名 like pattern; /* "%" 可用于定義通配符(模式中缺少的字母,還有其他通配符,如"_"等*/

想獲取city中以”京”結尾的人,sql語句如下所示:

select * from Persons where city like N'%京';

 

like操作符

 

3. in 子句

in操作符允許在where子句中規定多個值。

sql in 語法:

select 列名 from 表名 where 列名 in (值1,值2)

in操作符實例:想選取出小明和妮兒的數據。

select * from Persons where name in (N'小明',N'妮兒');

查詢的結果如下所示:

 

in子句的查詢結果

 

4. distinct 關鍵字

distinc關鍵字用于返回唯一不同的值(有點去重的意思)

distinct 語法:

select distinct 列名 from 表名

對Persons數據表的city列進行distinct操作,sql語句如下:

select distinct city from Persons ;/*找出city列中的唯一值*/

查詢的結果如下所示:

 

distinct找出列的唯一值

 

5. group by 語句

group by:合計函數,根據一個或多個列對表分組

sql group by 語法:

select 列名,合計函數(列名) as 新列名 from 表名 group by 列名; /*合計函數一般有sum等,as表示為合計函數計算的結果新命名*/

對city列分組,計算其組的平均年齡,sql語句如下:

select city,sum(age) as sum_age from Persons group by city;/*對city分組,然后計算組內年齡的總和*/

查詢的結果所下所示:

 

group by 分組函數

 

那么假如我想找出年齡和小于30的city,怎么做呢?首先我會想到用where語句來鎖定范圍,但是呢?sql中where 關鍵字無法與合計函數一起使用,不信你自己試試唄!這也正是having子句 出現的原因,那么下面我使用having子句來查詢我想要的結果。

having 子句

sql語句如下所示:

select city,sum(age) as sum_age from Persons group by city having sum(age)<30; /*這里需要注意的是having必須使用合計函數來查詢結果,之前試過用sum_age<30,報錯*/

上面講完了創建數據表(create table 表名)、插入數據(insert into),那么下面簡單介紹下修改(update)和刪除(delete)表中數據。

(三) update 語句

update 語句用于修改表中的數據。

sql update語法:

update 表名 set 列名=新值 where 列名=某值; /*列名通常不同*/

假如我將李四的age填錯了,想做出修改,那么sql 語句如下:

update Persons set age=20 where name=N'李四'; /*中文前加N*/

查詢結果如下所示:

 

對數據修改 update

 

通過修改表中的數據,如截圖紅框可見,李四的age已被修改。

(四)delete 語句

dalete 語句用于刪除表中的行

sql delete 語法:

delete from 表名 where 列名=值; /*刪除符合where條件的行*/

delete from 表名; /*可以在不刪除表的情況下刪除所有行,意味著表的結構,屬性和索引都是完整的,直接刪除表為drop 表名*/

假如刪除李四的信息,sql語句如下所示:

delete from Persons where name=N'李四'; /*中文前加N*/

查詢的結果如下所示:

 

這里寫圖片描述

 

可以看到Persons表中,李四的信息已經被刪除。

就愛閱讀www.92to.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20161116/53939.html

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()