导入、导出脚本
导入
(1)txt文本
步骤:新建查询 --> ctrl+A --> ctrl+C --> ctrl+V
sql脚本
(1)导入
步骤:右击表 选中 --> 运行SDL文件
(2)导出
表列表 --> 全选 --> 右击 选中 --> 转储SDL文件【不同版本Navicat或者多工具之间转储的SQL脚本存在兼容性的问题】
存储引擎
MySQL的存储引擎种类
MylSAM,InnoDB(mysql默认的存储引擎)
Mysql中的存储引擎(InnoDB,MylSAM)的区别
InnoDB,MylSAM应用场景的区别
MySQL的存储引擎命令与配置
(1)查询引擎命令
可以写一个%或两个%%,一个%就是查询%之前的
(2)mysql中的默认引擎的配置
Mysql的安装目录中的my.ini配置文件
存储引擎实战-指定表的存储引擎
存储引擎的创建指令
DML
数据新增-单条数据
数据新增-多条数据
(1)第一种方式
INSERT INTO t_person(name,pwd,weight,height) VALUES('xx1','12345','123','78');
INSERT INTO t_person(name,pwd,weight,height) VALUES('xx2','12345','123','78');
INSERT INTO t_person(name,pwd,weight,height) VALUES('xx3','12345','123','78');
INSERT INTO t_person(name,pwd,weight,height) VALUES('xx4','12345','123','78');
(2)第二种方式
INSERT INTO t_person(name,pwd,weight,height) VALUES('xx55','12345','123','78'),
('xx66','12345','123','78'),('xx77','12345','123','78');
数据更新
(1)条件是id为100的那条记录,修改它的weight的字段的属性值
(2)条件是id为103的那条记录,修改它的weight,height,name字段的值【顺序随意】
(3)条件为id104,105,106的记录列表,修改对应的weight,height
(4)条件为所有的记录,修改所有记录对应的weight字段的值
数据删除
(1)删除某个id【一般都会写主键的属性,精准定位】
(2)删除大于某个id的所有id
(3)删除小于等于某个id的所有id
(4)删除某个id和某个id之间的id,包含这两个id
(5)删除不在某个(id,id)之中的id
(6)删除在某个(id,id)之中的id
DQL
什么是查询
(1)它是有结果集的【对比增删改 增删改是无结果集的】
(2)sql中的查询结果 是一种虚拟存在的表【不是真实存在数据库中的】
(3)sql中的查询可以通过自定义设置的维度展示【查询一个字段或是多个字段可以人为设置】
查询机制简介
场景:select * from user where id = 010;
(1)当id不是主键的时候,而where子句id作为条件的时候,数据库的查询机制是全表扫描
(2)当id是主键的时候,并且where子句id作为条件的时候,数据库的查询机制是索引机制
查询语法
select<列|函数...>
from 表名
where 条件
order by 条件|字段(两种形式展示:升序asc ---【默认升序】,降序desc) ---> 分组
查询行与列
-- 查询所有的列和所有的行
SELECT * FROM student;
-- 查询所有的列和所有的行
SELECT a.studentNo,a.loginPwd,a.studentName,a.sex,a.gradeId,a.address,a.bornDate,a.email,a.identityCard FROM student AS a;
-- 查询部分行对应的所有列
SELECT * FROM student WHERE studentNo IN (10001,20000);
-- 查询部分行的部分列
SELECT studentNo,sex FROM student WHERE studentNo IN (10001,20000);
查询-列别名
核心要点:给表名或是列名设置别名【as可以省略】
常用函数——聚合函数
-- 求平均值
SELECT AVG(score) FROM t_scores;
-- 求行数(第一种一般不会用,第三种用的最多)
SELECT COUNT(score) FROM t_scores;
SELECT count(*) FROM t_scores;
SELECT COUNT(1) FROM t_scores;
-- 求某张表中某个字段的最大值/最小值
SELECT MAX(score) FROM t_scores;
SELECT MIN(score) FROM t_scores;
-- 求和
SELECT SUM(score) FROM t_scores;
常用函数——字符串函数
-- 字符串连接
SELECT CONCAT('my','father');
-- 字符串替换
SELECT INSERT('这是SQL SERVER数据库',3,10,'Myaql');
-- 字符串大写转小写
SELECT LOWER('MYsql');
-- 字符串小写转大写
SELECT UPPER('mysql');
-- 字符串截取
SELECT SUBSTRING('javamysqloracle',3,5);
常用函数——时间日期函数
-- 获取当前日期
SELECT CURDATE();
-- 获取当前时间
SELECT CURTIME();
-- 获取当前日期和时间(等价于1和2)
SELECT NOW();
-- 获取当前日期处于一年中的第几周
SELECT WEEK(NOW());
-- 获取当前日期的年份
SELECT YEAR(NOW());
-- 获取当前时间的时
SELECT HOUR(NOW());
-- 获取当前时间的分
SELECT MINUTE(NOW());
常用函数——数学函数
-- 向上取整(整数特例)
SELECT CEIL(2.8);
-- 向下取整
SELECT FLOOR(2.9);
-- 随机
SELECT RAND();
ORDER BY子句
-- 升序
SELECT * FROM t_scores ORDER BY score;
SELECT * FROM t_scores ORDER BY score ASC;
-- 降序
SELECT * FROM t_scores ORDER BY score DESC;
LIMIT语法结构
SELECT * FROM student;
-- 获取表中前2条记录
SELECT * FROM student LIMIT 2;
SELECT * FROM student LIMIT 4;
-- 获取表中从0开始2行的记录
SELECT * FROM student LIMIT 0,2;
SELECT * FROM student LIMIT 1,3;
子查询
子查询定义
定义:嵌套在增删改查语句中或者嵌套在其他子查询中是一种语句结构
子查询语法
子查询注意点
(1)将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个
(2)子查询的执行顺序是由内向外执行
子查询案例-问题
-- 查询 student表
SELECT * FROM student;
-- 查询李斯文出生日期时间
SELECT bornDate FROM student WHERE studentName = '李斯文';
-- 1993-07-23 00:00:00
-- 筛选出生日期比李斯文大的学生
SELECT * FROM student WHERE bornDate > '1993-07-23 00:00:00';
-- 使用子查询实现筛选
SELECT * FROM student WHERE bornDate > (SELECT bornDate FROM student WHERE studentName = '李斯文');