當前位置:網站首頁>MySQL MySQL 數據庫系統(二)- SQL語句的基本操作

MySQL MySQL 數據庫系統(二)- SQL語句的基本操作

2022-01-28 11:10:14 程序員笑武

MySQL | MySQL 數據庫系統(二)- SQL語句的基本操作


前言

將通過本篇文章學習如何使用 MySQL 數據庫系統的基本操作使用,也是我們在今後的工作中會有所運用的。

一、查看當前服務器中有哪些庫

show databases 語句: 用於查看當前 MySQL 數據庫系統中包含哪些庫。

初始化後的 MySQL 數據庫,默認有四個庫分別是:

information_schema
mysql
performance_schema
test
(mysql庫中包含了用戶認證的相關錶)
複制代碼
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)
複制代碼

查看當前使用的庫中有哪些錶

show tables 語句: 用於查看當前所在的庫中所包含的錶。

操作前,需先使用 use 語句來切換到所要使用的庫。

若你想要知道自己當前所使用的 mysql 庫中包含哪些錶,即可切換到 mysql 的目標庫中,執行語句:show tables; 來進行查看 mysql 庫中的錶。

mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| user                      |
+---------------------------+
24 rows in set (0.00 sec)
複制代碼

查詢錶的結構

describe 語句: 用於顯示錶的結構,組成錶的各字段信息。

需指定“庫名,錶名”來作為參數,指定錶名時,需先使用 use 語句來切換到所要使用的庫。

若查詢錶結構時,可通過如下語句來進行查看 mysql 庫中的 user 錶結構,同時也可以執行語句:describe mysql.user; 查看,所輸出的結構是一致的。

mysql> describe user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field                  | Type                              | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host                   | char(60)                          | NO   | PRI |         |       |
| User                   | char(16)                          | NO   | PRI |         |       |
| Password               | char(41)                          | NO   |     |         |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N       |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0       |       |
| plugin                 | char(64)                          | YES  |     |         |       |
| authentication_string  | text                              | YES  |     | NULL    |       |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.00 sec)
複制代碼

查看當前數據庫版本

select version(); 語句:用於查看當前 mysql 數據庫版本;

mysql> select version();
+------------+
| version()  |
+------------+
| 5.5.22-log |
+------------+
1 row in set (0.02 sec)
複制代碼

查看當前所在哪個庫

select database(); 語句: 用於查看當前所在哪個庫;

mysql> select database();
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)
複制代碼

以列的格式進行顯示

在 MySQL 數據庫中,執行 SQL 語句後面加 \G 錶示將查詢結果按列打印。

默認情况下,MySQL 數據庫的查詢結果是橫向輸出的。

第一行代錶的是列頭,第二列代錶的是記錄集;

mysql> select * from db\G
*************************** 1. row ***************************
                 Host: %
                   Db: test
                 User: 
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: N
         Execute_priv: N
           Event_priv: Y
         Trigger_priv: Y
*************************** 2. row ***************************
                 Host: %
                   Db: test\_%
                 User: 
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: N
         Execute_priv: N
           Event_priv: Y
         Trigger_priv: Y
2 rows in set (0.00 sec)
複制代碼

二、創建庫

create database 語句:用於創建一個新庫,需指定新的數據庫名稱來作為參數;

auth 將作為本次新建庫的庫名,其中該數據庫不包含任何錶。

mysql> create database auth;
Query OK, 1 row affected (0.45 sec)
複制代碼

在剛剛新建庫的 /usr/local/mysql/data 目錄下會自動生成一個與新建庫名所相同的文件夾。

[[email protected] ~]# cd /usr/local/mysql/data
[[email protected] data]# ls
auth     ib_logfile0  localhost.err  mysql             mysql-bin.000002  mysql-bin.000004  mysql.error.log     test
ibdata1  ib_logfile1  localhost.pid  mysql-bin.000001  mysql-bin.000003  mysql-bin.index   performance_schema
複制代碼

