MySQL: DML和DQL
DML:数据操作语言(增删改)
DQL:数据查询语言
储存引擎的类型:
MyISAM,InnoDB, Memory,CSV等9种
MyISAM与InnoDB类型主要区别
名称 | InnoDB | MyISAM |
事务处理 | 支持 | 不支持 |
数据行锁定 | 支持 | 不支持 |
外键约束 | 支持 | 不支持 |
全文索引 | 不支持 | 支持 |
表空间大小 | 较大,约2倍 | 较小 |
使用InnoDB:多删除,更新操作,安全性高,事务处理及并发控制
查看当前默认储存引擎:
SHOW VARIABLES LIKE 'storage_engine';
MyISAM类型表文件
.frm:表结构定义文件
.MYD:数据文件
.MYI:索引文件
InnoDB类型表文件
.frm:表结构定义文件
ibdata1文件
插入单条数据记录:
INSERT INTO class3(`name`,`age`)
VALUES('李四','19'); 值之类都使用单引号
插入多条记录:
insert into class3(`name`,`age`)
values('李五','19'),('李六','20');
将查询结果插入新表:
CREATE TABLE 新表(SELECT字段1,字段2.....FROM原表);
更新数据记录:
UODATE表名
SET字段1=值1,字段2=值2,...,字段n=值n
[WHERE条件]; 如果没有where条件将表示所有
举例:UPDATE class3
SET age=age+1,`name`='陈独秀'
WHERE `name`='李五';
删除数据记录:
DELETE FROM 表名[WHERE条件];
TRUNCATE TABLE 表名;
TRUNCATE语句删除后将重置自增列,表结构及其字段,约束,索引保持不变,执行速度比DELETE语句快
举例:
DELETE FROM class3
WHERE age<20;
查询:
查询产生是一个虚拟表,看到的是表形式显示的结果,但结果并不真正储存,每次执行查询只是从数据表中提取数据,并按照表的形式显示出来
SELECT <列名|表达式|函数|常量>
FROM <表名>
[WHERE<查询条件表达式>]
[ORDER BY <排序的列名>[ASC或DESC]];默认ASC升序
使用AS命名列
SELECT `studentNo` AS 学生编号,`studentName` AS 学生姓名
FROM `student`
WHERE `address`<>’渭南’;
查询空行:
SELECT `studentNo` FROM `student` WHERE `email`IS NULL;
使用常量列
SELECT `studentNo` AS 学生编号,’北大青鸟’ AS 学校名称
FROM `student`;
常用函数--聚合函数
函数名 | 作用 |
AVG() | 返回某字段的平均值 |
COUNT() | 返回某字段的行数 |
MAX() | 返回某字段的最大值 |
MIN() | 返回某字段的最小值 |
SUM() | 返回某字段的和 |
SELECT AVG(age),MAX(age),MIN(age),COUNT(studentNo)
FROM `student`;
常用函数--字符串函数
函数名 | 作用 | 举例 |
CONCAT(str1...strn) | 字符串连接 | SELECT CONAT(‘My’,’S’,’QL’); 返回:MySQL |
INSERT(str,pos,len,newstr) | 字符串替换 | SELECT CONCAT(’这是SQL Server数据库’,3,10,’MySQL’); 返回:这是MySQL数据库 |
LOWER(str) | 将字符串转换为小写 | SELECT LOWER(’MySQL’); 返回:mysql |
UPPER(str) | 将字符串转换为大写 | SELECT UPPER(’MySQL’); 返回:MYSQL |
SUBSTRING(str,num,len) | 字符串截取 | SELECT SUBSTRING(’JavaMySQLOracle’,5,5); 返回:MySQL |
函数名 | 作用 |
CURDATE() | 获取当前日期 |
CURTIME() | 获取当前时间 |
NOW() | 获取当前日期和时间 |
WEEK(date) | 返回日期date为一年中的第几周 |
YEAR(date) | 返回日期date的年份 |
HOUR(time) | 返回时间time的小时值 |
MINUTE(time) | 返回时间time的分钟值 |
DATEDIFF(date1,date2) | 返回日期参数date1和date2之间相隔的天数 |
ADDDATE(date,n) | 计算日期参数date加上n天后的日期 |
函数名 | 作用 |
GEIL(x) | 返回大于或等于值x的最小整数 |
FLOOR(x) | 返回值小于或等于数值x的最大整数 |
RAND() | 返回0~1之间的随机数 |
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') #算两个时间的距离