mysql設定使用者名稱密碼,儲存過程,觸發器
mysql的總結的練習題
修改root使用者密碼
mysql -u root;
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD(‘newpass’) WHERE user = ‘root’;
mysql> FLUSH PRIVILEGES;
登陸root使用者,給使用者賦予建立資料庫的許可權 ;使用者:tester,密碼:wangan
建立使用者:
CREATE USER ‘tester’@’localhost’ IDENTIFIED BY ‘wangan’;
grant all privileges on .
之後登陸tester使用者
mysql -u tester -p
建立資料庫
CREATE DATABASE idc DEFAULT CHARACTER SET utf8 ;
student INSERT INTO student(id,NAME,chinese,english,math) VALUES(1,'name1',19,70,90); INSERT INTO student(id,NAME,chinese,english,math) VALUES(2,'name2',60,73,85); INSERT INTO student(id,NAME,chinese,english,math) VALUES(3,'name3',80,78,97); INSERT INTO student(id,NAME,chinese,english,math) VALUES(4,'name4',98,23,42); INSERT INTO student(id,NAME,chinese,english,math) VALUES(5,'name5',55,87,66); INSERT INTO student(id,NAME,chinese,english,math) VALUES(6,'name6',68,79,67); INSERT INTO student(id,NAME,chinese,english,math) VALUES(7,'name7',20,48,29); SHOW DATABASES CREATE DATABASE shop DEFAULT CHARACTER SET utf8 SHOW DATABASES SHOW CREATE DATABASE shop DROP DATABASE shop student1 CREATE TABLE student1( sid INT, sname VARCHAR(20), sage INT ) DESC student DROP TABLE student1 SHOW TABLES ALTER TABLE student ADD COLUMN sgender VARCHAR(2) ALTER TABLE student MODIFY COLUMN NAME VARCHAR(40) ALTER TABLE student DROP COLUMN sgender ALTER TABLE student CHANGE COLUMN sgender gender VARCHAR(2) ALTER TABLE teacher RENAME TO student DESC teacher ALTER TABLE student ADD COLUMN java就業班 VARCHAR(10) SELECT * FROM student SELECT id ,NAME,(english+math) AS '成績' FROM student SELECT DISTINCT gender FROM student SELECT * FROM student WHERE gender <> '男' SELECT COUNT(id) FROM student -- 總記錄 SELECT * FROM student LIMIT 1,2 -- 從第2 條記錄開始查詢,查2條 SELECT * FROM student ORDER BY id DESC LIMIT 2,5 -- 排序 SELECT gender, COUNT(gender) FROM student GROUP BY gender SELECT gender,COUNT(gender) gen FROM student GROUP BY gender HAVING gen>2 ALTER TABLE student ADD hi VARCHAR(10) ALTER TABLE student DROP hi CREATE TABLE student1( id INT ZEROFILL PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ) SELECT * FROM student1 INSERT INTO student1(NAME) VALUES ('張三') DELETE FROM student1 TRUNCATE TABLE student1 CREATE TABLE dept( id INT PRIMARY KEY, deptName VARCHAR(20) ) CREATE TABLE emp( id INT PRIMARY KEY, empName VARCHAR(20), dept_id INT, CONSTRAINT emp_dept_fk FOREIGN KEY(dept_id) REFERENCES dept(id) )
儲存過程
1
DROP PROCEDURE IF EXISTS pro_test;
DELIMITER
CALL pro_test() -- 執行儲存過程
2 帶輸入引數的
DROP PROCEDURE IF EXISTS pro_findById;
DELIMITER
CALL pro_findById(2)
3 帶輸出引數
DROP PROCEDURE IF EXISTS pro_out;
DELIMITER
DROP PROCEDURE IF EXISTS pro_testOut;
DELIMITER $
CREATE PROCEDURE pro_testOut(OUT str VARCHAR(20)) -- OUT:輸出引數
BEGIN
-- 給引數賦值
SET str='helljava';
END $
CALL pro_testOut(@NAME) -- 定義會話變數,接受儲存過程的值
SELECT @NAME -- 接收輸出引數的值
4.帶有輸入輸出引數
DELIMITER
-- 呼叫
CALL pro_inout(@n)
-- 查詢
SELECT @n
-- 呼叫
SET @n=10
-- 帶條件判斷的儲存過程
DELIMITER $
CREATE PROCEDURE pro_testif(IN num INT, OUT str VARCHAR(20))
BEGIN
IF num=1 THEN
SET str='星期一';
ELSEIF num=2 THEN
SET str='星期二';
ELSEIF num=3 THEN
SET str='星期三';
ELSE
SET str='輸入有誤';
END IF;
END $
CALL pro_testif(1,@str)
SELECT @str
帶有迴圈功能的
DROP PROCEDURE IF EXISTS pro_testwhile;
DELIMITER
CALL pro_testwhile(10,@result)
SELECT @result
使用查詢的結果賦值給變數 into
DELIMITER
CALL pro_testinto(1,@vname)
SELECT @vname
觸發器
當操作了某張表時,希望同時觸發一些動作/行為,可以使用觸發器完成!!
例如: 當向員工表插入一條記錄時,希望同時往日誌表插入資料
員工日誌表
CREATE TABLE emp_log(
content VARCHAR(100)
)
CREATE TRIGGER tri_empAdd AFTER INSERT ON emp FOR EACH ROW -- 刪除和修改一樣,將INSERT改成UPDATE 和 delete
INSERT INTO emp_log(content) VALUES ('員工表插入了一條記錄')
INSERT INTO emp(empName,dept_id) VALUES ('劉備',1)
許可權問題
USE mysql
SELECT * FROM USER
修改密碼
UPDATE USER SET PASSWORD(‘123456’) WHERE USER=’root’
分配許可權賬戶
GRANT SELECT ON test.emp_log TO root
UPDATE emp_log SET content=’hihoa’
建立
mysql> create user zx_root IDENTIFIED by ‘xxxxx’; //identified by 會將純文字密碼加密作為雜湊值儲存
修改
mysql>rename user feng to newuser;//mysql 5之後可以使用,之前需要使用update 更新user表
刪除
mysql>drop user newuser; //mysql5之前刪除使用者時必須先使用revoke 刪除使用者許可權,然後刪除使用者,mysql5之後drop 命令可以刪除使用者的同時刪除使用者的相關許可權
更改密碼
mysql> set password for zx_root =password(‘xxxxxx’);
mysql> update mysql.user set password=password(‘xxxx’) where user=’otheruser’
檢視使用者許可