Mysql數據庫知識點總結


  • 一、基本概念
    • 1、數據庫服務器
      • 我們可以理解為數據庫服務器即是一台內存較高的計算機,可以在上面運行數據庫管理軟件
    • 2、數據庫管理系統
      • 如Mysql,是一個軟件,用來管理數據庫的軟件
    • 3、數據庫
      • 即文件夾,用來組織文件
    • 4、表
      • 即文件,用來存放多條記錄,每條記錄為多個字段組成的一行數據
  • 二、Mysql基本介紹
    • Mysql是目前WEB應用最好的RDBMS(Relation Database Mangement System)關系數據庫管理系統之一
      • 關系型數據庫是將數據保存到不同的表里面,而不是將數據放到一個大倉庫內
      • 關系型數據庫與非關系型數據庫的區別是:關系型數據庫有表結構,非關系型數據庫是通過key-value存儲,無表結構
      • Mysql使用的是標准的SQL數據語言形式,支持多種語言,支持5000萬條的數據倉庫,32位系統表文件最大支持4GB,64位系統最大支持表文件為8TB
      • 通俗的講:Mysql就是一個基於socket編寫的C/S架構的軟件
      • 儲存引擎
        • mysql默認的查詢引擎為innodb,可以自行進行更改
      • 語法:
        • win:
          • 啟動mysql服務端,在cmd窗口運行mysqld
          • 數據庫初始化命令:mysql-initialize-insecure
          • 啟動mysql客戶端,並連接服務端mysql -uroot -p
          • 連接其他ip數據庫,mysql -u賬號 -hIP地址 -P端口號 -p密碼
          • 查看當前登陸用戶:select user( )
          • 刷新權限,執行命令:flush privileges;
          • 查看進程:tasklist | findstr mysql
          • 殺死進程:tasklist /F /PID 進程號
        • mac:
          • 設置新密碼:set password for '用戶名'@'IP地址'=password('');
          • 查看系統進程:ps -A
          • 殺死系統進程:sudo kill -9 PID
        • 操作文件夾(庫):
          • 增加一個庫:create database db1 charset utf8;
          • 查看所有庫: show databases;
          • 查看特定庫: show create database db1;
          • 刪庫跑路: drop database db1;
        • 操作文件(表):
          • 切換進數據庫:use db1;
          • 查看當前所在文件夾;select database( );
          • 增加表:create table t1(id int,name char(6));
          • 查看特定表:show create table t1;
          • 查看所有表:show tables;或者desc t1;
          • 改:
            • alter table t1 modify name char(10);name字段改為10字節;
            • alter table t1 modify name NAME char(10);name字段名改成NAME
          • 復制表
            • 即復制表數據也復制表結構:create table t1 select * from db1.t1;
            • 只復制表結構create table a1 like db1.t1;
          • 清空表
            • delete from t1;但是這種方法會保留自增的ID
            • truncate table t1;這種方法不會保留自增ID
        • 操作文件內容
          • 增加內容:insert into (id,name) values(1,'aa'),(2,'bb'),(3,'cc');
          • 查看內容:select * from db1.t1;
          • 刪除內容:delete from t1 where id =1;
          • 查看用戶權限:select * from mysql.user where user='root'\G;
  • 三、SQL數據類型
    • SQL之中沒有bool值,tinyint[1]表示true;tinyint[0]表示fasle.
    • int數據類型后面存儲的是顯示寬度,而不是存儲寬度,其他的數據類型則表示的是存儲寬度
    • now()sql中的內置函數,根據數據類型生成相對應的時間模式
    • char( )定長字符串,存儲速度快,但是浪費空間
    • varchar( )變長字符串,存儲速度慢,可是節省空間
    • enum() 表示枚舉 多選一
    • set( )表示集合 多選多
  • 四、約束:作用是保證數據的完整性和一致性
    • not null 表示該字段數據不能為空
    • default 表示該字段的默認值
    • unique 唯一(列唯一,組合唯一)
    • primary key 主鍵 一張列表中只允許出現一個主鍵(not null + unique)
    • auto-increment 自增長
  • 五、查詢:
    • 單表查詢的關鍵字執行順序
      • from 說明是來自那一張表
      • where 條件 后面可以跟比較運算符 between and in(. ). like(%表示任意字符 _表示一個字符)邏輯運算符 
      • group by 以某個字段的值進行分組,發生在where之后,查看組類信息依賴於聚合函數max min avg sum count
      • having 過濾,在group by 后面的條件篩選
      • order by 排序 asc升序 desc降序
      • limite 限制查詢 記錄數 limte a, b. a表示從第a個開始,b表示查詢b條
    • 多表連接查詢
      • 語法:select 字段 from t1 inner/left/right join t2 on t1.字段=t2.字段;
        • inner 表示只顯示連接匹配的行
        • left:優先顯示左表的全部記錄
        • right:優先顯示右表的全部記錄
      • 子查詢中的關鍵字
        • in/not in:查詢的結果是否在子表中
        • 運算符:= < > !=
        • exits:表示存在,使用此關鍵字時,內層查詢語句不返回查詢的記錄,而是返回一個布爾值,當此布爾值為真時外層語句進查詢,反之不進行查詢
  • 六、pymysql簡單使用
    • 連接:conn=pymysql.connect(host='IP',port=端口號,user='root',password='',db=db1,charset='utf8')
    • 創建游標:cursor=conn.cursor( )
    • 寫sql語句:sql=‘’
    • 執行sql語句,返回在數據庫中查詢成功的記錄行數,result=cursor.execute(sql);在result中可以進行字符的拼接,execute(sql,[user,pwd]),即execute注入,防治惡意語法
    • 使用mysql模塊進行增刪改操作時需使用commit( )方法進行提交,否則數據庫更改不生效;conn.commit( )
    • 查詢操作:fetchone( )獲取下一行數據,從第一行開始;fetchall( )獲取所有行數據,;fetchany(n),獲取n行數據
    • 查詢操作默認返回的是元組,使用如下語句獲取游標,改變cursor屬性,會返回字典:cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    • 移動指針:
      • cursor.scroll(1,mode='relative')相對定位,相對當前位置向下移動
      • cursor.scroll(1,mode='abusolute'絕對定位,相對左上角向下移動
    • 關閉連接,游標和連接都需要關閉:cursor.close( ). conn.close( )
  • 七、索引
    • 索引的作用:約束和加速查找
      • 無索引的時候一般會 從前至后一條條查找
      • 有索引的時候:創建索引的本質就是創造額外的文件,查詢時先去額外的文件找,定好位置,再去原始表直接查詢,提高查詢速度,但是增刪改的速度依然慢,創建索引后必須命中索引才有效
    • 索引的分類
      • 1、普通索引:加速查詢
        • 加入索引:create index 索引名 on 表名(列名)
        • 刪除索引: drop index 索引名 on 表名
        • 查看索引:show index from 表名
      • 2、唯一索引:加速查找和唯一約束(可含null)
        • 加入索引:create unique index 索引名 on 表名(列名)
        • 刪除:drop index 索引名 on 表名
      • 3、主鍵索引
        • 加入索引:alter table 表名 add primary key(列名)
        • 刪除索引:alter table 表名 drop primary key(列名)和alter table 表名 modify 列名 int,drop primary key
      • 4、組合索引:將多個列組合成一個索引
        • 創建組合索引:create iindex 索引名 on 表名(列1,列2)
        • 在使用組合索引時,若組合索引為(name,email),單獨索引email時不走索引,這稱為最左前綴匹配原則,最左匹配原則中,mysql會一直向右匹配知道遇到(< > between like)這一類的范圍查詢時停止
      • explain + sql查詢語句,用於查詢sql執行信息參數
      • 在使用關鍵字‘like’查詢時:like ‘n%’ 走索引;但是like ‘%n%’不走索引,即有且僅只有后面帶上%時走索引
      • 使用函數時索引不生效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM