MySQL基礎命令

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等則不須要。

相關文章
相關標籤/搜索