DDL,是對數據庫內部的對象進行創建,刪除,修改等的操作語言。它和DML語言最大的區別是DML只是對表內部數據的操作,而不涉及到表的定義,結構的修改,更不會涉及到其它對象。
1.連接數據庫:
注:1.mysql代表客戶端命令,-u后面跟連接的數據庫用戶,-p表示需要輸入密碼。
2.命令的結束符用;或者\g結束
2.創建數據庫:
格式:create database dbname;
Query OK執行成功
1 row affected 只影響了數據庫中一行的記錄。
0.13 sec 記錄了操作執行的時間
如果已經存在了這個數據庫,系統如圖會提示。
查看系統中存在哪些數據庫:show databases;
如圖:
information_schema:主要存儲了系統中的一些數據庫對象信息。比如用戶表信息、列信信息、權限信息、字符集信息、分區信息等。
cluster:存儲了系統的集群信息。
mysql:存儲了系統的用戶權限信息。
test:系統自動創建的測試數據庫,任何用戶都可以使用。
選擇遙操作的數據庫:
USE dbname;
接下來查看改數據庫的所有數據表:show tables;
3.刪除數據庫:(所有表數據都會被全部刪除)
格式:drop database dbname;
提示操作成功后,顯示"0 rows affected"。覺得疑惑,不用管它,在MySQL里,drop語句操作的結果顯示都是"0 rows affected"
4.創建表
格式:create table tablename(column_name_1 column_type_1 constraints,column_name_2 column_type_2 constraints...)
注:column_name是列的名字,column_type是列的數據類型,contraints是這個列的約束條件。
例如:創建一個emp的表。
create table emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2));
查看emp表的定義,可以使用 DESC tablename;
雖然 desc 命令可以查看表定義,但是其輸出的信息還是不夠全面,為了查看更全面的表定義信息,有時就需要通過查看創建表的 SQL 語句來得到,可以使用如下命令實現:
從上面表的創建 SQL 語句中,除了可以看到表定義以外,還可以看到表的 engine (存儲引擎)
和 charset(字符集)等信息。“\G”選項的含義是使得記錄能夠按照字段豎著排列,對于內
容比較長的記錄更易于顯示。
5.刪除表:
drop table emp;
6.修改表:(多數情況下表結構的修改用alter table語句)
1)修改表類型,語法如下:
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
例如:修改表emp中的ename字段定義,將varchar(10)改為varchar(20);
如圖:alter table emp modify ename varchar(20);
2)增加表字段:
ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]
例如,表 emp 上新增加字段 age,類型為 int(3):
如圖:alter table emp add column age int(3);
3)刪除表字段:
ALTER TABLE tablename DROP [COLUMN] col_name
例如,將字段 age 刪除掉:
如圖:alter table emp drop column age;
4)給字段改名:
ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
例如,將 age 改名為 age1,同時修改字段類型為 int(4):
如圖: alter table emp change age age1 int(4) ;
5)修改字段的排列順序:
(前面介紹的的字段增加和修改語法(ADD/CNAHGE/MODIFY)中,都有一個可選項 first|after column_name,這個選項可以用來修改字段在表中的位置,默認 ADD 增加的新字段是加在表的最后位置,而 CHANGE/MODIFY 默認都不會改變字段的位置。)
例如,將新增的字段 birth date 加在 ename 之后:
如圖: alter table emp add birth date after ename;
例如:修改字段age,將它放在最前面:
如圖:alter table emp modify age int(3) first;
注意:CHANGE/FIRST|AFTER COLUMN 這些關鍵字都屬于MySQL,在標準 SQL 上的擴展,在其他數據庫上不一定適用。
6)表改名:
ALTER TABLE tablename RENAME [TO] new_tablename
例如,將表 emp 改名為 emp1:
如圖:alter table emp rename emp1;