日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql数据库基本操作练习

發布時間:2025/7/14 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据库基本操作练习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、MySQL基本管理

1.使用mysql命令連接數據庫。


2.練習查看/刪除/創建庫的相關操作。


3.練習查看/刪除/創建表的相關操作。


實驗步驟:

1.使用mysql命令連接數據庫


連接MySQL服務器時,最基本的用法是通過 -u 選項指定用戶名、-p指定密碼。密碼可以寫在命令行(如果不寫,則出現交互,要求用戶輸入),當然基于安全考慮一般不推薦這么做:


? ??[root@dbsvr1 ~]# mysql -uroot -p1234567 ? ? ? ? //可以緊挨著選項,不要空格

? ? Warning: Using a password on the command line interface can be insecure.

? ? Welcome to the MySQL monitor. Commands end with ; or \g.

? ? Your MySQL connection id is 5

? ? Server version: 5.6.15 MySQL Community Server (GPL)

? ? Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

? ? Oracle is a registered trademark of Oracle Corporation and/or its

? ? affiliates. Other names may be trademarks of their respective

? ? owners.

? ? Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

? ??mysql> exit ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //退出已登錄的mysql> 環境

? ? Bye

建議使用 mysql -uroot -p ?回車在交互操作中輸入密碼,安全性比較高。


默認情況下,msyql命令會連接本機的MySQL服務。但在需要的時候,可以通過 -h 選項指定遠程主機;如果端口不是3306,還可以通過大寫的 -P 選項指定:


? ??[root@dbsvr1 ~]# mysql -u root -p -h 127.0.0.1 -P 3306 ? ?//登錄本地數據庫,-u是定用戶,-p交互輸入密碼,-h主機 ?-P指定端口

? ? Enter password:

? ? Welcome to the MySQL monitor. Commands end with ; or \g.

? ? Your MySQL connection id is 6

? ? Server version: 5.6.15 MySQL Community Server (GPL)

? ? Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

? ? Oracle is a registered trademark of Oracle Corporation and/or its

? ? affiliates. Other names may be trademarks of their respective

? ? owners.

? ? Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

? ? mysql> exit ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //退出已登錄的mysql> 環境

? ? Bye


若要遠程連接其他主機的MySQL服務,有一個前提條件——對方已經添加了此用戶從此客戶機訪問的數據庫授權。


2.練習查看/刪除/創建庫的相關操作


以root用戶登入“mysql> ”環境后,可以執行各種MySQL指令、SQL指令?;镜挠梅ㄊ马椚缦?#xff1a;


? ??操作指令不區分大小寫(庫名/表名、密碼、變量值等除外)。

? ? 每條SQL指令以 ; 結束或分隔。

? ? 不支持 Tab 鍵自動補齊。

? ? \c 可廢棄當前編寫錯的操作指令。


1)查看現有的庫


? ??mysql> SHOW DATABASES; ? ? ? ? ? ? ?//查看現有的庫,命令可小寫, ?注意命令結尾加“;”

? ? +--------------------+

? ? | Database |

? ? +--------------------+

? ??| information_schema | ? ? ? ? ? ? ? ? //信息概要庫

? ? | mysql | ? ? ? ? ? ? ? ? ? ? ? ? ? ? //授權庫

? ? | performance_schema | ? ? ? ? ? ? ? ?//性能結構庫

? ? | test | ? ? ? ? ? ? ? ? ? ? ? ? ? ? //測試庫(空庫)

? ? +--------------------+

? ? 4 rows in set (0.15 sec)


2)切換/使用指定的庫


切換到test庫:


? ??mysql> USE test; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //切換到數據庫test

? ? Database changed

? ??mysql> SELECT DATABASE(); ? ? ? ? ? ? ? ? ? ? ? ? //確認當前所在的庫

? ? +------------+

? ? | DATABASE() |

? ? +------------+

? ? | test |

? ? +------------+

? ? 1 row in set (0.00 sec)


切換到mysql庫:


? ??mysql> USE mysql; ? ? ? //切換到數據庫mysql

? ? Reading table information for completion of table and column names

? ? You can turn off this feature to get a quicker startup with -A

? ? Database changed

? ??mysql> SELECT DATABASE(); ? ? ? ? ? ? ? ? ? ? ? ? //確認當前所在的庫

? ? +------------+

? ? | DATABASE() |

? ? +------------+

? ? | mysql | //mysql

