CMD窗口登陸MySQL:mysql
基本命令:mysql -u用戶名 -p 回車sql
Enter Password:*********數據庫
C:\Users\Administrator>mysql -uroot -p Enter Password:*********
受權特定用戶操做數據庫(受權特定用戶對數據庫中的某一張表擁有的相應權限):ubuntu
基本命令:mysql>grant 權限名稱(或權限列表) on 數據庫名稱.數據表名稱 to 用戶名@localhost(或127.0.0.1) identified by 密碼;安全
mysql>grant select,delete,update on test.students to tom@localhost identified by '123456'; --授予全部權限給予用戶tom mysql>grant all on test.students to tom@localhost identified by '123456';
收回特定用戶對數據庫的操做權限:ide
命令:revoke 操做名稱 on 庫名.表名 from 用戶名@主機IP地址;編碼
mysql> revoke select on test.students from tom@localhost; Query OK, 0 rows affected (0.00 sec) --收回全部的數據庫操做權限 mysql> revoke all on test.students from tom@localhost;
查看數據庫編碼格式:spa
命令:show variables like 'character_set_database';.net
mysql> show variables like 'character_set_database'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | character_set_database | utf8 | +------------------------+-------+ 1 row in set (0.00 sec)
拓展:查看數據庫的全部相關編碼:code
命令:show variables like ‘%character%’;
mysql> show variables like '%character%'; +--------------------------+------------------------------------+ | Variable_name | Value | +--------------------------+------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\NativeApp\MySQL\share\charsets\ | +--------------------------+------------------------------------+ 8 rows in set (0.00 sec)
修改數據庫的編碼格式:
命令:alter database 數據庫名稱 character set utf8;
mysql> alter database test character set gbk; Query OK, 1 row affected (0.00 sec) mysql> show variables like 'character_set_database'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | character_set_database | gbk | +------------------------+-------+ 1 row in set (0.00 sec)
查看數據表的編碼格式:
命令:mysql> show create table <表名>;
mysql> show create table students; +----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | students | CREATE TABLE `students` ( `id` int(11) NOT NULL, `name` varchar(10) NOT NULL, `sex` char(4) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
修改數據表格編碼格式:
命令:mysql>alter table <表名> character set utf8;
mysql> alter table students character set gbk; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0
修改字段編碼格式
mysql>alter table <表名> change <字段名> <字段名> <類型> character set utf8; mysql>alter table user change username username varchar(20) character set utf8 not null;
添加外鍵
mysql>alter table tb_product add constraint fk_1 foreign key(factoryid) references tb_factory(factoryid); mysql>alter table <表名> add constraint <外鍵名> foreign key<字段名> REFERENCES <外表表名><字段名>;
刪除外鍵
mysql>alter table tb_people drop foreign key fk_1; mysql>alter table <表名> drop foreign key <外鍵名>;
修改數據表中的字段類型:
命令:alter table <表名> modify column 列名 類型;
mysql> alter table students modify column name varchar(30); Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0
刪除用戶:
命令:drop user tom@localhost;
mysql> drop user tom@localhost; Query OK, 0 rows affected (0.00 sec) --刪除用戶後,從新登陸數據庫時出現以下錯誤 C:\Users\Administrator>mysql -utom -p Enter password: ****** ERROR 1045 (28000): Access denied for user 'tom'@'localhost' (using password: YES)
建立一個新用戶完整步驟:
(1)、建立一個用戶,命令:mysql>create user tom;
mysql> create user tom; Query OK, 0 rows affected (0.03 sec)
(2)、進入mysql庫,爲新建立的新用戶配置相關信息;
mysql> use mysql; Database changed --在dos窗口中查詢出數據庫有哪些用戶的命令(格式化查詢出的結果) --select * from mysql.user \G (切記:後面沒有 分號 結尾) --更新mysql.user表中新用戶tom的密碼; mysql> update user set Password=PASSWORD('123456') where user='tom'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 --題外話:咱們以新用戶的的身份登陸到localhost上時,會發現新用戶能操做的數據庫不多。 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.00 sec)
(3)、爲新用戶授予相應權限;
--命令:grant 權限列表 on 庫名.表名 to 用戶名@主機名 identified by 用戶密碼; mysql> grant select on test.students to tom@localhost identified by '123456'; Query OK, 0 rows affected (0.00 sec) --此時以新用戶登陸數據庫結果以下: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test | +--------------------+ 2 rows in set (0.00 sec) --能夠看到:獲得受權的新用戶能夠查詢被受權的test庫。 --授予更多權限 mysql> grant insert,delete,update on test.students to tom@localhost identified by '123456'; Query OK, 0 rows affected (0.00 sec)
附:mysql權限結構圖:
修改表命令:
RENAME TABLE 原名 TO 新名;
ALTER TABLE 原名 RENAME 新名;
ALTER TABLE 原名 RENAME TO 新名;
修改表名:mysql>alter table 原表名 rename to 新表名;
修改列:mysql>alter table 表名 change 原列名 新列名 新列名的數據類型;
增長列:mysql>alter table 表名 add 新列名 新列名的數據類型;
刪除列:mysql>alter table 表名 drop column 列名;
刪除表:drop table 表名;
拓展知識:
MySQL經常使用的存儲引擎爲MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事務安全表,其餘存儲引擎都是非事務安全表。 MyISAM是MySQL的默認存儲引擎。MyISAM不支持事務、也不支持外鍵,但其訪問速度快,對事務完整性沒有要求。 InnoDB存儲引擎提供了具備提交、回滾和崩潰恢復能力的事務安全。可是比起MyISAM存儲引擎,InnoDB寫的處理效率差一些而且會 佔用更多的磁盤空間以保留數據和索引。 MEMORY存儲引擎使用存在內存中的內容來建立表。每一個MEMORY表只實際對應一個磁盤文件。MEMORY類型的表訪問很是得快,由於它 的數據是放在內存中的,而且默認使用HASH索引。可是一旦服務關閉,表中的數據就會丟失掉。 MERGE存儲引擎是一組MyISAM表的組合,這些MyISAM表必須結構徹底相同。MERGE表自己沒有數據,對MERGE類型的表進行查詢、 更新、刪除的操做,就是對內部的MyISAM表進行的。
新增數據:
命令:insert into 表名 列名 select 源列名 from 源表名;
insert into 表名 (列名1,列名2) select 源列名1,源列名2 from 源表名;
例如:insert into tb_user_bak(name,sex,age) select name,sex,age from tb_user;
修改MySQL客戶端顯示數據的編碼:
命令:set names gbk;
mysql>SET NAMES gbk; -- 客戶端以GBK的編碼形式呈現數據
查看數據庫的一些相關命令:
mysql> SELECT VERSION(); # 顯示mysql版本,至關於登陸數據庫以前輸入mysql -V +-------------------------+ | VERSION() | +-------------------------+ | 5.5.35-0ubuntu0.12.04.2 | +-------------------------+ 1 row in set (0.00 sec) mysql> SELECT USER(); # 顯示當前用戶 +----------------+ | USER() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec) mysql> SELECT NOW(); # 顯示系統時間 +---------------------+ | NOW() | +---------------------+ | 2015-04-05 21:02:31 | +---------------------+ 1 row in set (0.00 sec) mysql> # 在Linux的mysql中也可使用Ctrl+L清屏 mysql> SELECT DATABASE(); #查看當前使用的數據庫 +------------+ | DATABASE() | +------------+ | test | +------------+ 1 row in set (0.00 sec)
建立數據庫:
命令:
-- 說明:花括號表示必選項,豎線表示多選一,方括號表示可選
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] character_name;
mysql> CREATE DATABASE t1; Query OK, 1 row affected (0.00 sec)
咱們可使用source
命令運行sql腳本。登陸mysql數據庫:
命令:source 數據庫腳本名;
查看建立數據庫使用的命令:
命令:SHOW CREATE DATABASE 數據庫名;
mysql> SHOW CREATE DATABASE t1; # 查看建立數據庫使用的命令 +----------+-------------------------------------------------------------+ | Database | Create Database | +----------+-------------------------------------------------------------+ | t1 | CREATE DATABASE `t1` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+-------------------------------------------------------------+ 1 row in set (0.00 sec)
修改數據庫:
命令:ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] character_name;
mysql>ALTER DATABASE t2 CHARACTER SET=UTF8;
拓展:自動編號的字段必須是主鍵。
AUTO_INCREMENT
該字段要麼是整數,要麼小數位數爲0,且必須和主鍵組合使用,默認狀況下初始值爲1,增量爲1.——保證記錄的惟一性。
主鍵約束(PRIMARY KEY):
每張表只能有一個主鍵,可以保證記錄的惟一性,主鍵自動爲NOT NULL
,並自動建立索引。
主鍵咱們能夠寫成KEY或者PRIMARY KEY。
MySQL數據類型:
數據類型決定了數據的存儲格式,表明了不一樣的信息類型。
1.整型
2.浮點型 (項目開發中以float居多 )
3.日期型
項目開發中該類型用得並很少,由於涉及到時區的問題,多用數字表示。
4.字符型
VARCHAR,TEXT,DATE,TIME,ENUM等類型的數據也須要單引號修飾,而INT,FLOAT,DOUBLE等則不須要。