Python 学习笔记-第21讲:DML 和 DQL

1. MySQL 的存储引擎

MyISAM、InnoDB、Memory、CSV 等9种

名称

InnoDB

MyISAM

事务处理

支持

不支持

数据行锁定

支持

不支持

外键约束

支持

不支持

全文索引

不支持

支持

表空间大小

较大,约2倍

较小

查看当前默认存储引擎

 

SHOW VARIABLES LIKE ‘storage_engine%’;

 

修改存储引擎

修改my.ini配置文件

default-storage-engine= InnoDB

 

设置表的存储引擎

CREATE TABLE 表名(

#省略代码

)ENGINE=存储引擎;

 

数据表的存储位置

MyISAM类型表文件

*.frm:表结构定义文件

*.MYD:数据文件

*.MYI:索引文件

InnoDB类型表文件

*.frm:表结构定义文件

ibdata1文件

 

存储位置

因操作系统而异,可查my.ini

2. DML 语句

插入单条数据记录

INSERT INTO 表名 [(字段名列表)] VALUES (值列表);

字段名是可选的,如省略则依次插入所有字段

多个列表和多个值之间使用逗号分隔

值列表和字段名列表一一对应

如插入的是表中部分数据,字段名列表必填

示例:

INSERT INTO `student`(`loginPwd`,`studentName`,`gradeId`,`phone`,`bornDate`)

VALUES('123','黄小平',1,'13956799999','1996-5-8');

 

插入多条数据记录

INSERT INTO 新表(字段名列表)

  VALUES(值列表1),(值列表2),……,(值列表n);

注意:为避免表结构发生变化引发的错误,建议插入数据时写明具体字段名!

 

将查询结果插入新表

CREATE TABLE 新表(SELECT 字段1,字段2……  FROM 原表);

示例:

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

 

将查询结果插入现有表

INSERT INTO phoneList SELECT studentName,phone FROM student;

 

更新数据记录

UPDATE 表名

SET 字段1=值1,字段2=值2,…,字段n=值n

[WHERE 条件];

 

示例:

UPDATE student SET sex = ‘女’;

 

UPDATE student SET address = ‘北京女子职业技术学校家政班’

WHERE address = ‘北京女子职业技术学校刺绣班’;

 

删除数据记录

DELETE FROM 表名 [WHERE条件];

TRUNCATE TABLE 表名;

TRUNCATE语句删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比DELETE语句快

示例:

DELETE FROM student WHERE studentName = ‘王宝宝’;

TRUNCATE TABLE student;

1、当你不再需要该表时, 用 drop;

2、当你仍要保留该表,但要删除所有记录时, 用 truncate;

3、当你要删除部分记录时, 用 delete。

 

查询

SELECT    <列名|表达式|函数|常量>

FROM      <表名>

[WHERE    <查询条件表达式>]

[ORDER BY <排序的列名>[ASC或DESC]];

 

示例:

SELECT `studentNo`,`studentName`,`phone`,`address`,`bornDate`

FROM `student`

WHERE `gradeId` = 1

ORDER BY `studentNo`;

查询产生一个虚拟表

看到的是表形式显示的结果,但结果并不真正存储

每次执行查询只是从数据表中提取数据,并按照表的形式显示出来

 

查询全部的行和列

SELECT * FROM `student`;

查询部分列

SELECT `studentNo`,`studentName`,`address`

FROM `student`

WHERE `address`=‘河南新乡’;

 

使用AS命名列

SELECT `studentNo`  AS 学生编号,`studentName` AS 学生姓名,

        `address `AS 学生地址 

FROM `student`

WHERE `address` <> '河南新乡‘;

 

SELECT `firstName` + '.' + `lastName` AS 姓名

FROM `employees`;

注意:

1. + 连接的数据类型必须兼容

2. 如果 + 连接字符型数据,结果为字符串数据的连接

3. 如果 + 连接数值型数据,结果为数值的和

 

查询空行

SELECT `studentName` FROM `student` WHERE `email` IS NULL;

 

使用常量列

SELECT `studentName` AS 姓名,`address` AS 地址,

’北京信息中心’ AS 学校名称

FROM `student`;

select _column,_column from _table [where Clause] [limit N][offset M]
  •  select * : 返回所有记录
  •  limit N : 返回 N 条记录
  •  offset M : 跳过 M 条记录, 默认 M=0, 单独使用似乎不起作用
  •  limit N,M : 相当于 offset N limit M , 从第 N 条记录开始, 返回 M 条记录

 

 

你可能感兴趣的:(Python 学习笔记-第21讲:DML 和 DQL)