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]