sql基礎學習
學習參考網站: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基礎學習