Python sql

Mysql 的存儲引擎

存儲引擎的類型

MySam  、innodb  memory csv 等9中

Myisam與innodb類型主要區別

 

名稱       innodb    myisam

事物處理     支持       不支持

數據行鎖定   支持       不支持

外鍵約束     支持       不支持

全文索引     不支持     支持

表空間大小   較大約2倍 較小

 

  偏向於      增刪改      查

My Sam 類型表文件

.frm表結構定義文件

Ibdata1文件(數據庫存數據的文件)不能刪除

.frm表結構定義文件

語法

Insert init

更新數據記錄

Update表明

Set字段t=1,字段2=值2      字段n=值 n

Where條件

刪除數據記錄

Delete from 標名 wherse條件

Truncate table 表名

Truncate語句刪除後依次遞增。

查詢

Select from  表名

客戶端程序  查詢請求  查詢結果集     數據庫服務器

Select* from*  星代表查詢所有

查詢全部的行和列

Select * from*  student;

字段(as,別名   )    表名    

Where  條件(is null,is  not null,<>)

Group by 字段1, 字段2(按照兩個字端的組合排序)

Brder by  字段1   字段 2(先按照第一個字段進行排序,如果有相同的值,在按照第二個字段排序)

Init 開始索引 顯示幾條几錄

模糊查詢:(只能在字符串中查詢)

Select phone from student wherestudentname like’%王%’

 

什麼是子查詢

子查詢是一個嵌套select、insert、update或delete語句或其他子查詢中查詢。

有關DML語句的一系列操作了

      (1)插入單條數據記錄語法:

                       INSERT INTO  表名(字段列表名)

                       VALUES (值列表)

我們需要注意的是,值列表跟字段名列表必須一一對應!多個列表和多個值之間使用逗號隔開

如果插入的是表中部分數據,字段名列表必須填寫!

我們來看一下具體的例子,操作還是挺簡單的:

           INSERT INTO `student`(`studentNo`,`studentName`,`phone`,`bornDate`)
           VALUES('01','張三',1,'13929220222','1999-11-8') ;

      (2)插入多條數據記錄語法:

                         INSERT INTO 新的表名(字段名列表)
                         VALUES (值列表1),(值列表2),……,(值列表n) ;

我們也寫個例子,方便理解:

              INSERT INTO `subject`(`subjectName`,`classHour`,`gradeID`)
              VALUES('Logic Java',220,1),('HTML',160,1),('Java OOP',230,2);

特別要注意的是:爲了避免結構化發生變化,導致錯誤發生,建議大家最好在插入數據時寫明具體字段名!!

將查詢到的結果插入到一個新的表中,舉個例子

      CREATE TABLE `phoneList`(
         SELECT `studentName`,`phone`
      FROM `student`) ;

當然了,這是新表不存在的情況;存在的話,就會報錯!而且不能重複創建


數據的更新

先來看一看語法結構:

        UPDATE 表名 
        SET 字段1=值1,字段2=值2,…,字段n=值n 
        WHERE 後面跟的是條件 ;
咱們來看一下實例,很簡單  (首先這個存在吧,才能去更新;還有更新的字段原先表中得有

           CREATE TABLE `student`(
          `age`INT(4) NOT NULL COMMENT'年齡',
          `name`VARCHAR(50)NOT NULL COMMENT'姓名',
          `address`VARCHAR(255)DEFAULT'北京海淀區航天橋'
        );
        UPDATE `student` SET `address`= '航天橋'
        WHERE `address`= '北京海淀區航天橋' ;

有更新數據就有刪除數據,這兒有兩種方法可以執行操作:

        a)  DELETE  FROM  表名   WHERE +條件 ;

        b)  TRUNCATE  TABLE  表名 ;     (執行速度比上面的快)     

        用法:DELETE FROM student WHERE studentName = ‘王大’;
                  TRUNCATE TABLE student;

 查詢語法:

       a) 有關排序的       SELECT    <可填的內容:列名|表達式|函數|常量> 
                                   FROM        表名
                                   WHERE   + 查詢條件表達式
                                   ORDER BY  排序的列名  [ASC或DESC];          
DESC指的從高到低排序,不寫就默認是正序

       例子:   SELECT `studentNo`,`studentName`,`phone`,`address`,`bornDate` 
                              FROM `student`
                              WHERE `gradeId` = 1
                              ORDER BY `studentNo` ;
      

          b) 列別名,用AS命名列:

                 SELECT `studentNo`  AS  學生編號,`studentName` AS  學生姓名,`address ` AS  學生地址  
                 FROM `student`
                 WHERE `address` <> ' 北京海淀區 ' ;


常用函數----聚合函數
         
                 AVG( )         ---------------     返回某字段平均值 
                 COUNT( )    ---------------     返回...........行數
                 MAX( )         ---------------     返回最大值
                 MIN ( )         ---------------     返回最小值
                 SUM( )         ---------------     返回某字段和


         示例:        SELECT AVG(age),MAX(age) FROM student
                            
                           SELECT CONCAT('my','s','q','l')      #結果是連接成 mysql
                           SELECT UPPER('mysql')                  #改成大寫
                           SELECT CURDATE()                        #獲取當前日期
                           SELECT DATEDIFF('2018-1-29','2018-2-1')  #算兩個時間的距離


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章