MySQL必知必會面試題 基礎


 

 

1、登錄數據庫

(1)、單實例 

mysql -uroot -poldboy

(2)、多實例 

mysql -uroot -poldboy -S /data/3306/mysql.sock

 

2、查看數據庫版本及當前登錄用戶是什么

mysql> select version(); 查看版本 
mysql> select user(); 查看用戶

 

3、創建GBK字符集的數據庫oldboy,並查看已建庫的完整語句

mysql> create database oldboy character set gbk collate gbk_chinese_ci; 
mysql> show create database oldboy\G

 

4、創建用戶oldboy,使之可以管理數據庫oldboy

第一種方法: 

mysql> grant all on oldboy.* to oldboy@’localhost’ identified by ‘123456’; 
mysql> select user,host from mysql.user;

 第二種方法: 

mysql> grant all on oldboy.* to oldboy@’192.168.1.%/255.255.255.0’ identified by ‘123456’; 
mysql> select user,host from mysql.user;

 第三種方法: 

mysql> create user ‘abc’@’localhost’ identified by ‘123456’;
mysql> grant all on oldboy.* to ‘abc’@’localhost’;


 5、查看創建的用戶oldboy擁有哪些權限

mysql> show grants for abc@localhost;
mysql> show grants for oldboy@localhost;
mysql> show grants for oldboy@localhost\G

 

6、查看當前數據庫有哪些用戶

mysql> select user,host from mysql.user;

 

7、進入oldboy數據庫

mysql> use oldboy

 

8、創建一innodb引擎字符集為GBK表test,字段為id和namevarchar(16),查看建表結構及SQL語句

mysql> create table test(
    -> id int(4),
    -> name varchar(16)
    -> )ENGINE=innodb default charset=gbk;
Query OK, 0 rows affected (0.02 sec)

第一種方法:

mysql> desc test;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(4)      | YES  |     | NULL    |       |
| name  | varchar(16) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

第二種方法:

mysql> show columns from test;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(4)      | YES  |     | NULL    |       |
| name  | varchar(16) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

查看表權限

mysql> show create table test;

 

9、插入一條數據 1,oldboy

mysql> insert into test values(1,'oldboy');
mysql> select * from test;
+------+--------+
| id   | name   |
+------+--------+
|    1 | oldboy |
+------+--------+
1 row in set (0.00 sec)

 

10、批量插入數據 2,老男孩,3,etiantian。ç要求中文不能亂碼

mysql> insert into test values(2,'老男孩'),(3,'etiantian');
Query OK, 2 rows affected (0.07 sec)
Records: 2  Duplicates: 0  Warnings: 0
查看創建情況
mysql> select * from test;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | oldboy    |
|    2 | 老男孩    |
|    3 | etiantian |
+------+-----------+
3 rows in set (0.00 sec)

 

11、查詢插入的所有記錄,查詢名字為oldboy的記錄。查詢id大於1的記錄。

(1)第一種方法

mysql> select * from test;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | oldboy    |
|    2 | 老男孩    |
|    3 | etiantian |
+------+-----------+
3 rows in set (0.00 sec)

(2)第二種方法

mysql> select * from test where name='oldboy';
+------+--------+
| id   | name   |
+------+--------+
|    1 | oldboy |
+------+--------+
1 row in set (0.00 sec)

(3)第三種方法

mysql> select * from test where id>1;
+------+-----------+
| id   | name      |
+------+-----------+
|    2 | 老男孩    |
|    3 | etiantian |
+------+-----------+
2 rows in set (0.00 sec)

 

12、把數據id等於1的名字oldboy更改為oldgirl

mysql> update test set name='oldgirl' where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

 查看修改情況

mysql> select * from test;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | oldgirl   |
|    2 | 老男孩    |
|    3 | etiantian |
+------+-----------+
3 rows in set (0.00 sec)

 

13、在字段name前插入age字段,類型tinyint(2)

mysql> alter table test add age tinyint(2) after id;
Query OK, 3 rows affected (0.04 sec)
Records: 3  Duplicates: 0  Warnings: 0 

mysql> desc test;
+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+| id    | int(4)      | YES  |     | NULL    |       |
| age   | tinyint(2)  | YES  |     | NULL    |       |
| name  | varchar(16) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

 

14、備份oldboy庫及MySQL庫

mysqldump -uroot -poldboy -S /data/3306/mysql.sock --events -B oldboy mysql >/opt/mysql_back.sql 
cat /opt/mysql_back.sql

 

15、刪除表中的所有數據,並查看

第一種mysql> delete from test;
第二種mysql> truncate table test;

mysql> select * from test;
Empty set (0.00 sec)

 

16、刪除表test和oldboy數據庫並查看

mysql> drop table test;     刪除表
mysql> drop database test;  刪除庫

 

17、Linux命令行恢復以上刪除的數據

mysql -uroot -poldboy -S /data/3306/mysql.sock </opt/mysql_back.sql

 

18、把GBK字符集修改為UTF8(可選,注意,此題有陷阱)

mysql>  show variables like 'character_set_%';
+--------------------------+-------------------------------------------+
| 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       | /application/mysql-5.5.49/share/charsets/ |
由配置文件設置
+--------------------------+-------------------------------------------+8 rows in set (0.00 sec)

思想:

1、停止MySQL,單例可以使用/etc/init.d/mysqld(編譯的話需要設置,yum安裝就會出現) 

     多實例:/data/3306/mysql shutdown或者是/data/3306/mysql stop 這個需要我們自己寫腳本。官方有參考 

2、cp /etc/my.cnf /etc/my.cnf.bak,修改前做備份,這是個好習慣。 
      修改my.cnf 
      vi /etc/my.cnf 

      在[client]下添加,client為控制客戶端的,沒試過,沒有的可以不需要加。 
      default-character-set=utf8 

      在[mysqld]下添加,mysqld為控制服務器端的,改過了,OK。 
     default-character-set=utf8 

3.重啟:yum安裝可以使用/etc/init.d/mysqld start 多實例要使用/data/3306/mysql restart(多實例詳細介紹見下一篇文章) 

4.show variables like ‘%char%’;查看

 

19、MySQL密碼丟了,如何找回實戰?

單實例

/etc/init.d/mysqld stop
mysqld_safe --skip-grant-tables --user=mysql &
mysql 
修改完密碼重啟
/etc/init.d/mysqld restart

多實例

/data/3306/mysql stop  無法停止
killall mysqld
mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables --user=mysql &
update mysql.user set password=password('oldboy456') where user='root' and host='localhost';
flush privileges;
mysql 登錄
mysqladmin -uroot -poldboy shutdown
/etc/init.d/mysqld start

 

原創申明:老男孩教育公眾號文章均出自老男孩教育老師及學員原創,轉載請聯系miaokm@oldboyedu.com。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM