1. 程式人生 > >sql基礎學習

sql基礎學習

描述 行數 font star bst length 返回 res 多條

學習參考網站:http://www.runoob.com/sql/sql-tutorial.html

一、SQL命令

1、SELECT 語句

用於從數據庫中選取數據。

select column_name,column_name from table_name;    #數據庫中選取某個表格某幾列數據
select * from table_name;                          #數據庫中選取某個表格所有列數據

2、SELECT DISTINCT 語句

用於返回唯一不同的值。

select distinct column_name from table_name;             #返回某表中某列唯一不同的值
select distinct column_name,column_name from table_name; #返回某表中多列唯一不同的值

3、WHERE 子句

用於過濾記錄。

select column_name,column_name from table_name where column_name operator value;       #選取滿足某個條件的數據

WHERE 子句中條件判斷會使用的運算符:

運算符描述
= 等於
<> 不等於。註釋:在 SQL 的一些版本中,該操作符可被寫成 !=
> 大於
< 小於
>= 大於等於
<= 小於等於
BETWEEN 在某個範圍內
LIKE 搜索某種模式
IN 指定針對某個列的多個可能值
AND 同時滿足多個條件
OR 多條件滿足其中某個條件值

1) is null (空值判斷)

如查詢 A 表中 a 列中為空的數據。

select * from A where a is null;

2)between and (在之間的值,包含臨界值)

如查詢 A 表中 a 列中大於 100 的小於 200的數據。

select * from A where a between 100 and 200;

3)In(某列多個可能值)

如查詢 A 表 a 列中等於 100,200,300 的數據。

select * from A where a in (100,200,300);

4)like(模糊查詢)

% 表示多個字值,_ 下劃線表示一個字符;

M% : 為能配符,正則表達式,表示的意思為模糊查詢信息為 M 開頭的;

%M% : 表示查詢包含M的所有內容;

%M_ : 表示查詢以M在倒數第二位的所有內容。

如查詢 A 表中 a 列中有 M 的數據:

select * from A where a like %M%;

5) and (多個條件同時滿足查詢)

如查詢A表中a列等於100與b列等於200的數據:

select * from A where a=100 and b=200;

6)or (多個條件滿足某個條件的查詢)

如查詢A表中a列等於100或b列等於100的數據:

select * from A where a=100 or b=200;

4、ORDER BY 關鍵字

用於對結果集進行排序,可以按照一個列或者多個列進行排序,默認按照升序對數據進行排序。如果需要按照降序對記錄進行排序,可以使用 DESC 關鍵字。

select column_name,column_name from table_name order by column_name,column_name asc|desc;    #語法結構

如查詢A表中按a列升序排序展示數據:

select * from A order by a;    #默認asc升序排列

如查詢A表中按a列降序排序展示數據:

select * from A order by a desc;

註:多列排序時,先按第一個列排序,然後按第二個列排序。如下A表

id a b
1 200 10
2 100 30
3 100 20

如:

select * from A order by a,b;

多條件升序排序查找數據後:

id a b
3 100 20
2 100 30
1 200 10

5、INSERT INTO 語句

用於向表中插入新數據。

insert into table_name values (value1,value2,value3,...);                 #無需指定列名,需要列出這一列的每個數據
insert into table_name (column1,column2,...) values (value1,value2,...);  #指定列和被插入的值,一一對應

如向A表中a列中插入數據123,b列中插入111:

insert into A (a,b) values (123,111)     

6、UPDATE 語句

用於更新表中已存在的數據。

update table_name set column1=value1,column2=value2,... where some_column=some_value;

如更新A表中a=100的數據改為a=666,b=888:

update A set a=666, b=888 where a=100;    #不加where條件會把整個表格數據相應的數據都更新掉

註:MySQL 中可以通過設置 sql_safe_updates 這個自帶的參數來解決不帶where的誤操作,當該參數開啟的情況下,你必須在update 語句後攜帶 where 條件,否則就會報錯。set sql_safe_updates=1; 表示開啟該參數。

