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')  #算两个时间的距离


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