mysql資料庫(1)

來源:互聯網
上載者:User

標籤:多線程   select   字串   管理工具   客戶   千萬   string   delete   utf-8   

資料庫資料庫就是一種特殊的檔案,其中儲存著需要的資料.

mysql資料庫檔案位置在 /var/lib/mysql

關係型資料庫核心元素
  • 資料行(記錄)
  • 資料列(欄位)
  • 資料表(資料行的集合)
  • 資料庫(資料表的集合)

類比excel表,一張Excel表檔案相當於一個資料庫,裡面的一個個sheet相當於一張表table.

RDBMS

Relational Database Management System

通過表來表示關係型

  • 當前主要使用兩種類型的資料庫:關係型資料庫、非關係型資料庫,本部分主要討論關係型資料庫,對於非關係型資料庫會在後面學習

  • 所謂的關係型資料庫RDBMS,是建立在關聯式模式基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的資料

  • 查看資料庫排名:https://db-engines.com/en/ranking

  • 關係型資料庫的主要產品:

  • oracle:在以前的大型項目中使用,銀行,電信等項目
  • mysql:web時代使用最廣泛的關係型資料庫
  • ms sql server:在微軟的項目中使用
  • sqlite:輕量級資料庫,主要應用在移動平台

SQL

Structured Query Language

SQL是結構化查詢語言 (SQL),是一種用來操作RDBMS的資料庫語言,當前關係型資料庫都支援使用SQL語言進行操作,也就是說可以通過 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的關係型的資料庫

  • SQL語句主要分為:
    • DQL:資料查詢語言,用於對資料進行查詢,如select
    • DML:資料操作語言,對資料進行增加、修改、刪除,如insert、udpate、delete
    • TPL:交易處理語言,對事務進行處理,包括begin transaction、commit、rollback
    • DCL:資料控制語言,進行授權與許可權回收,如grant、revoke
    • DDL:資料定義語言 (Data Definition Language),進行資料庫、表的管理等,如create、drop
    • CCL:指標控制語言,通過控制指標完成表的操作,如declare cursor
  • 對於web程式員來講,重點是資料的crud(增刪改查),必須熟練編寫DQL、DML,能夠編寫DDL完成資料庫、表的操作,其它語言如TPL、DCL、CCL瞭解即可
  • SQL 是一門特殊的語言,專門用來操作關聯式資料庫
  • 不區分大小寫

例子:

# 建立Connection串連conn = connect(host=‘localhost‘, port=3306, user=‘root‘, password=‘mysql‘, database=‘python1‘, charset=‘utf8‘)# 得Cursor對象cs = conn.cursor()# 更新# sql = ‘update students set name="劉邦" where id=6‘# 刪除# sql = ‘delete from students where id=6‘# 執行select語句,並返回受影響的行數:查詢一條學生資料sql = ‘select id,name from students where id = 7‘# sql = ‘SELECT id,name FROM students WHERE id = 7‘count=cs.execute(sql)# 列印受影響的行數print(count)

MySQL 簡介
  • 點擊查看MySQL官方網站

  • MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB公司開發,後來被Sun公司收購,Sun公司後來又被Oracle公司收購,目前屬於Oracle旗下產品

特點
  • 使用C和C++編寫,並使用了多種編譯器進行測試,保證原始碼的可移植性

  • 支援多種作業系統,如Linux、Windows、AIX、FreeBSD、HP-UX、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris等

  • 為多種程式設計語言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等

  • 支援多線程,充分利用CPU資源

  • 最佳化的SQL查詢演算法,有效地提高查詢速度
  • 提供多語言支援,常見的編碼如GB2312、BIG5、UTF8
  • 提供TCP/IP、ODBC和JDBC等多種資料庫連接途徑
  • 提供用於管理、檢查、最佳化資料庫操作的管理工具
  • 大型的資料庫。可以處理擁有上千萬條記錄的大型資料庫
  • 支援多種儲存引擎
  • MySQL 軟體採用了雙授權政策,它分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇MySQL作為網站資料庫
  • MySQL使用標準的SQL資料語言形式
  • Mysql是可以定製的,採用了GPL協議,你可以修改源碼來開發自己的Mysql系統
  • 線上DDL更改功能
  • 複製全域事務標識
  • 複製無崩潰從機
  • 複製多線程從機
伺服器端安裝
  • 安裝伺服器端:在終端中輸入如下命令,斷行符號後,然後按照提示輸入