三、創建錶

create table 語句:用於在當前 auth 庫中創建新的錶,指定數據錶名稱作為創建新錶的參數,並定義該創建新錶的所使用的字段;

在創建錶之前,需明確你所要建立錶結構,字段名稱,類型等信息。

創建錶的基本語法格式

create table 錶名 (字段1名稱 類型,字段2名稱 類型,......, PRIMARY KEY (主鍵名))
複制代碼

創建好的 users 錶,將字段定義部分的 default 語句用於設置默認的密碼字符,primary 語句用於設置主鍵字段名;

mysql> use auth;
Database changed
mysql> create table users (user_name char(16) not null, user_passwd char(48) default '', primary key (user_name));
Query OK, 0 rows affected (0.66 sec)
複制代碼

四、删除數據錶及數據庫

drop table 語句:用於删除庫的錶,需指定“庫名,錶名” 作為參數;

若要指定錶名參數,先執行 “use” 語句切換到目標庫;

執行以下操作可以删除 auth 庫中的 users 錶。

mysql> drop table auth.users;
Query OK, 0 rows affected (0.09 sec)
複制代碼

drop database 語句:用於删除指定的庫,需指定庫名來作為參數;

執行以下操作可以删除 auth 庫。

mysql> drop database auth;
Query OK, 0 rows affected (0.02 sec)
複制代碼

五、管理錶中的數據記錄

在前面的步驟中介紹了創建庫及錶,下面我們將基於 auth 庫來管理錶中的數據。(插入、查詢、修改及删除數據庫中的記錄);

插入數據

insert into 語句:用於向目標錶中插入新的數據。

語句基本格式
insert into 錶名(字段 1 ,字段 2 ,···) values(字段 1 的值,字段 2 的值,···)
複制代碼

如下操作,將向 auth 庫中的 user 錶插入一條記錄,user_name(用戶名)為:‘jacktian’, 所對應的 user_passwd(密碼)為:‘666666’ 。

需要注意的是,在 values 所插入的值必須與前面指定的各字段所對應。

mysql> use auth;
Database changed
mysql> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| servers        |
| users          |
+----------------+
2 rows in set (0.00 sec)
mysql> INSERT INTO users(user_name,user_passwd) VALUES('jacktian', PASSWORD('666666'));                                                                                                        
Query OK, 1 row affected (0.00 sec)
複制代碼

查看錶結構是否建立正確;

mysql> describe users;
+-------------+----------+------+-----+---------+-------+
| Field       | Type     | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| user_name   | char(16) | NO   | PRI | NULL    |       |
| user_passwd | char(48) | YES  |     |         |       |
+-------------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)
複制代碼

插入新的數據記錄,如果這條記錄完整包括錶中所有字段的值,則所插入的語句中指定字段的部分字段可省略。

mysql> insert into users values ('jake' , password('888888'));
Query OK, 1 row affected (0.01 sec)
複制代碼

查看數據

select 語句:用於查看當前所指定的錶中查看符合條件的數據記錄;

語句基本格式
select 字段名 1,字段名 2,··· from 錶名 where 條件錶達式
複制代碼

若要查詢所有字段時,可使用通配符“*”,來顯示所有的數據記錄,同時將省略 where 條件。執行如下操作時,將可以查看 auth 庫中的 users 錶內的所有數據,其中 user_passwd 字串是加密的,因此將不顯示出實際的密碼內容。

mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| jacktian  | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
| jake      | *DA28842831B3C40F4BC1D3C76CF9AD8CBFDAE1CB |
+-----------+-------------------------------------------+
2 rows in set (0.07 sec)
複制代碼

當需要根據指定的條件查詢數據時,可使用 where 條件來進行查詢。比如你只想查詢 auth 庫中的 users 錶中的 user_name(用戶名)為:‘jacktian’ 的記錄,其顯示出的數據包括:用戶名及密碼字段信息。

