你應該知道的MySQL的命令和PyMySQL
MySQL
MySQL是一個「關系型」數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一。
在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件。MySQL是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。
MySql安裝
安裝和配置
下面(以CentOS Linux環境為例)。
Linux下有一個MySQL的分支版本,名為MariaDB,它由MySQL的一些原始開發者開發,有商業支持,旨在繼續保持MySQL數據庫在GNU GPL下開源(因為大家擔心MySQL被甲骨文收購后會不再開源)。
如果決定要直接使用MariaDB作為MySQL的替代品,可以使用下面的命令進行安裝。
- yum install mariadb mariadb-server
如果要安裝官方版本的MySQL,可以在MySQL官方網站下載安裝文件。首先在下載頁面中選擇平臺和版本,然后找到對應的下載鏈接。下面以MySQL 5.7.26版本和Red Hat Enterprise Linux為例,直接下載包含所有安裝文件的歸檔文件,解歸檔之后通過包管理工具進行安裝。
- wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
- tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
如果系統上有MariaDB相關的文件,需要先移除MariaDB相關的文件。
- yum list installed | grep mariadb | awk '{print $1}' | xargs yum erase -y
接下來可以按照如下所示的順序用RPM(Redhat Package Manager)工具安裝MySQL。
- rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
- rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
- rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
- rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
可以使用下面的命令查看已經安裝的MySQL相關的包。
- rpm -qa | grep mysql
啟動MySQL服務
先修改MySQL的配置文件(/etc/my.cnf)添加一行skip-grant-tables,可以設置不進行身份驗證即可連接MySQL服務器,然后就可以以超級管理員(root)身份登錄。
- vim /etc/my.cnf
- [mysqld]
- skip-grant-tables
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- symbolic-links=0
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
接下來可以使用下面的命令來啟動MySQL。
- service mysqld start
在CentOS 7中建議使用下面的命令來啟動MySQL。
- systemctl start mysqld
使用MySQL客戶端工具連接服務器。
命令行工具:
- mysql -u root
修改超級管理員(root)的訪問口令為i_LOVE_macos_123。
- use mysql;
- update user set authentication_string=password('i_LOVE_macos_123') where user='root';
- flush privileges;
將MySQL配置文件中的skip-grant-tables去掉,然后重啟服務器,重新登錄。這一次需要提供用戶名和口令才能連接MySQL服務器。
- systemctl restart mysqld
- mysql -u root -p
也可以選擇圖形化的客戶端工具來連接MySQL服務器,可以選擇下列工具之一:
- MySQL Workbench(官方提供的工具)
- Navicat for MySQL(界面簡單優雅,功能直觀強大)
- SQLyog for MySQL(強大的MySQL數據庫管理員工具)
MySQLl命令
MySQL進入與退出
mysql –uusername -ppassword (進入)
exit (退出)

庫級操作語句
- 顯示所有的庫:show databases;
- 創建庫:create database [if not exists] db_name;
- 刪除庫:drop database [if exists] db_name;
- 進入數據庫:use db_name;

表級操作語句
- 顯示所有的表:show tables;
- 創建表:create table [if not exists] tb_name (create definition…);
- 顯示創建表的信息:show create table tb_name;
- 刪除表:drop table tb_name;

注意:語句結束符:「每個語句都以 ; 或者 \G 結束」
插入數據
全字段插入:INSERT INTO tb_name VALUE (all_values); 一般只用這種
查詢數據
- SELECT field_names FROM tb_name;
- SELECT * FROM tb_name;
- SELECT field_names FROM tb_name WHERE conditions;

修改數據
- 修改所有數據:UPDATE tb_name SET field_1=value_1 ;
- 修改多個:UPDATE tb_name SET field_1=value_1, field_2=value_2 …;
- 修改滿足條件的數據:UPDATE tb_name SET field_1=value_1 WHERE conditions;

刪除數據
- 刪除表中所有數據:DELETE FROM tb_name;
- 刪除表中滿足條件的數據:DELETE FROM tb_name WHERE conditions;
數值類型

字符類

Python連接Mysql
Python連接Mysql,用的是pymysql
- import pymysql
- config = {
- 'host': '127.0.0.1',
- 'port': 3306,
- 'user': 'root',
- 'passwd': '',
- 'charset': 'utf8',
- 'cursorclass': pymysql.cursors.DictCursor
- }
- conn = pymysql.connect(**config)
- conn.autocommit(1)
- cursor = conn.cursor()
- try:
- # 創建數據庫
- DB_NAME = 'test'
- cursor.execute('DROP DATABASE IF EXISTS %s' % DB_NAME)
- cursor.execute('CREATE DATABASE IF NOT EXISTS %s' % DB_NAME)
- conn.select_db(DB_NAME)
- # 創建表
- TABLE_NAME = 'user'
- cursor.execute('CREATE TABLE %s(id int primary key,name varchar(30))' % TABLE_NAME)
- # 批量插入紀錄
- values = []
- for i in range(20):
- values.append((i, 'kk' + str(i)))
- cursor.executemany('INSERT INTO user values(%s,%s)', values)
- # 查詢數據條目
- count = cursor.execute('SELECT * FROM %s' % TABLE_NAME)
- print('total records:', cursor.rowcount)
- # 獲取表名信息
- desc = cursor.description
- print("%s %3s" % (desc[0][0], desc[1][0]))
- cursor.scroll(10, mode='absolute')
- results = cursor.fetchall()
- for result in results:
- print(result)
- except:
- import traceback
- traceback.print_exc()
- # 發生錯誤時會滾
- conn.rollback()
- finally:
- # 關閉游標連接
- cursor.close()
- # 關閉數據庫連接
- conn.close()
【編輯推薦】