7、DELETE 語句

用於刪除表中某行的數據。

delete from table_name where some_column=some_value;   #不帶where刪除表中所以數據,但是不釋放空間,需要註意

如刪除A表中a=100的那行:

delete from A where a=100;    

DROP:

drop test;

刪除表test,並釋放空間,將test刪除的一幹二凈。

TRUNCATE:

truncate test;

刪除表test裏的內容,並釋放空間,但不刪除表的定義,表的結構還在。

二、SQL函數

1、Aggregate 函數

1)AVG()

函數返回數值列的平均值

select avg(column_name) from table_name

如查詢A表中a列的平均值以a_average字段展示出來:

select avg(a) as a_average from A        #如果不給出展示字段,就直接以avg為展示字段

也可以作為一種結果作為查詢條件,如查詢A表中a值大於平均值的數據:

select * from A where a > (select avg(a) from A);

2)COUNT()

函數返回匹配指定條件的行數

select count(column_name) from table_name;     #返回指定列的值的數目(不包括null值的數目)
select count(*) from table_name;               #返回表中的記錄數,也就是有多少條數據

如查看A表中a列有多少條數據:

select count(a) from A

如查看A表中a列有多少條不相同的數據:

select count(distinct a) from A;

3)FIRST()

返回指定的列中第一個記錄的值。

select first(column_name) from table_name;    

只有 MS Access 支持 FIRST() 函數,其他形式的first函數效果語法:

SQL Server 語法

select top 1 column_namefrom table_name order by column_name asc;
MySQL 語法
select column_name from table_name order by column_name asc limit 1;
Oracle 語法
select column_name from table_name order by column_name asc where rownum <=1;

4)LAST()

返回指定的列中最後一個記錄的值。

select last(column_name) from table_name;

只有 MS Access 支持 LAST() 函數,其他形式的last函數效果語法:

SQL Server 語法

select top 1 column_namefrom table_name order by column_name desc;
MySQL 語法
select column_name from table_name order by column_name desc limit 1;
Oracle 語法
select column_name from table_name order by column_name desc where rownum <=1;

5)MAX()

函數返回指定列的最大值。

select max(column_name) from table_name;

如查詢A表中a列的最大值:

select max(a) from A;

6)MIN()

函數返回指定列的最小值。

select min(column_name) from table_name;

如查詢A表中a列的最小值:

select min(a) from A;

7)SUM()

函數返回數值列數值的總和,適合對數值列求和。

select sum(column_name) from table_name;

如查詢A表中a列數值的總和:

select sum(a) from A;

2、Scalar 函數

1)UCASE()

函數把字段的值轉換為大寫,適合數值有字母的值轉換。

select ucase(column_name) from table_name;
select upper(column_name) from table_name;      #用於 SQL Server 的語法

如把A表中a列數值小寫字母轉換為大寫字母:

select ucase(a) from A;

2)LCASE()

函數把字段的值轉換為小寫,適合數值有字母的值轉換。

select lcase(column_name) from table_name;
select lower(column_name) from table_name;      #用於 SQL Server 的語法

如把A表中a列數值大寫字母轉換為小寫字母:

select lcase(a) from A;

3)MID()

函數用於從文本字段中提取字符。

select mid(column_name,start[,length]) from table_name;
參數描述
column_name 必需。要提取字符的字段。
start 必需。規定開始位置(起始值是 1)。
length 可選。要返回的字符數。如果省略,則 MID() 函數返回剩余文本。

如把A表中取a列中前4位字符:

select mid(a,1,4) from A;

4)SubString(字段,1,end) - 從某個文本字段提取字符

5)LEN() - 返回某個文本字段的長度

6)ROUND() - 對某個數值字段進行指定小數位數的四舍五入

7)NOW() - 返回當前的系統日期和時間

8)FORMAT() - 格式化某個字段的顯示方式

sql基礎學習