mysql> select user_name,user_passwd from auth.users where user_name='jacktian';
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| jacktian  | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
+-----------+-------------------------------------------+
1 row in set (0.01 sec)
複制代碼

修改數據

update 語句:用於修改,更新目標錶中的數據。

語句基本格式
update 錶名 set 字段名 1=字段值 1[,字段名 2=字段值 2] where 條件錶達式
複制代碼

通過如下操作來修改 users 錶中用戶名為 ‘jake’ 的記錄,將 password 設置為空值,並進行驗證記錄是否發現用戶名為 jake 的密碼已修改為空值。

mysql> update auth.users set user_passwd=password ('') where user_name = 'jake';
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| jacktian  | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
| jake      |                                           |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
複制代碼

通常情况下,在 MySQL 數據庫中,我們用於訪問數據庫的各種用戶信息都將保存在 mysql 庫中的 user 錶中,可直接修改其中的數據。

mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| user                      |
+---------------------------+
23 rows in set (0.06 sec)
複制代碼

這時,我們可以將數據庫用戶 root 的密碼設置為 ‘666666’ ,當再次訪問 MySQL 數據庫時,則需要使用 “mysql -u root -p” 來進行訪問 MySQL 數據庫系統,且必須使用此密碼驗證,否則將無法登錄到 MySQL 數據庫系統中。

需要注意的是,此數據庫用戶密碼,可以設置複雜些,保證數據的安全性;

mysql> update mysql.user set password=password ('666666') where user= 'root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0
mysql> FLUSH PRIVILEGES; // 刷新用戶授權信息
複制代碼

若你是在 Linux 系統命令行終端下,還可以使用 mysqladmin 工具來設置密碼。

[[email protected] data]# mysqladmin -u root -p password '666666'
Enter password: 
複制代碼

删除數據

delete 語句:用於删除錶中的指定數據;

語句基本格式
delete from 錶名 where 條件錶達式
複制代碼

若要删除 auth 庫的 users 錶中 user_name 用戶名為:‘jake’ 的數據,可執行如下語句來進行操作,並驗證該數據內容是否已經發現用戶 jake 的數據已經删除了。

mysql> delete from auth.users where user_name = 'jake';
Query OK, 1 row affected (0.03 sec)

mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| jacktian  | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)
複制代碼

在 MySQL 數據庫系統中,默認添加了從本機訪問數據庫的空用戶。如下 user、password 字段均為空值。為考慮數據庫的安全性可直接删除這些空用戶。where 後的條件錶達式,將 user 字段為空的用戶進行篩選,並驗證該空用戶的數據是否已經删除。

mysql> select user,host,password from mysql.user where user = '';
+------+-----------+----------+
| user | host      | password |
+------+-----------+----------+
|      | localhost |          |
+------+-----------+----------+
1 row in set (0.00 sec)

mysql> delete from mysql.user where user = '';
Query OK, 1 row affected (0.04 sec)

mysql> select user,host,password from mysql.user where user = '';
Empty set (0.00 sec)

最後:

我想,可能還有很多人在今年剛過去的金三銀四春招中保持著觀望的形勢,害怕自己的能力不够,或者是安於現狀,覺得目前拿著幾千的月薪覺得能够接受,那麼你就要注意了,這是非常危險的!

我們身為技術人員,最怕的就是安於現狀,一直在原地踏步,那麼你可能在30歲就會迎來自己的職業危機,因為你工作這麼久提昇的只有自己的年齡,技術還是萬年不變!

如果你想在未來能够自我突破,圓夢大廠,那或許以上這份Java學習資料,你需要閱讀閱讀,希望能够對你的職業發展有所幫助。

獲取方式: 只需你**點贊+關注**後,加入Java架構資源交流群,找管理員獲取哦-!

在這裏插入圖片描述

版權聲明
本文為[程序員笑武]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201281110142738.html

隨機推薦