? ? +------------+

? ? 1 row in set (0.00 sec)


3)創建新的庫


新建名為mydb的庫,確認結果:


? ??mysql> CREATE DATABASE mydb; ? ? ? //創建數據庫mydb,命令可小寫

? ? Query OK, 1 row affected (0.03 sec)

? ??mysql> SHOW DATABASES; ? ? ? ? ? ?//查看現有數據庫,確認是否新建成功

? ? +--------------------+

? ? | Database |

? ? +--------------------+

? ? | information_schema |

? ??| mydb | ? ? ? ? ? ? ? ? ? ? ? ? //新建的mydb庫

? ? | mysql |

? ? | performance_schema |

? ? | test |

? ? +--------------------+

? ? 5 rows in set (0.00 sec)


新建名為newdb的庫,確認結果:


? ??mysql> CREATE DATABASE newdb; ? ? ? //新建數據庫newdb

? ? Query OK, 1 row affected (0.00 sec)

? ? mysql> SHOW DATABASES;

? ? +--------------------+

? ? | Database |

? ? +--------------------+

? ? | information_schema |

? ??| mydb | ? ? ? ? ? ? ? ? ? ? ? ? //新建的mydb庫

? ? | mysql |

? ??| newdb | ? ? ? ? ? ? ? ? ? ? ? ? //新建的newdb庫

? ? | performance_schema |

? ? | test |

? ? +--------------------+

? ? 6 rows in set (0.00 sec)


新建數據庫以后,會未每個數據庫建立同名文件夾,可從命令行確認:


? ??[root@dbsvr1 ~]# ls -l /var/lib/mysql/{my,new}db/ ? ?//查看數據庫文件

? ? /var/lib/mysql/mydb/:

? ? 總用量 4

? ? -rw-rw----. 1 mysql mysql 65 1月 7 17:00 db.opt

? ? /var/lib/mysql/newdb/:

? ? 總用量 4

? ? -rw-rw----. 1 mysql mysql 65 1月 7 17:00 db.opt


4)刪除指定的庫


刪除名為newdb的庫:


? ??mysql> DROP DATABASE newdb; ? ? ? ? ? ? ? ?//刪除數據庫newdb

? ? Query OK, 0 rows affected (0.04 sec)

? ??mysql> SHOW DATABASES; ? ? ? ? ? ? ? ? ? ? ? ? //確認刪除結果,已無newdb表

? ? +--------------------+

? ? | Database |

? ? +--------------------+

? ? | information_schema |

? ? | mydb |

? ? | mysql |

? ? | performance_schema |

? ? | test |

? ? +--------------------+

? ? 5 rows in set (0.00 sec)


3.練習查看/刪除/創建表的相關操作


1)查看指定的庫里有哪些表


查看test庫里有哪些表:


? ??mysql> USE test; ? ? //切換到數據庫test

? ? Database changed

? ? mysql> SHOW TABLES; ? ? ? //查看當前數據庫中的表信息

? ? Empty set (0.00 sec) //查詢結果為空


查看mysql庫里有哪些表:


? ??mysql> USE mysql; ? ? ?//切換到數據庫mysql

? ? Reading table information for completion of table and column names

? ? You can turn off this feature to get a quicker startup with -A

? ? Database changed

? ??mysql> SHOW TABLES; ? ?//查看當前數據庫中的表

? ? +---------------------------+

? ? | Tables_in_mysql |

? ? +---------------------------+

? ? | columns_priv |

? ? | db |

? ? | event |

? ? | func |

? ? | general_log |

? ? | help_category |

? ? | help_keyword |

? ? | help_relation |

? ? | help_topic |

? ? | innodb_index_stats |

? ? | innodb_table_stats |

? ? | ndb_binlog_index |

? ? | plugin |

? ? | proc |

? ? | procs_priv |

? ? | proxies_priv |

? ? | servers |

? ? | slave_master_info |

? ? | slave_relay_log_info |

? ? | slave_worker_info |

? ? | slow_log |

? ? | tables_priv |

? ? | time_zone |

? ? | time_zone_leap_second |

? ? | time_zone_name |

? ? | time_zone_transition |

? ? | time_zone_transition_type |

? ??| user | ? ? ? ? ? ? ? ? ? ? //存放數據庫用戶的表

? ? +---------------------------+

? ? 28 rows in set (0.00 sec)


2)查看指定表的字段結構


