1. 程式人生 > >使用Java實現數據庫編程—06 項目:銀行ATM取款機系統

使用Java實現數據庫編程—06 項目:銀行ATM取款機系統

有時 drop user select 普通 語句 不可 dos word rop

1、 創建普通用戶:

語法:

CREATE USER `user`@`host` [IDENTIFIED password]; //user:用戶名,host:主機名,password:密碼;

Eg:創建本地用戶teacher,密碼為123456

CREATE USER `teacher`@`localhost` IDENTIFIED BY ‘123456‘;

Eg:本地用戶student,無密碼

CREATE USER `student`@`localhost`;

`@`localhost`本地用戶,允許登錄其他主機可省略

2、

創建用戶並授權:

GRANT語句可實現創建用戶同時授權或為已存在的用戶授權;

語法:

GRANT priv_type ON databasename.tablename // priv_type:用戶操作權限列表; // databasename.tablename:權限範圍,即庫名.表名

TO `user`@`host`[IDENTIFIED BY ‘password‘] [WITH GRANT OPTION]; //賦予GRANT權限

常用操作權限

  CREATE和DROP權限

  INSERT、DELETE、SELECT和UPDATE權限

  ALTER權限

註:1.如果授予所有權限, priv_type可使用ALL

2.為所有數據庫和表授權,權限範圍可使用*.*

Eg:創建本地用戶xiaoming,密碼123456,賦予myschool數據庫中student表增加和查詢權限

GRANT INSERT,SELECT ON myschool.student TO `xiaoming`@`localhost` IDENTIFIED BY ‘123456‘;

Eg:為student@localhost用戶授予myschool數據庫中view_student視圖的查詢權限

GRANT SELECT ON myschool.view_student TO `student`@`localhost`;

創建用戶報錯的:

mysql> grant all on epet.*to `QINGG`@`localhost` identified by ‘1234‘;

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

解決方法:

mysql> flush privileges

Query OK, 0 rows affected (0.01 sec)

mysql> grant all on epet.*to `QINGG`@`localhost` identified by ‘1234‘;

Query OK, 0 rows affected, 1 warning (0.01 sec)

3、 使用mysqladmin命令修改root賬戶密碼:

語法:

mysqladmin–u username –p password "newpassword" // newpassword:新密碼

註:mysqladmin需在DOS命令行執行,回車後輸入原密碼;

Eg:將root密碼修改為1234

mysqladmin –u root –p password "1234"

Enter password:****

4、 使用SET命令修改用戶密碼:登錄MySQL服務器後,使用SET命令修改當前用戶密碼;

語法:

SET PASSWORD [FOR `username`@`host`]= PASSWORD("newpassword") //[FOR `username`@`host`]:可指定修改其他用戶密碼

註:只有超級管理員用戶(如root用戶)才能修改其他用戶密碼,如果是普通用戶,可修改自己的密碼;

Eg修改當前用戶密碼

SET PASSWORD = PASSWORD("0000");

Eg修改其他用戶密碼

SET PASSWORD FOR `teacher`@`localhost`= PASSWORD("8888");

5、 刪除用戶:

語法:
DROP USER `username1`@`host`[,`username2`@`host`……];

EgDROP USER `student`@`localhost`;

6、 DISTINCT:distinct一般是用來去除查詢結果中的重復記錄的,而且這個語句在select、insert、delete和update中只可以在select中使用;

Eg:在表中,可能會包含重復值。這並不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。關鍵詞 distinct用於返回唯一不同的值。

A

技術分享圖片

B:

技術分享圖片

1.作用於單列

select distinct name from A

執行後結果如下:

技術分享圖片

2、作用於多列

Eg

select distinct name, id from A

執行後結果如下:

技術分享圖片

實際上是根據nameid兩個字段來去重的,這種方式AccessMySQLSQL Server同時支持。

Eg

select distinct xing, ming from B

返回如下結果:

技術分享圖片

返回的結果為兩行,這說明distinct並非是對xingming兩列字符串拼接後再去重的,而是分別作用於了xingming列。

註意:從上例中可以發現,當distinct應用到多個字段的時候,其應用的範圍是其後面的所有字段,而不只是緊挨著它的一個字段,

而且distinct只能放到所有字段的前面

如下語句是錯誤的:

SELECT xing, distinct ming from B; // 該語句是錯誤的

拋出錯誤如下:

[Err] 1064 - You have an error in your SQL syntax;

check the manual that corresponds to your MySQL server version for the right syntax to use near ‘DISTINCT province from B’ at line 1

3COUNT統計

select count(distinct name) from A; --表中name去重後的數目, SQL ServerMySQL支持,而Access不支持

count是不能統計多個字段的,下面的SQL無法運行。

select count(distinct name, id) from A;

若想使用,請使用嵌套查詢,如下:

select count(*) from (select distinct xing, name from B) AS M;

4distinct必須放在開頭:

distinct應用到多個字段的時候,其應用的範圍是其後面的所有字段,而不只是緊挨著它的一個字段,而且distinct只能放到所有字段的前面,

select id, distinct name from A; --會提示錯誤,因為distinct必須放在開頭

5、針對NULL的處理:distinctNULL是不進行過濾的,即返回的結果中是包含NULL值的。

6、與ALL不能同時使用

默認情況下,查詢時返回所有的結果,此時使用的就是all語句,這是與distinct相對應的,如下:

select all country, province from person

7、與distinctrow同義

select distinctrow expression[,expression...] from tables [where conditions];

這個語句與distinct的作用是相同的。

8、對*的處理:*代表整列,使用distinct*操作
select DISTINCT * from person

相當於

select DISTINCT id, `name`, country, province, city from person;

9其他

distinct語句中select顯示的字段只能是distinct指定的字段,其他字段是不可能出現的。例如,假如表A備註列,如果想獲取distinc name,以及對應的備註字段,想直接通過distinct是不可能實現的。

使用Java實現數據庫編程—06 項目:銀行ATM取款機系統