1. 程式人生 > >mysql設定使用者名稱密碼,儲存過程,觸發器

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 .

to [email protected] identified by ‘wangan’;
之後登陸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 CREATEPROCEDUREprotest()BEGINSELECTFROMstudent;SELECTCOUNT(1)FROMstudent;END

CALL pro_test() -- 執行儲存過程

2 帶輸入引數的
DROP PROCEDURE IF EXISTS pro_findById;
DELIMITER CREATEPROCEDUREprofindById(INaidINT)BEGINSELEC

TFROMstudentWHEREid=aid;END

CALL pro_findById(2)

3 帶輸出引數
DROP PROCEDURE IF EXISTS pro_out;
DELIMITER CREATEPROCEDUREproout(OUTstrVARCHAR(20))BEGINSETstr=hell1234;END

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 CREATEPROCEDUREproinout(INOUTnINT)BEGINSELECTn;SETn=500;END

-- 呼叫
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 CREATEPROCEDUREprotestwhile(INnumINT,OUTresultINT)BEGINDECLAREiINTDEFAULT1;DECLAREvsumINTDEFAULT0;WHILEi<=numDOSETvsum=i+vsum;SETi=i+1;ENDWHILE;SETresult=vsum;END

CALL pro_testwhile(10,@result)
SELECT @result

使用查詢的結果賦值給變數 into
DELIMITER CREATEPROCEDUREprotestinto(INeidINT,OUTvnameVARCHAR(20))BEGINSELECTempnameINTOvnameFROMempWHEREid=eid;END

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’
檢視使用者許可