當前庫為mysql,查看columns_priv表的結構,以列表形式展現:


? ??mysql> DESCRIBE columns_priv\G ? ? ? ? ? ? //查詢表結構,末尾不用分號

? ? *************************** 1. row ***************************

??? Field: Host????????????//字段名

? ? Type: char(60)?????????//字符類型和長度

? ? Null: NO????????????? ?//不能為空

? ? Key: PRI????????????? ?//主鍵

? ? Default:

? ? Extra:

? ? *************************** 2. row ***************************

? ? Field: Db

? ? Type: char(64)

? ? Null: NO

? ? Key: PRI

? ? Default:

? ? Extra:

? ? *************************** 3. row ***************************

? ? Field: User

? ? Type: char(16)

? ? Null: NO

? ? Key: PRI

? ? Default:

? ? Extra:

? ? *************************** 4. row ***************************

? ? Field: Table_name

? ? Type: char(64)

? ? Null: NO

? ? Key: PRI

? ? Default:

? ? Extra:

? ? *************************** 5. row ***************************

? ? Field: Column_name

? ? Type: char(64)

? ? Null: NO

? ? Key: PRI

? ? Default:

? ? Extra:

? ? *************************** 6. row ***************************

? ? Field: Timestamp

? ? Type: timestamp

? ? Null: NO

? ? Key:

? ? Default: CURRENT_TIMESTAMP

? ? Extra: on update CURRENT_TIMESTAMP

? ? *************************** 7. row ***************************

? ? Field: Column_priv

? ? Type: set('Select','Insert','Update','References')

? ? Null: NO

? ? Key:

? ? Default:

? ? Extra:

? ? 7 rows in set (0.00 sec)


查看columns_priv表的結構,以表格形式展現:


? ??mysql> DESCRIBE columns_priv; ? ? ? ? ? ? ? ? //末尾需要有分號

? ? +-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+

? ? | Field | Type | Null | Key | Default | Extra |

? ? +-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+

? ? | Host | char(60) | NO | PRI | | |

? ? | Db | char(64) | NO | PRI | | |

? ? | User | char(16) | NO | PRI | | |

? ? | Table_name | char(64) | NO | PRI | | |

? ? | Column_name | char(64) | NO | PRI | | |

? ? | Timestamp | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |

? ? | Column_priv | set('Select','Insert','Update','References') | NO | | | |

? ? +-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+

? ? 7 rows in set (0.00 sec)


上述操作中,DESCRIBE可縮寫為DESC;另外,當引用非當前庫中的表時,可以用“庫名.表名”的形式。比如,切換為mysql庫再執行“DESCRIBE columns_priv;”,與以下操作的效果是相同的:


? ??mysql> DESC mysql.columns_priv;

? ? +-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+

? ? | Field | Type | Null | Key | Default | Extra |

? ? +-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+

? ? | Host | char(60) | NO | PRI | | |

? ? | Db | char(64) | NO | PRI | | |

? ? | User | char(16) | NO | PRI | | |

? ? | Table_name | char(64) | NO | PRI | | |

? ? | Column_name | char(64) | NO | PRI | | |

? ? | Timestamp | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |

? ? | Column_priv | set('Select','Insert','Update','References') | NO | | | |

? ? +-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+

? ? 7 rows in set (0.00 sec)


3)在test庫中創建一個名為pwlist的表


包括name、password兩列,其中name列作為主鍵。兩個字段值均不允許為空,其中密碼列賦予默認空值,相關操作如下所述。


切換到test庫:


? ? mysql> USE test; ?

? ? Database changed


新建pwlist表:


? ? mysql> CREATE TABLE pwlist( ? ? //新建表pwlist

? ? -> name CHAR(16) NOT NULL, ? ? ?//設置name字段屬性,字符型,長度16,內容不能為空

? ? -> password CHAR(48) DEFAULT '', ?//設置密碼字段屬性,字符行,長度48,默認為空

? ? -> PRIMARY KEY(name) ? ? ? ? ? ?//設置主鍵為name

? ? -> ); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//加;表示結束,執行命令

? ? Query OK, 0 rows affected (0.26 sec)


確認新創建的表:


? ??mysql> SHOW TABLES; ? ? //查看表信息

? ? +----------------+

? ? | Tables_in_test |

? ? +----------------+

? ??| pwlist | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //新建的pwlist表

? ? +----------------+

