MySQL的DDL和DML


SQL語句:結構化查詢語句,使用SQL與數據庫“溝通”,完成相應的數據庫操作。

語句分類

DDL(Data Definition Languages)語句:即數據庫定義語句,用來創建數據庫中的表、索引、視圖、存儲過程、觸發器等,常用的語句關鍵字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。增刪改表的結構

DML(Data Manipulation Language)語句:即數據操縱語句,用來查詢、添加、更新、刪除等,常用的語句關鍵字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE,包括通用性的增刪改查。增刪改表的數據

DCL(Data Control Language)語句:即數據控制語句,用於授權/撤銷數據庫及其字段的權限(DCL is short name of Data Control Language which includes commands such as GRANT and mostly concerned with rights, permissions and other controls of the database system.)。常用的語句關鍵字有:GRANT,REVOKE。

TCL(Transaction Control Language)語句:事務控制語句,用於控制事務,常用的語句關鍵字有:COMMIT,ROLLBACK,SAVEPOINT,SET TRANSACTION。

 

一. DDL語句

增刪改表的結構,代表字段:create,alter,drop

1.1 創建表

創建表CREATE

演示:創建員工表

CREATE TABLE employee(

id int(4),

name VARCHAR(20),

gender CHAR(1),

birth DATE,

salary float(2),

job VARCHAR(30),

deptno int(2)

);

設置默認值 DEFAULT

可以通過DEFAULT子句給列指定默認值

CREATE TABLE emptest(

id int(4),

name VARCHAR(20),

gender CHAR(1) DEFAULT 'M',

birth DATE

);

設置列值非空NOT NULL

默認情況下,任何列都允許有空值。非空(NOT NULL)是一種條件約束,用於確保字段值不為空,當某個字段被設置了非空約束條件,這個字段中必須存在有效值,即:當執行插入數據操作時,必須提供這個列的數據;當執行更新操作時,不能給這個列的值設置為NULL。Ø NOT NULL:非空

CREATE TABLE emptest(

id int(4) ,

name VARCHAR20) NOT NULL,

gender CHAR(1) DEFAULT 'M',

birth DATE

);

1.2 復制表

復執表中所有數據

CREATE TABLE emptest1 as select * from emptest;

復制表中部分數據

CREATE TABLE emptest2 as select id,name from emptest;

1.3 修改表

修改表名RENAME

演示:修改表名

alter table emptest rename to/as testemp;  #修改表名

create table testemp1 like emptest;    #創建表結構.這樣的建表方式,不僅僅是表的結構,連帶着索引也會同時創建.

增加列ALTER ADD

演示:在testemp表下面增加hiredate列,並將默認值設置為當前時間增加列,列只能增加在最后,不能插入現有的列中。

ALTER TABLE testemp ADD(hiredate DATE DEFAULT sysdate);

刪除列 ALTER DROP

刪除列,刪除字段需要從每行中刪掉該字段占據的長度和數據,並釋放在數據塊中占據的空間,如果表記錄比較大,刪除字段可能需要比較長的時間。

演示:刪除testemp表下的hiredate

ALTER TABLE testemp DROP (hiredate);

修改列 ALTER MODIFY

修改列,使用MODIFY可以改變表中列的數據類型、長度和默認值,注意這種修改僅對以后插入的數據有效。另外如果表中已經有數據的情況下,把長度由大改小,有可能不成功,比如原來類型是VARCHAR2(100),其中已經存放了100字節長度的數據,如果改為80字節,則不會修改成功。

演示:修改testemp表中name的長度為30

ALTER TABLE testemp MODIFY(name VARCHAR(30));

1.4 查看表的數據結構DESC

DESC employee;

1.5 刪除表DROP

DROP TABLE emptest;

DROP TABLE if exist emptest;

二. DML語句

 用於增刪改表中數據,DML是伴隨TCL事務控制的。代表字段:insert,delete, update

增加記錄INSERT

INSERT語句用來給數據表增加記錄,每次增加一條記錄。所有的DML操作,需要再執行事務提交語句COMMIT才算真正確認了此操作。

語法: insert into tablename(columnname1,columnname2,columnname3,c...) values(value1,value2,value3,....);

字段和值必須一一對應,個數必須相同,數據類型必須一致

演示:想testemp中插入一條記錄

INSERT INTO testemp (id,name,gender) VALUES (1,'張三','M');

COMMIT;

插入數據時忽略字段則是全列插入,順序不能錯誤,如下:

INSERT INTO testemp VALUES (10,'李四','F',sysdate);

COMMIT;

注意:如何插入中文數據
使用DOS命令窗口不能直接插入中文,因為DOS窗口是GBK的編碼方式,但是數據庫表只接受UTF-8
因此可以使用圖形化界面工具插入數據,在DOS窗口中查詢的時候出現亂碼,
可以修改查詢結果集的顯示編碼方式。
mysql> set character_set_results ='GBK';

更新表記錄UPDATE

更新表中的記錄,需要配合WHERE子句使用,否則全表的數據都會被更新。

語法: update tablename set 字段名=字段值,字段名=字段值,字段名=字段值 where 條件

演示:更新testemp表中張三的ID為2

UPDATE testemp SET id=2 WHERE name='張三';

COMMIT;

同時修改兩個類型:

UPDATE testemp SET id=5,name='王五' WHERE name='李四';

COMMIT;

 

刪除表記錄DELETE

刪除表中的記錄,和UPDATE一樣,需要配合WHERE子句使用,不然會將全表數據刪除。

語法: delete from tableame where 條件

演示:將testemp表中id為2的記錄刪除

DELETE FROM testemp WHERE id=2;

 清空表:

DELETE FROM testemp;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM