第一次使用MySQL,你必須要注意這些

第一次使用MySQL,你必須要注意這些

連接MySQL的工具以及工具的破解
MySQL安裝與幾個常用字符集
找到MySQL官方文檔,保留一個自己使用的本地腳本,方便以後開發

	連接MySQL的工具市面上有很多,對於入門的小白與常年的程序猿的你來講,Navicat一定是不可或缺的。
	也是必須要會的,界面簡單,操作方便,又能免費,還能破解,不需要多說,直接上手吧。
	另外,破解工具網上爛大街,大家百度就能解決。同時,安裝出問題,記得一定要卸載乾淨。

MySQL字符集

#查看字符集
SHOW CHARACTER SET;
SHOW COLLATION;
SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation%';
MySQL對於字符集的指定可以細化到一個數據庫,一張表,一列.
傳統的程序在創建數據庫和數據表時並沒有使用那麼複雜的配置,它們用的是默認的配置.
(1)編譯MySQL 時,指定了一個默認的字符集,這個字符集是 latin1;
(2)安裝MySQL 時,可以在配置文件 (my.ini) 中指定一個默認的的字符集,
如果沒指定,這個值繼承自編譯時指定的;
(3)啓動mysqld 時,可以在命令行參數中指定一個默認的的字符集,
如果沒指定,這個值繼承自配置文件中的配置,此時 character_set_server 被設定爲這個默認的字符集;
(4)安裝 MySQL選擇多語言支持,安裝程序會自動在配置文件中把default_character_set 設置爲 UTF-8,
保證缺省情況下所有的數據庫所有表的所有列的都用 UTF-8 存儲。

查看默認字符集
(默認情況下,mysql的字符集是latin1(ISO_8859_1),如何查看在上面我們已經給出了相關命令

修改默認字符集
(1) 最簡單的修改方法,就是修改mysql的my.ini文件中的字符集鍵值,
  default-character-set = utf8
  character_set_server =  utf8
  修改完後,重啓mysql的服務
(2) 還有一種修改字符集的方法,就是使用mysql的命令
 mysql> SET character_set_client = utf8 ;
 mysql> SET character_set_connection = utf8 ;
 mysql> SET character_set_database = utf8 ;
 mysql> SET character_set_results = utf8 ;
 mysql> SET character_set_server = utf8 ;
 mysql> SET collation_connection = utf8 ;
 mysql> SET collation_database = utf8 ;
 mysql> SET collation_server = utf8 ;

MySQL的安裝與使用大家百度一下就有很不錯的教程了,這裏我也不再多說。

MySQL的官方文檔注意一定要下載zip格式的,比較常用的是html的,大家看自己個人的喜好。我這裏專門說一下個人本地腳本對工作的重要性。

使用ORACLE3年,在前公司做事情的時候,遇到了很不錯的項目經理,也是技術出身,是公司成長最快的人。
在分享交流經驗的時候,他說到了許多很專業,很實用的提升效率的工作經驗,而保留本地腳本就是其中一個。
當時在用PLSQL時,會從本地文件默認加載一些SQL文件,如果你事先將常用的底層表,業務表,數據表,
以及表的SQL語句建立並保存起來,隨着後來開發運維過程中的積累,你會有很多的重複勞動,
因爲你提前的準備而節省掉,相應的工作效率也就提高了很多。

以下是我個人列出的常用的SQL腳本,拿走不謝。

#查看數據版本
SELECT
	version();# [mysql dir]/bin/mysql -h hostname -u root -p
#創建一個數據庫。
CREATE DATABASE [ databasename ];#列出所有數據庫。
SHOW DATABASES;#切換到一個數據庫。
USE [ db NAME ];#顯示一個數據庫的所有表。
SHOW TABLES;#查看數據表的字段格式。
DESCRIBE [ TABLE NAME ];#刪除一個數據庫。
DROP DATABASE [ DATABASE NAME ];#刪除一個數據表。
DROP TABLE [ TABLE NAME ];#顯示一個數據表的所有數據。
SELECT
	* 
FROM
	[ TABLE NAME ];#返回指定數據表的各列信息。
SHOW COLUMNS 
FROM
	[ TABLE NAME ];#使用值“whatever”過濾顯示選定的某些行。
SELECT
	* 
FROM
	[ TABLE NAME ] 
WHERE
	[ field NAME ] = "whatever";#顯示所有包含name爲"Bob"和phone number爲“3444444”的記錄。
SELECT
	* 
FROM
	[ TABLE NAME ] 
WHERE
	NAME = "Bob" 
	AND phone_number = '3444444';#顯示所有不包含name爲"Bob"和phone number爲“3444444”的記錄,並以phone_number字段排序。
SELECT
	* 
FROM
	[ TABLE NAME ] 
WHERE
	NAME != "Bob" 
	AND phone_number = '3444444' 
ORDER BY
	phone_number;#顯示所有的name以字母“bob”開頭和phone number爲“3444444”的記錄。
SELECT
	* 
FROM
	[ TABLE NAME ] 
WHERE
	NAME LIKE "Bob%" 
	AND phone_number = '3444444';#顯示name以字母“bob”開頭和phone number爲“3444444”的第1至第5條記錄。
SELECT
	* 
FROM
	[ TABLE NAME ] 
WHERE
	NAME LIKE "Bob%" 
	AND phone_number = '3444444' 
	LIMIT 1,
	5;#使用正則表達式查找記錄。使用“正則表達式二進制”強制區分大小寫。此命令查找以a開頭的任何記錄。
SELECT
	* 
FROM
	[ TABLE NAME ] 
WHERE
	rec RLIKE "^a";#返回唯一不同的記錄。
SELECT DISTINCT
	[ COLUMN NAME ] 
FROM
	[ TABLE NAME ];#以升序或降序顯示選定的記錄。
SELECT
	[ col1 ],[ col2 ] 
FROM
	[ TABLE NAME ] 
ORDER BY
	[ col2 ] DESC;#返回行數。
SELECT
	COUNT(*) 
FROM
	[ TABLE NAME ];#統計指定列值的總和。
SELECT
	SUM(*) 
FROM
	[ TABLE NAME ];#聯結表。
SELECT
	lookup.illustrationid,
	lookup.personid,
	person.birthday 
FROM
	lookup
	LEFT JOIN person ON lookup.personid = person.personid = statement
	TO JOIN birthday IN person TABLE WITH PRIMARY illustration id;#新建一個用戶。以root登錄。切換到mysql數據庫,創建用戶,刷新權限。
# mysql -u root -p
USE mysql;
INSERT INTO USER ( HOST, USER, PASSWORD )
VALUES
	( '%', 'username', PASSWORD ( 'password' ) );
FLUSH PRIVILEGES;#從unix命令行更改用戶密碼。
# [mysql dir]/bin/mysqladmin -u username -h hostname.blah.org -p password 'new-password'
#從mysql命令行更改用戶密碼。以root登錄,設置密碼,更新權限。
# /etc/init.d/mysql stop
# mysqld_safe --skip-grant-tables &
# mysql -u root
USE mysql;
UPDATE USER 
	SET PASSWORD = PASSWORD ( "newrootpassword" ) 
WHERE
	USER = 'root';
FLUSH PRIVILEGES;
quit # /etc/init.d/mysql stop
# /etc/init.d/mysql start
#root密碼爲空時,設置root密碼。
# mysqladmin -u root password newpassword
#更新root密碼。
# mysqladmin -u root -p oldpassword newpassword
#允許用戶“bob”從localhost以密碼“passwd”連接服務器。以root登錄,切換mysql數據庫。設置權限,更新權限。
# mysql -u root -p
USE mysql;
GRANT USAGE ON *.* TO bob @localhost IDENTIFIED BY 'passwd';
FLUSH PRIVILEGES;#爲數據庫db設置權限。以root登錄,切換到mysql數據庫,授予權限,更新權限。
# mysql -u root -p
USE mysql;
INSERT INTO db ( HOST, Db, USER, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv )
VALUES
	( '%', 'databasename', 'username', 'Y', 'Y', 'Y', 'Y', 'Y', 'N' );
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON databasename.* TO username @localhost;
FLUSH PRIVILEGES;#更新已存在表的數據。
UPDATE [ TABLE NAME ] 
SET Select_priv = 'Y',
Insert_priv = 'Y',
Update_priv = 'Y' 
WHERE
	[ field NAME ] = 'user';#刪除表中[field name] = 'whatever'的行。
DELETE 
FROM
	[ TABLE NAME ] 
WHERE
	[ field NAME ] = 'whatever';#更新數據庫的權限/特權。
FLUSH PRIVILEGES;#刪除列。
ALTER TABLE [ TABLE NAME ] DROP COLUMN [ COLUMN NAME ];#新增列到db。
ALTER TABLE [ TABLE NAME ] ADD COLUMN [ new COLUMN NAME ] VARCHAR ( 20 );#更改列名。
ALTER TABLE [ TABLE NAME ] CHANGE [ old COLUMN NAME ] [ new COLUMN NAME ] VARCHAR ( 50 );#增加唯一的列。
ALTER TABLE [ TABLE NAME ] ADD UNIQUE ([ COLUMN NAME ]);#設置列值大點。
ALTER TABLE [ TABLE NAME ] MODIFY [ COLUMN NAME ] VARCHAR ( 3 );#刪除唯一列。
ALTER TABLE [ TABLE NAME ] DROP INDEX [ colmn NAME ];#導入一個CSV文件到表。
LOAD DATA INFILE '/tmp/filename.csv' REPLACE INTO TABLE [ TABLE NAME ] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' ( field1, field2, field3 );#導出所有數據庫到sql文件。
# [mysql dir]/bin/mysqldump -u root -ppassword --opt >/tmp/alldatabases.sql
#導出一個數據庫。
# [mysql dir]/bin/mysqldump -u username -ppassword --databases databasename >/tmp/databasename.sql
#從一個數據庫導出一個表。
# [mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql
#從sql文件還原數據庫(數據表)。
# [mysql dir]/bin/mysql -u username -ppassword databasename < /tmp/databasename.sql
#創建數據表例1。
CREATE TABLE [ TABLE NAME ] (
	firstname VARCHAR ( 20 ),
	middleinitial VARCHAR ( 3 ),
	lastname VARCHAR ( 35 ),
	suffix VARCHAR ( 3 ),
	officeid VARCHAR ( 10 ),
	userid VARCHAR ( 15 ),
	username VARCHAR ( 8 ),
	email VARCHAR ( 35 ),
	phone VARCHAR ( 25 ),
	groups VARCHAR ( 15 ),
	datestamp DATE,
	TIMESTAMP time,
	pgpemail VARCHAR ( 255 ) 
);#創建數據表例2。
CREATE TABLE [ TABLE NAME ] (
	personid INT ( 50 ) NOT NULL auto_increment PRIMARY KEY,
	firstname VARCHAR ( 35 ),
	middlename VARCHAR ( 50 ),
	lastnamevarchar ( 50 ) DEFAULT 'bato' 
);#查看mysql所有字符集
SHOW VARIABLES LIKE '%char%';
SHOW TABLE STATUS 
FROM
	sqlstudy_db LIKE '%countries%';
SHOW FULL COLUMNS 
FROM
	countries;
	
#查看字符集
SHOW CHARACTER SET;
SHOW COLLATION;
SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation%';

博客寫作的時候,含了很多個人成分,請勿噴,喜歡就收藏,不喜歡,您就動動手指劃過就好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章