<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          四十四、Mysql的命令和PyMysql

          共 4339字,需瀏覽 9分鐘

           ·

          2020-11-30 13:29


          「@Author:Runsen」

          MySQL

          MySQL是一個「關(guān)系型」數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,

          在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件。MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。

          MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。

          MySql安裝

          安裝和配置

          下面(以CentOS Linux環(huán)境為例)。

          Linux下有一個MySQL的分支版本,名為MariaDB,它由MySQL的一些原始開發(fā)者開發(fā),有商業(yè)支持,旨在繼續(xù)保持MySQL數(shù)據(jù)庫在GNU GPL下開源(因?yàn)榇蠹覔?dān)心MySQL被甲骨文收購后會不再開源)。

          如果決定要直接使用MariaDB作為MySQL的替代品,可以使用下面的命令進(jìn)行安裝。

          yum?install?mariadb?mariadb-server

          如果要安裝官方版本的MySQL,可以在MySQL官方網(wǎng)站下載安裝文件。首先在下載頁面中選擇平臺和版本,然后找到對應(yīng)的下載鏈接。下面以MySQL 5.7.26版本和Red Hat Enterprise Linux為例,直接下載包含所有安裝文件的歸檔文件,解歸檔之后通過包管理工具進(jìn)行安裝。

          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

          如果系統(tǒng)上有MariaDB相關(guān)的文件,需要先移除MariaDB相關(guān)的文件。

          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

          可以使用下面的命令查看已經(jīng)安裝的MySQL相關(guān)的包。

          rpm?-qa?|?grep?mysql

          啟動MySQL服務(wù)

          先修改MySQL的配置文件(/etc/my.cnf)添加一行skip-grant-tables,可以設(shè)置不進(jìn)行身份驗(yàn)證即可連接MySQL服務(wù)器,然后就可以以超級管理員(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客戶端工具連接服務(wù)器。

          命令行工具:

          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去掉,然后重啟服務(wù)器,重新登錄。這一次需要提供用戶名和口令才能連接MySQL服務(wù)器。

          systemctl?restart?mysqld
          mysql?-u?root?-p

          也可以選擇圖形化的客戶端工具來連接MySQL服務(wù)器,可以選擇下列工具之一:

          • MySQL Workbench(官方提供的工具)
          • Navicat for MySQL(界面簡單優(yōu)雅,功能直觀強(qiáng)大)
          • SQLyog for MySQL(強(qiáng)大的MySQL數(shù)據(jù)庫管理員工具)

          MySQLl命令

          MySQL進(jìn)入與退出

          • mysql –uusername -ppassword (進(jìn)入)
          • exit ?(退出)

          庫級操作語句

          • 顯示所有的庫:show databases;
          • 創(chuàng)建庫:create database [if not exists] db_name;
          • 刪除庫:drop database [if exists] db_name;
          • 進(jìn)入數(shù)據(jù)庫:use db_name;

          表級操作語句

          • 顯示所有的表:show tables;
          • 創(chuàng)建表:create table [if not exists] ?tb_name (create definition…);
          • 顯示創(chuàng)建表的信息:show create table tb_name;
          • 刪除表:drop table tb_name;
          • 注意:語句結(jié)束符:「每個語句都以 ; 或者 \G 結(jié)束」

          插入數(shù)據(jù)

          • 全字段插入:INSERT INTO tb_name VALUE (all_values); 一般只用這種

          查詢數(shù)據(jù)

          • SELECT field_names FROM tb_name;
          • SELECT * FROM tb_name;
          • SELECT field_names FROM tb_name WHERE conditions;

          修改數(shù)據(jù)

          • 修改所有數(shù)據(jù):UPDATE ?tb_name ?SET field_1=value_1 ;
          • 修改多個:UPDATE ?tb_name ?SET field_1=value_1, field_2=value_2 …;
          • 修改滿足條件的數(shù)據(jù):UPDATE ?tb_name ?SET field_1=value_1 ?WHERE ?conditions;

          刪除數(shù)據(jù)

          • 刪除表中所有數(shù)據(jù):DELETE ?FROM ?tb_name;
          • 刪除表中滿足條件的數(shù)據(jù):DELETE ?FROM ?tb_name ?WHERE ?conditions;

          數(shù)值類型

          字符類

          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:
          ????#?創(chuàng)建數(shù)據(jù)庫
          ????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)

          ????#?創(chuàng)建表
          ????TABLE_NAME?=?'user'
          ????cursor.execute('CREATE?TABLE?%s(id?int?primary?key,name?varchar(30))'?%?TABLE_NAME)

          ????#?批量插入紀(jì)錄
          ????values?=?[]
          ????for?i?in?range(20):
          ????????values.append((i,?'kk'?+?str(i)))
          ????cursor.executemany('INSERT?INTO?user?values(%s,%s)',?values)

          ????#?查詢數(shù)據(jù)條目
          ????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()
          ????#?發(fā)生錯誤時會滾
          ????conn.rollback()
          finally:
          ????#?關(guān)閉游標(biāo)連接
          ????cursor.close()
          ????#?關(guān)閉數(shù)據(jù)庫連接
          ????conn.close()

          ?

          本文已收錄 GitHub,傳送門~[1] ,里面更有大廠面試完整考點(diǎn),歡迎 Star。

          ?


          Reference

          [1]

          傳送門~: https://github.com/MaoliRUNsen/runsenlearnpy100


          更多的文章

          點(diǎn)擊下面小程序



          - END -


          瀏覽 60
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩精品一二三区 | 一道本在线无码 | 先锋成人电影 | 亚洲精品成人片在线播放波多野吉 | 免费无码一区二区三区四区五区 |