sudo apt-get install mysql-server
  • 當前使用的ubuntu鏡像中已經安裝好了mysql伺服器端,無需再安裝,並且設定成了開機自啟動
  • 伺服器用於接收用戶端的請求、執行sql語句、管理資料庫
  • 伺服器端一般以服務方式管理,名稱為mysql
  • 啟動服務
sudo service mysql start
  • 查看進程中是否存在mysql服務
  • ps ajx|grep mysql

停止服務: sudo service mysql stop

重啟服務: sudo service mysql restart

配置: 

  • 設定檔目錄為/etc/mysql/mysql.cnf
  • 進入conf.d目錄,開啟mysql.cnf,發現並沒有配置
  • 進入mysql.conf.d目錄,開啟mysql.cnf,可以看到配置項
  • 主要配置項如下:
  • bind-address表示伺服器綁定的ip,預設為127.0.0.1port表示連接埠,預設為3306datadir表示資料庫目錄,預設為/var/lib/mysqlgeneral_log_file表示普通日誌,預設為/var/log/mysql/mysql.loglog_error表示錯誤記錄檔,預設為/var/log/mysql/error.log

 

用戶端

 

  • 用戶端為開發人員與dba使用,通過socket方式與服務端通訊,常用的有navicat、命令列mysql

 

圖形化介面用戶端navicat

 

  • 可以到Navicat官網下載
  • 將壓縮檔拷貝到ubuntu虛擬機器中,放到案頭上,解壓

 

tar zxvf navicat112_mysql_cs_x64.tar.gz

 

  • 進入解壓的目錄,運行如下命令

 

./start_navicat
  • 點擊兩次“取消”按鈕後,點擊“試用”按鈕後如下.
    • 問題一:中文亂碼

    • 解決:開啟start_navicat檔案

    將export LANG="en_US.UTF-8"改為export LANG="zh_CN.UTF-8"
    • 問題二:試用期
    • 解決:刪除使用者目錄下的.navicat64目錄
    cd ~rm -r .navicat64
    命令列用戶端
    • 在終端運行如下命令,按提示填寫資訊
    sudo apt-get install mysql-client
    • 當前使用的ubuntu鏡像中已經安裝好了mysql用戶端,無需再安裝
    • 詳細串連的命令可以查看協助文檔
    mysql --help
    • 最基本的串連命令如下,輸入後斷行符號
    mysql -u root -pmysql
  • 按ctrl+d或輸入如下命令退出,quit或者exit也可退出
資料完整性
  • 一個資料庫就是一個完整的業務單元,可以包含多張表,資料被儲存在表中
  • 在表中為了更加準確的儲存資料,保證資料的正確有效,可以在建立表的時候,為表添加一些強制性的驗證,包括資料欄位的類型、約束
資料類型
  • 可以通過查看協助文檔查閱所有支援的資料類型
  • 使用資料類型的原則是:夠用就行,盡量使用取值範圍小的,而不用大的,這樣可以更多的節省儲存空間
  • 常用資料類型如下:
    • 整數:int,bit
    • 小數:decimal
    • 字串:varchar,char
    • 日期時間: date, time, datetime
    • 枚舉類型(enum)
  • 特別說明的類型如下:
    • decimal表示浮點數,如decimal(5,2)表示共存5位元,小數佔2位
    • char表示固定長度的字串,如char(3),如果填充‘ab‘時會補一個空格為‘ab ‘
    • varchar表示可變長度的字串,如varchar(3),填充‘ab‘時就會儲存‘ab‘
    • 字串text表示儲存大文本,當字元大於4000時推薦使用
    • 對於圖片、音頻、視頻等檔案,不儲存在資料庫中,而是上傳到某個伺服器上,然後在表中儲存這個檔案的儲存路徑
  • 更全的資料類型可以參考http://blog.csdn.net/anxpp/article/details/51284106
約束
  • 主鍵primary key:物理上儲存的順序
  • 非空not null:此欄位不允許填寫空值
  • 惟一unique:此欄位的值不允許重複
  • 預設default:當不填寫此值時會使用預設值,如果填寫時以填寫為準
  • 外鍵foreign key:對關係欄位進行約束,當為關係欄位填寫值時,會到關聯的表中查詢此值是否存在,如果存在則填寫成功,如果不存在則填寫失敗並拋出異常
  • 說明:雖然外鍵約束可以保證資料的有效性,但是在進行資料的crud(增加、修改、刪除、查詢)時,都會降低資料庫的效能,所以不推薦使用,那麼資料的有效性怎麼保證呢?答:可以在邏輯層進行控制

 

 

 

mysql資料庫(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.