程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> MYSQL教程:數據庫具體操作

MYSQL教程:數據庫具體操作

編輯:更多數據庫知識

1. 連接數據庫服務器

$ ./mysql -h host_name -u user_name -p

  • -h host_name(--host=host_name),連接的數據庫主機名,如果在本地主機上則可省略。

  • -u user_name(--user=user_name),數據庫用戶名,在unix系統上,如果系統的登錄名與數據用戶名一樣,則可省略。在windows系統中,可通過設置環境變量USER來給出數據庫用戶名,如set USER=username。

  • -p(--password),提供數據庫用戶密碼,有該選項mysql就會提示你輸入密碼。輸入的密碼以星號顯示,以確保安全。也可直接在-p後寫上密碼(-p和密碼間不能有空格),但這不安全,不推薦。

連接成功後,mysql數據庫服務器會顯示一些歡迎信息。接著就可用mysql>use database_name命令打開指定的數據庫。

本文由網頁教學網(http://www.webjx.com)整理發布!轉載請注明出處,謝謝!

    $ ./mysql -h host_name -u user_name -p database_name命令可直接打開指定數據庫。

2. 更新用戶密碼

mysql>update user set password=passowrd('your passowrd') where host='%';

刷新權限設置:mysql>flush privileges;

3. MySQL讀取配置文件的順序

my.cnf是MySQL數據庫的配置文件,它存在多個地方,在/etc目錄,數據目錄和用戶主目錄都有。放在不同位置,裡面的選項有不同的作用范圍,下面是MySQL讀取配置文件的順序和作用。

mysql 讀取配置文件的順序:
/etc/my.cnf              Global options.
DATADIR/my.cnf           Server-specific options.
defaults-extra-file      The file specified with the --defaults-extra-file option.
~/.my.cnf                User-specific options.

4. 重設置MySQL管理員密碼的方法

有時我們會因為設置原因或時間長了忘記了數據庫管理員的密碼,使得我們被關在MySQL服務器外。MySQL服務器提供了一種方法可使我們在服務器上重設密碼。在windows和linux/unix平台上操作稍有不同,下面分別介紹:

  • Linux/Unix平台下:

    1. 用 % kill -TERM PID關閉服務器,用-TERM信息可使服務器在關閉前把內存中的數據寫入磁盤。如果服務器沒有響應,我們可用% kill -9 PID來強制刪除進程,但不建議這樣做。這時內存中的數據不會寫入磁盤,造成數據不完整。如果你是用mysql_safe腳本啟動MySQL服務器的,這個腳本會監控服務器的運行情況並在它被終止時重啟服務器,所以如需關閉服務器,要先終止該進程,然後再真正終止mysqld進程。

    2. 使用--skip-grant-tables參數啟動MySQL Server,這時MySQL服務器將不使用權限表對連接操作進行驗證。你就可在不提供root密碼的情況下連接上服務器,並獲得root的權限。

      % mysqld_safe --skip-grant-tables & 
      
    3. 用以下命令登錄服務器,並重設密碼:

       % mysql -u root         #不用密碼就可連接到服務器
      mysql> use mysql
      mysql> set password for 'root'@'localhost' = password('password');
      
          修改MySQL服務器帳戶密碼有三種方式,你可參考本筆記中數據庫日常管理一章中的相關內容。在這種環境下,使用mysaladmin修改密碼好象不行,還是提示要輸入密碼。
    4. 關閉服務器,再用正常方式啟動服務器。

  • windows平台下:

    1. 用管理員帳號登錄服務器,關閉MySQL數據庫服務器。

    2. 使用--skip-grant-tables參數啟動服務器:

      c:\mysql\bin>mysqld-nt --skip-grant-tables 
      
    3. 重新打開一個console窗口,用mysql命令登錄服務器設置root的新密碼:

      c:\mysql\bin>mysql
      mysql> use mysql
      mysql> set password for 'root'@'localhost' = password('password');
      
    4. 關閉服務器,再用正常方式啟動服務器。

5. NULL值

NULL是空值,代表什麼也沒有。它不能與值進行比較操作和算術操作,也不能和NULL進行比較,因為兩個空值比較是沒有意義的。我們可用“is NULL” 或 “is not NULL”來判斷是不空值。如:

mysql> select * from test where mytest is NULL;
mysql> select * from test where mytest is not NULL;

在MySQL3.23以後的版本有一個新的比較操作符“<=>”,它可對NULL值進行相等比較。如:

mysql> select * from test where mytest <=> UNLL;
mysql> select * from test where not (mytest <=>);

如果查詢後排序中的數據中包含NULL,則從MySQL4.0.2開始,有NULL值的數據行總是出現在查詢結果的開頭,即使設置的desc參數。4.0.2以前版本,如果設置了asc,則出在查詢結果的開頭,如果設置了desc,則出現在查詢結果的結尾。

本文由網頁教學網(http://www.webjx.com)整理發布!轉載請注明出處,謝謝!

6. 使用SQL變量

MySQL3.23.6以後的版本允許通過查詢結果來設置變量,設置好的變量可在以後使用。變量用@name定義,賦值方式用@name:=value。下面是一個在查詢語句中進行賦值和使用變量的例子:

mysql> select @name:=id from test where mytest="test";
mysql> select * from test where mytest=@name

7. 改變默認提示符

用mysql登錄進數據庫後,MySQL數據的默認提示符是“mysql”,我們可設置它根據用戶打開的數據庫名而變化,如:

mysql>prompt \d>\_
none>use test
test>use mysql
mysql>

prompt為設置命令,\d代表當前數據庫,\_代表一個空格。

8. 非優化的全數據表DELETE操作

為了清空數據表,又需知道刪除的行數和保持AUTO_INCREMENT序列的值,需用以下的刪除語句:

# delete from table_name where 1;

9. MySQL事務處理示例

MYSQL高級特性 -- 事務處理下面以兩個銀行賬戶之間的轉賬為例子進行演示。要使用MySQL中的事務處理,首先需要創建使用事務表類型(如BDB = Berkeley DB或InnoDB)的表。

CREATE TABLE account (
account_id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
balance DOUBLE
) TYPE = InnoDB;


要在事務表上使用事務處理,必須要首先關閉自動提交:

SET AUTOCOMMIT = 0;

事務處理以BEGIN命令開始:

BEGIN;

現在mysql客戶處在於服務器相關的事物上下文中。任何對事務表所做的改變在提交之前不會成為永久性的改變。

UPDATE ACCOUNT SET balance = 50.25 WHERE account_id = 1;
UPDATE ACCOUNT SET balance = 100.25 WHERE account_id = 2;

在做出所有的改變之後,使用COMMIT命令完成事務處理:

COMMIT;

當然,事務處理的真正優點是在執行第二條語句發生錯誤時體現出來的,若在提交前終止整個事務,可以進行回滾操作:

ROLLBACK;

下面是另一個例子,通過MYSQL直接進行數學運算:

SELECT @first := balance FROM account WHERE account_id = 1;
SELECT @second := balance FROM account WHERE account_id = 2;
UPDATE account SET balance = @first - 25.00 WHERE account_id = 1;
UPDATE account SET balance = @second + 25.00 WHERE account_id = 2;

除了COMMIT命令外,下列命令也會自動結束當前事務:

ALTER TABLE
BEGIN
CREATE INDEX
DROP DATABASE
DROP TABLE
LOCK TABLES
RENAME TABLE
TRUNCATE
UNLOCK TABLES
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved