查看錶詳細定義
Show create table tablename \G
*\G是爲了美觀
修改表名
Alter table oldtablename rename newtable
增加字段
在表最後添加字段:
Alter table tablename add 屬性名 屬性類型
在表第一個位置增加字段:
Alter table tablename add 屬性名 屬性類型 FIRST
在表指定字段後添加:
Alter table tablename add 屬性名 屬性類型 after 屬性名
修改字段數據類型:
Alter table tablename modify 屬性名 屬性類型
修改字段名字:
Alter table tablename change 舊屬性名 新屬性名 舊數據類型
同時修改字段的名字和屬性:
Alter table tablename change 舊屬性名 新屬性名 新數據類型
修改字段順序:
Alter table tablename modify 屬性名1 數據類型 FIRST|after 屬性名2
完整性約束:
關鍵字 |
含義 |
備註 |
Not null |
非空 |
|
default |
默認值 |
|
Unique key |
值不可重複 |
|
Primary key |
主鍵 |
聯合主鍵:create table tablename { 屬性名 數據類型 CONSTRAINT約束名 primary key(屬性名,屬性名) }; |
Auto_increment |
自增長 |
|
Foreign key |
外鍵 |
Create table tablename{ 屬性名 數據類型 CONSTRAINT 外鍵名 foreign key(屬性名)references 表名(屬性名) |
觸發器
1.一條執行語句的觸發器
Create trigger trigger_name
Before|After trigger_event
ON table_name for each row trigger_stmt
Trigger_event:delete語句,insert語句,update語句
2.多條執行語句的觸發器
Create trigger trigger_name
Before|After trigger_event
ON table_name for each row
BEGIN
trigger_stmt
END
實例:
DELIMITER $$
Create trigger tri_diary
After insert
ON t_dept for each row
BEGIN
Insert into t_diary values(NULL,’an’,now());
Insert into t_diary values(NULL,’sn’,now());
END
$$
DELIMITER ;
多表數據查詢
1.並:把具有相同字段數目和字段類型的表合併到一起
2.笛卡兒積:沒有連接條件表關係返回的結果。笛卡兒積表字段數爲表1+表2字段數,記錄數爲表1*表2記錄數
3.內連接:表關係的笛卡兒積數據記錄中,保留表關係中所有匹配的數據記錄,捨棄不匹配的數據記錄。
4.外連接:在表關係的笛卡兒積數據記錄中,保留表關係中所有匹配的數據記錄,而且還會保留部分不匹配的數據記錄。
存儲過程和函數
1.創建存儲過程
Create procedure procedure_name([procedure_paramter[,...]])
[characteristic...] routine_body
Procedure_paramter:存儲過程的參數。[IN|OUT|INOUT]
Characteristic:存儲過程的特性
2.創建函數語法
Create function function_name(function_paramter[,...])
[characteristic] routine_body
實例:
DELIMITER $$
Create function func_sal(empno INT(11))
Return double(10,2)
COMMENT ‘查詢某個員工工資’
BEGIIN
Return (select sal from t_employee where t_employee.empno=empno);
END$$
DELIMITER ;
數據庫連接和用戶操作
連接mysql服務器的完整dos命令如下:
Mysql –h hostname|hostip –p port –u username –p databasename –e sql語句
實例:通過root用戶登陸到mysql服務器的數據庫company中,具體命令如下:
Mysql –h 127.0.0.1 –u root –p company
創建普通用戶賬戶2種方式:
Create user username identified by [password]
Create user “cjcong”@”localhost” identified by “123”;
Grant priv_type on databasename.tablename to username indetified by [password]
Grant select on company.dept to ‘cjcong’@’localhost’ identified by ‘123’;
對用戶授權
Grant priv on database.datatable to user identified by ‘password’ with with-option
With-option值:grant option被授權的用戶可以將權限授予其他用戶。
查看用戶所具有的權限:
Show grants for user
回收權限
Revoke priv on database.datatable from user identified by ‘password’
回收全部權限
Revoke all privileges,grant option from user identified by ‘password’
啓動查詢日誌,修改my.ini文件
[mysqld]
Log [=dir\filename]
慢查詢日誌
[mysqld]
Log-slow-queries[=dir\filename]
Long_query_time=n
N爲參照時間,默認10秒。
備份數據庫
備份一個數據庫
Mysqldump –u username –p dbname table1 table2 >backupname.sql
備份多個數據庫
Mysqldump –uusername –p –databases dbname1 dbname2 >backupname.sql
備份所有數據庫
Mysqldump –u username –p –all –databases >backupname.sql
數據還原
Mysqldump –u username –p [dbname] <backupname.sql
數據庫中表導出成文本文件
Mysql –u root –ppassword –e “select file-name from tablename” dbname>file_name