1. 程式人生 > >MYSQL常用操作 知識梳理

MYSQL常用操作 知識梳理

MYSQL常用操作  知識梳理




==================================增刪改查=======================================
建立資料庫
CREATE DATABASE nxcms ;








建立資料表
CREATE TABLE nx_user(
id INT    UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20)     NOT NULL DEFAULT '',
age         TINYINT UNSIGNED NOT NULL DEFAULT 0,
password    VARCHAR(32)     NOT NULL DEFAULT '' 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;








檢視建立表結構的語句
SHOW CREATE TABLE nx_user;








【插入一條資料】
INSERT INTO nx_user() VALUES("","zhou","26","123qwe");












【修改資料】
UPDATE nx_user set username = 'djkk';


指定條件
UPDATE nx_user set username = 'djkk' where id=1;




批量搜尋替換
UPDATE nx_user SET password = REPLACE(password,"123456","123qwe");












【刪除資料】
DELETE FROM nx_user WHERE id>2;








變更表結構
新增欄位
ALTER TABLE nx_user ADD COLUMN ctime VARCHAR(11) NOT NULL DEFAULT '';




修改欄位
ALTER TABLE nx_user MODIFY COLUMN ctime BIGINT(11) NOT NULL DEFAULT '';




刪除欄位
ALTER TABLE nx_user DROP COLUMN ctime;




更改表引擎
ALTER TABLE nx_user engine = Innodb;


=====================================================================================
表的結構複製
CREATE TABLE nx_user2  LIKE  nx_user;
表的資料複製
INSERT INTO  nx_user2 SELECT * from nx_user;
=====================================================================================




建立索引 
CREATE INDEX index_password ON nx_user(password);
唯一索引
CREATE UNIQUE INDEX un_username on nx_user(username);




檢視索引
SHOW INDEX FROM nx_user;




刪除索引 
ALTER TABLE nx_user DROP INDEX age_index;
ALTER TABLE nx_user DROP PRIMARY KEY;




新增索引
ALTER TABLE nx_user ADD IDNEX in_username(username);
ALTER TABLE nx_user ADD UNIQUE un_username(username);








=========================================================
建立檢視




CREATE VIEW v_user AS SELCT * FROM nx_user where id>=3;




=========================================================




內建函式
字串函式
CONCAT()     連結字串
LCASE()       轉換成小寫
UCASE()       轉換成大寫
LENGTH()     string長度
LTRIM()       去掉左邊的空格
RTRIM()       去掉右邊的空格
REPEAT(string,n)   重複N次字串
REPLACE(str,search,replace) 搜尋search替換成replace
SUBSTRING(str,position,length)  從position開始,取length個字串
SPACE(n) 生產N個空格
MD5(str)                        將str進行MD5加密








數學函式
BIN(number)   十進位制轉成二進位制
CEILING(number) 向上取整  
FLOOR(number) 向下取整
MAX(num1,num2) 取最大值
MIN(num1,num2) 取最小值
SQRT(number) 開平方
RAND() 返回0~1以內的隨機數字








日期函式
CURDATE()       返回當前日期   
CURTIME() 返回當前時間
NOW() 返回當前的日期時間
UNIX_TIMESTAMP(date) 返回當前date的UNIX時間戳
FROM_UNIXTIME() 返回UNIX時間戳的日期值
WEEK(date) 返回日期date為一年中的第幾周
YEAR(date) 返回date的年份
DATEDIFF(expr1,expr2) 返回起始時間expr1,和結束時間expr2間的天數




DATEDIFF("1991-09-10","2017-05-15")   返回-9379    負數代表已經過去了9379天




=========================================================








預處理語句




建立一條預處理語句 
prepare test from 'select * from nx_user where id>?';




設定一個變數
SET @i = 2;




執行預處理語句
execute test using @i;




執行  select * from nx_user where id>2;
結果:返回id大於2的資料。








刪除預處理語句
DROP prepare test;












=========================================================




事務處理  【注意!MyISAM表不支援事務機制】




關閉自動提交
set autocommit =0;




查詢所有使用者
select * from nx_user;




刪除一條資料
delete from nx_user where id=2;








建立還原點
savepoint p1;












回滾 
rollback




回滾 指定還原點  (之後的還原點都會消失)
rollback to p1;




提交!
commit




=========================================================




建立儲存
create procedure add_user()
begin
set @i =1 ;
while @i <=100 do
insert into nx_user(username,age,password) values(concat("user",@i) , @i , concat("123qwe_",@i));
set @i = @i+1;
end while;
end; 








執行儲存
call add_user  
=========================================================
觸發器  




如果nx_user 有資料插入 就觸發
create trigger nx_user before insert on nx_user for each row
begin
insert into nx_user2(username,age,password) values(new.username,new.age,new.password);
end




如果nx_user 有資料被刪除 就觸發
create trigger del_nx_user before delete on nx_user for each row
begin
delete from nx_user2 where id = old.id;
end
=========================================================
建立一個使用者
grant all privileges on liumanDB.* to
[email protected]
identified by '123456';