 SQL語句(ju)概念使(shi)用(yong)說明
							時間(jian):2018-03-07      來源:未知
							SQL語句(ju)概念使(shi)用(yong)說明
							時間(jian):2018-03-07      來源:未知 
							1、SQL分類
SQL語句主要(yao)可(ke)以劃分以下3個類別。
1)DDL語句(ju):數(shu)(shu)據定(ding)(ding)義語句(ju),這些語句(ju)定(ding)(ding)義了不同的數(shu)(shu)據段(duan)、數(shu)(shu)據庫(ku)、表、列、索引等數(shu)(shu)據庫(ku)對象。常用的關鍵(jian)字主(zhu)要包括creat、drop、alter等。
2)DML語(yu)句:數據操縱語(yu)句,用(yong)于添加、刪(shan)除(chu)、更(geng)新和(he)查詢數據庫記(ji)錄,并檢查數據完整性(xing)。常(chang)用(yong)的(de)語(yu)句關鍵字(zi)主要包括 inster、delete、update 和(he) select等。
3)DCL語句(ju)(ju):數(shu)據(ju)控制語句(ju)(ju),用于控制不同數(shu)據(ju)段(duan)(duan)直接的許可和訪(fang)問(wen)級(ji)別(bie)的語句(ju)(ju)。這些語句(ju)(ju)定義(yi)了(le)數(shu)據(ju)庫(ku)、表、字(zi)段(duan)(duan)、用戶的訪(fang)問(wen)權限和安(an)全(quan)級(ji)別(bie)。主(zhu)要(yao)的語句(ju)(ju)關鍵字(zi)包括(kuo) grant、revoke等。
2、DDL語句
DDL是(shi)(shi)數(shu)據定(ding)義(yi)語(yu)句(ju)(ju)(ju)的(de)(de)(de)縮寫(xie)。是(shi)(shi)對數(shu)據庫內(nei)部的(de)(de)(de)對象進行創(chuang)建、刪除、修改等操作(zuo)的(de)(de)(de)語(yu)言。它和(he)DML語(yu)句(ju)(ju)(ju)的(de)(de)(de)大區別是(shi)(shi)DML只是(shi)(shi)對表(biao)內(nei)部數(shu)據操作(zuo),而(er)不涉及表(biao)的(de)(de)(de)定(ding)義(yi)、結構(gou)的(de)(de)(de)修改,更不會涉及其他(ta)對象。DDL語(yu)句(ju)(ju)(ju)更多地(di)由數(shu)據庫管(guan)理員(DBA)使用,開發人員一般(ban)很少(shao)使用。
1)創建數據庫
CREATE DATABASE dbname
例如,創(chuang)建數(shu)據庫test1,命令執行如下:
create database test1 ;
如果需要查(cha)詢系統中都存(cun)在哪些數據庫,可以使用以下命(ming)令查(cha)看:
show databases ;
在系統中會存在4個由MySQL系統自動創建的數據(ju)庫(ku),分別為(wei):
information_schema : 主(zhu)要存(cun)儲(chu)系統中(zhong)的一(yi)些(xie)數據庫(ku)對象信(xin)息(xi)(xi),比如(ru)用戶(hu)表信(xin)息(xi)(xi)、列信(xin)息(xi)(xi)、權限信(xin)息(xi)(xi)、字(zi)符集信(xin)息(xi)(xi)、分區(qu)信(xin)息(xi)(xi)等。
cluster : 存(cun)儲系統的集群信(xin)息。
mysql : 存儲系統的(de)用戶權限信息。
test : 系統(tong)自(zi)動創建的測試數(shu)據庫,任(ren)何用戶(hu)都可(ke)以使用。
選擇要操作的數據庫:
USE dbname
例如(ru),選擇數據庫test1 :
use test1 ;
查看test1數據庫中創建的所(suo)有數據表 :
show tables ;
2)刪除數據庫
刪除數據庫的語法(fa),如下:
drop database dbname ;
例如,要(yao)刪除test1數(shu)據庫:
drop database test1 ;
3)創建表
在數據庫中創建一張表的基本語法(fa)如下:
CREATE TABLE tablename (
column_name_1 column_type_1 constraints ,
column_name_2 column_type_2 constraints ,
. . .
column_name_n column_type_n constraints )
其中 , column_name 是列(lie)(lie)的名字;column_type 是列(lie)(lie)的數(shu)據類(lei)型(xing); constraints 是這個(ge)列(lie)(lie)的約(yue)束條(tiao)件。
例如,創(chuang)建一(yi)個(ge)名稱為(wei)emp的(de)表。表中包(bao)括ename(姓名)、hiredate(雇傭日(ri)期)和sal(薪水)三(san)個(ge)字段(duan),字段(duan)類型分別為(wei)varchar(10)、date、int(2)
create table emp ( ename varchar(10) ,
hiredate date ,
sal decimal (10, 2) ,
deptno int(2) ) ;
表(biao)創(chuang)建完畢后,如果需要(yao)查看一下表(biao)的定義,可以使用如下命令(ling):
DESC tablename
例如,查看emp表(biao):
desc emp ;
如(ru)果(guo)需要查看創建表的SQL語(yu)句(ju),可(ke)以(yi)使用如(ru)下命令:
show create table emp \G ;
注:\G 選項的含義是使得記錄能(neng)夠按照字段豎向排列,以便更好(hao)地顯示內容較長(chang)的記錄。
4)刪除表
表(biao)的刪除命令如下:
DROP TABLE tablename
例如,要刪(shan)除數據表emp:
drop table emp ;
5)修改表
修改(gai)表類型 ,語法如下:
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST|AFTER col_name]
例如,修改表emp的ename字段定義,將(jiang) varchar(10)改為varchar(20):
alter tabke emp modify ename varchar(20);
增(zeng)加表字(zi)段,語法如(ru)下(xia):
ALTER TABLE tablename ADD[COLUMN] column_definition [FIRST|AFTER col_name]
例如,在表emp中新(xin)增加字段 age ,類型為 int(3):
alter table emp add column age int(3);
刪除表字段,語法如下:
ALTER TABLE tablename DROP [COLUMN] col_name
例如,將字(zi)段age刪除:
alter table emp drop column age ;
字段改名(ming),語法如下:
ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name]
例如,將age改(gai)名(ming)為(wei)(wei)age1,同時修改(gai)字段類型為(wei)(wei) int(4):
alter table emp change age age1 int(4) ;
修改字段排列順序:
前面介紹的(de)字(zi)段增(zeng)加和修改語句(ADD/CHANG/MODIFY)中,都(dou)有(you)一個可選項 first | after column_name ,這個選項可以用來修改字(zi)段在(zai)表中的(de)位置,ADD增(zeng)減的(de)新字(zi)段默認是加載表的(de)后位置,而CHANGE/MODIFY默認都(dou)不會改變字(zi)段的(de)位置。
例如, 將新增的(de)字段 birth date 加在 ename之后:
alter table emp add birth date after ename ;
修改 age 字段,將它放在前面:
alter table emp modify age int(3) first ;
注(zhu)意(yi):CHANGE/FIRST|AFTER COLUMN 都屬于MySQL在(zai)標準SQL上(shang)的擴展,在(zai)其他數據庫上(shang)不一定適用。
更改(gai)表名,語法如下:
ALTER TABLE tablename RENAME [TO] new_tablename
例如(ru),將表 emp 改名為 emp1:
alter table emp rename emp1 ;
3、DML語句
DML操(cao)作是指對數據庫中表記錄的操(cao)作,主(zhu)要(yao)包(bao)括表記錄的插入(insert)、更新(xin)(update)、刪除(delete)和查(cha)詢(select),是開(kai)發人員日常使用多的操(cao)作。
1)插入(ru)記錄
向表(biao)中(zhong)插入(ru)記錄的基本語法如下:
INSERT INTO tablename (field1 , field2 ,. . . ,fieldn) VALUES(value1 , value2 , . . . ,valuen);
例(li)如,向表 emp 中(zhong)插入記錄:
insert into emp (ename, hiredate, sal, deptno) values ('zzx1', '2000-01-01', '2000', 1);
也(ye)可以不指定(ding)字段名稱,但是 values 后面的順(shun)序(xu)應該和字段的排列(lie)順(shun)序(xu)一致:
insert into emp values('lisa', '2001-01-02', '3000', 2);
含可空(kong)(kong)字(zi)(zi)段、非空(kong)(kong)但是(shi)含有默(mo)認值的(de)字(zi)(zi)段、自(zi)(zi)增(zeng)字(zi)(zi)段,可以(yi)不(bu)用再insert后的(de)字(zi)(zi)段列表中(zhong)出現,values后面只寫(xie)(xie)對應字(zi)(zi)段名(ming)稱的(de) value 。這些沒寫(xie)(xie)的(de)字(zi)(zi)段可以(yi)自(zi)(zi)動設(she)置為NULL、默(mo)認值、自(zi)(zi)增(zeng)的(de)下一(yi)個數字(zi)(zi)。
例如:只對(dui)表中的ename和sal顯(xian)示插(cha)入(ru)值:
insert into emp (ename, sal) values('dony', '1000') ;
在MySQL中,insert語句可以一次性插(cha)入多(duo)條記(ji)錄。
2)更新記錄
表里的記錄(lu)值可以通(tong)過update命令進行更(geng)改,語(yu)法如下(xia):
UPDATE tablename SET field1 = value1,field2 = value2,. . .,fieldn = valuen [WHERE CONDITION]
例如,將(jiang)表(biao)emp中ename為(wei) "lisa"的sal從3000更改(gai)為(wei)4000:
update emp set sal=4000 whereename='lisa' ;
3) 刪除記錄
使用delete刪除(chu)記錄,語法如下:
DELETE FROM tablename [WHERE CONDITION]
例如,在emp中將ename為dony的(de)記(ji)錄全(quan)部刪除:
delete from emp where ename='dony' ;
注意:不加where條件(jian)將(jiang)會把表的(de)所有(you)記(ji)錄刪除(chu),所以(yi)操作時一(yi)定小心(xin)。
4)查詢記錄
基本語法如(ru)下(xia):
SELECT * FROM tablename [WHERE CONDITION]
例如(ru),將表emp中的記錄全部查(cha)詢出來:
select * form emp ;