? ? 1 rows in set (0.01 sec)


查看pwlist表的字段結構:


? ??mysql> DESC pwlist; ? ? ? ?//查詢pwlist表的結構

? ? +----------+----------+------+-----+---------+-------+

? ? | Field | Type | Null | Key | Default | Extra |

? ? +----------+----------+------+-----+---------+-------+

? ? | name | char(16) | NO | PRI | NULL | |

? ? | password | char(48) | YES | | | |

? ? +----------+----------+------+-----+---------+-------+

? ? 2 rows in set (0.01 sec)


4)刪除指定的表


刪除當前庫中的pwlist表:


? ??mysql> DROP TABLE pwlist; ? ? ? ?//刪除表pwlist

? ? Query OK, 0 rows affected (0.01 sec)


確認刪除結果:


? ? mysql> SHOW TABLES;

? ? Empty set (0.00 sec)


5)在test庫中創建一個學員表




在MySQL表內存儲中文數據時,需要更改字符集(默認為latin1不支持中文)。若要修改MySQL服務的默認字符集,可參考本節擴展部分的方法,以使MySQL支持存儲中文數據記錄;或者,也可以在創建庫或表的時候,手動添加“DEFAULT CHARSET=utf8”來更改。


根據上述表格結構,創建支持中文的student表:


? ??mysql> CREATE TABLE test.student( ? ? //在數據庫test中創建表student

? ? -> 學號 char(9) NOT NULL, ? ? ? ? ? ? ? ? ?//學號字段為字符型,長度為9,內容不能空

? ? -> 姓名 varchar(4) NOT NULL, ? ? ? ? ? ? ? //姓名字段為不定長字符型,長度4,不能為空

? ? -> 性別 enum('男','女') NOT NULL,?

? ? -> 手機號 char(11) DEFAULT '',

? ? -> 通信地址 varchar(64),

? ? -> PRIMARY KEY(學號)

? ? -> ) DEFAULT CHARSET=utf8; ? ? ? ? ? ? ? ? //手工指定字符集,采用utf8

? ? Query OK, 0 rows affected (0.07 sec)


查看student表的字段結構:


? ? mysql> DESC test.student; ? ? ? //查看student表的結構

? ? +--------------+-------------------+------+-----+---------+-------+

? ? | Field | Type | Null | Key | Default | Extra |

? ? +--------------+-------------------+------+-----+---------+-------+

? ? | 學號 | char(9) | NO | PRI | NULL | |

? ? | 姓名 | varchar(4) | NO | | NULL | |

? ? | 性別 | enum('男','女') | NO | | NULL | |

? ? | 手機號 | char(11) | YES | | | |

? ? | 通信地址 | varchar(64) | YES | | NULL | |

? ? +--------------+-------------------+------+-----+---------+-------+

? ? 5 rows in set (0.04 sec)


查看student表的實際創建指令:


? ? mysql> SHOW CREATE TABLE test.student;

? ? +---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

? ? | Table | Create Table |

? ? +---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

? ? | student | CREATE TABLE `student` (

? ? `學號` char(9) NOT NULL,

? ? `姓名` varchar(4) NOT NULL,

? ? `性別` enum('男','女') NOT NULL,

? ? `手機號` char(11) DEFAULT '',

? ? `通信地址` varchar(64) DEFAULT NULL,

? ? PRIMARY KEY (`學號`)

? ? ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

? ? +---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

? ? 1 row in set (0.00 sec)


**** 擴展實驗****


1.修改MySQL服務器使用的默認字符集


1)調整字符集設置:


? ??[root@dbsvr1 ~]# vim /etc/my.cnf ? ? //編輯數據庫住配置文件

? ? [mysqld]

? ? .. ..

? ??character_set_server=utf8 ? ? ? ? ?//設置默認字符集為utf8


2)重啟服務程序:


? ??[root@dbsvr1 ~]# service mysql restart ? ? ?//重啟mysql服務

? ? Shutting down MySQL.. [確定]

? ? Starting MySQL. [確定]


3)確認設置結果:


??? 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 | /usr/share/mysql/charsets/ |

? ? +--------------------------+----------------------------+

? ? 8 rows in set (0.03 sec)


2.MySQL數據類型


1.在home庫里創建famliy表,表結構自定義。


2.定義表時的字段約束、默認值、主鍵設置。


3.練習各種時間函數的使用。

實驗步驟:

