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命名列:
FROM `student`
WHERE `address` <> ' 北京海淀区 ' ;