1.創建home庫、family表


1)新建home庫,并切換到home庫


? ??mysql> CREATE DATABASE home; ? ? /新建home庫

? ? Query OK, 1 row affected (0.00 sec)

? ??mysql> USE home; ? //切換到home庫

? ? Database changed


2)新建family表


假定family表用來記錄每個家庭成員的姓名(name)、性別(gender)、出生日期(birth)、職業(job)、與戶主關系(relation)。


? ??mysql> CREATE TABLE family( ? ? ? //新建home表

? ? -> name varchar(16) NOT NULL,

? ? -> gender enum('male','femal') DEFAULT 'male',

? ? -> birth date NOT NULL,

? ? -> job varchar(16) DEFAULT '',

? ? -> relation varchar(24) NOT NULL,

? ? -> PRIMARY KEY(name)

? ? -> );

? ? Query OK, 0 rows affected (0.06 sec)


查看family表的字段結構:


? ??mysql> DESC family; ? ? ?//查看family表的結構

? ? +----------+----------------------+------+-----+---------+-------+

? ? | Field | Type | Null | Key | Default | Extra |

? ? +----------+----------------------+------+-----+---------+-------+

? ? | name | varchar(16) | NO | PRI | NULL | |

? ? | gender | enum('male','femal') | YES | | male | |

? ? | birth | date | NO | | NULL | |

? ? | job | varchar(16) | YES | | | |

? ? | relation | varchar(24) | NO | | NULL | |

? ? +----------+----------------------+------+-----+---------+-------+

? ? 5 rows in set (0.00 sec)


2.練習各種時間函數的使用


1)使用now()查看當前的日期和時間


? ??mysql> SELECT now(); ? ? //查看當前時間和日期

? ? +---------------------+

? ? | now() |

? ? +---------------------+

? ? | 2014-01-07 18:33:31 |

? ? +---------------------+

? ? 1 row in set (0.05 sec)


2)使用sysdate()查看系統日期和時間


? ??mysql> SELECT sysdate(); ? ? //查看當前系統日期和時間

? ? +---------------------+

? ? | sysdate() |

? ? +---------------------+

? ? | 2014-01-07 18:34:12 |

? ? +---------------------+

? ? 1 row in set (0.00 sec)


3)使用curdate()獲得當前的日期,不含時間


? ??mysql> SELECT curdate(); //查看當前日期

? ? +------------+

? ? | curdate() |

? ? +------------+

? ? | 2014-01-07 |

? ? +------------+

? ? 1 row in set (0.00 sec)


4)使用curtime()獲得當前的時間,不含日期


? ??mysql> SELECT curtime(); ? ?//查看當前時間

? ? +-----------+

? ? | curtime() |

? ? +-----------+

? ? | 18:35:26 |

? ? +-----------+

? ? 1 row in set (0.00 sec)


5)分別獲取當前日期時間中的年份、月份、日


? ??mysql> SELECT year(now()),month(now()),day(now()); ? ? //查看當前時間:年-月-日

? ? +-------------+--------------+------------+

? ? | year(now()) | month(now()) | day(now()) |

? ? +-------------+--------------+------------+

? ? | 2014 | 1 | 7 |

? ? +-------------+--------------+------------+

? ? 1 row in set (0.00 sec)


6)獲取系統日期時間中的月份、日 ? ? ? ? ? ? ?


? ??mysql> SELECT month(sysdate()),day(sysdate()); //查看系統時間中的月-日信息

? ? +------------------+----------------+

? ? | month(sysdate()) | day(sysdate()) |

? ? +------------------+----------------+

? ? | 1 | 7 |

? ? +------------------+----------------+

? ? 1 row in set (0.00 sec)


7)獲取系統日期時間中的時刻


? ??mysql> SELECT time(sysdate()); ? ? ? //獲取當前系統時間

? ? +-----------------+

? ? | time(sysdate()) |

? ? +-----------------+

? ? | 18:44:01 |

? ? +-----------------+

? ? 1 row in set (0.00 sec)

注:在mysql語句中 ?關鍵字和命令字可以不區分大小寫,但是數據庫名和表名區分大小寫,各字段之間需用“逗號”分隔,以“分號”結尾。;分割sql語句??? \c終止sql語句?? \G換行


轉載于:https://blog.51cto.com/ironfighter/1876187

總結

以上是生活随笔為你收集整理的mysql数据库基本操作练习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。