一、M y s q l 对 数 据 的 增 删
1.DML语句:
数据删除:关键字DELETE,主要功能是 删除 数据库表中已有的记录。可以依照条件去做修改。
数据增加:关键字INSERT,主要功能是 给数据库表增加记录。
数据修改:关键字是UPDATE,主要功能是 修改数据库表中已有的记录。可以根据条件去做修改。
2.数据的增加
2.1增加数据(INSERT语句)
语法:
INSERT INTO `表名` [(`字段1`,`字段2`,...`字段n`)] VALUES/VALUE ('值1','值2',...'值n')[,('值1','值2',...'值n')...];
其中:
- “[]” 包含的内容可以省略;
- 字段或值之间用英文逗号隔开;
- 可同时插入多条数据,values 后用英文逗号隔开;
- values和value的方式均可
2.2.增加数据(INSERT INTO SELECT )
INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。 目标表中任何已存在的行都不会受影响。
语法:
INSERT INTO table2
(column_name,...)
SELECT column_name,...
FROM table1;
其中:
- table2 必须存在,将table1中数据赋值到table2中
如果要新建表并赋值表内容:create table 新表 select * from 原始表;
3.修改数据(UPDATE语句)
语法:
UPDATE 表名 SET `字段名1` = '值1' [ , `字段名2` = '值2', …. ] [ WHERE 条件];
其中:
- “[]” 包含的内容可以省略;
- `字段名`为要更改数据的字段,'值'表示字段改后的值,注意字段和值的对应;
- 可同时修改多个字段,多个字段后用英文逗号隔开;
- “WHERE”是where子句,可以给修改增加条件;
- 条件:为筛选条件,如不指定则修改该表的所有列数据。
3.1 WHERE子句
有条件的从数据库表中获取记录,通常同在修改,删除,和查询语句的时候,协助该类语句从条件中获取 记录。针对修改和删除语句,如果没有条件,则全部修改和全部删除。
4.删除数据(DELETE语句)
语法:
DELETE FROM 表名 [ WHERE 条件];
其中:
- “[]” 包含的内容可以省略;
- “WHERE”可以通过where子句增加删除的条件。
6. 删除数据(TRUNCATE语句)
语法:
TRUNCATE [TABLE] 表名
其中:
- TRUNCATE是一个特殊的删除语句,又叫做清空语句;
- “[]”包含的内容可以省略;
- 功能:清空某一张表内的全部数据,重置自增计数器;
- 特点:由于没有条件约束,所以速度快,而且效率高。
7. 计算列(MySql8 新特性)
什么叫计算列呢?简单来说就是某一列的值是通过别的列计算得来的。例如,a列值为1、 b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。
在MySQL 8.0中,CREATE TABLE和ALTER TABLE中都支持增加计算列。下面以CREATE TABLE为例进行说明。
举例:定义数据表tb1,然后定义字段id.字段a、字段b和字段c, 其中字段c为计算列,用于计算a+b的值。
二、数 据 的 备 份 和 还 原
1.MySQL数据库恢复的方法
方法一:使用工具
- 先建库
- 在新建的库右键 【运行SQL文件】
方法二:备份
- 在已有的库右键 【转储SQL文件】
方法三:控制台恢复
在控制台输入如下指令:
mysql –h localhost -P 3306 –u root –p dbname < /path/db_name.sql;
其中:
- “dbname”表示需要恢复的数据库,
- “/path/db_name.sql”表示所恢复数据库的备份文件绝对路径
2.MySQL数据库备份的方法
方法1:控制台备份
控制台备份时,依赖的是MySQL自带的备份工具mysqldump,该工具的功能是转储数据 库,将数据转移到另一个SQL数据库,当然并不局限于MySQL数据库。 在控制台输入如下命令:
mysqldump -h localhost –P 3306 –u root –p dbname > /path/db_name.sql
其中:
- “dbname”表示需要备份的数据库,
- “/path/db_name.sql”表示将备份的数据库保存的绝对路径。
数据库备份和恢复的作用和价值主要体现在以下几个方面:
- ①高可用性:使数据库的失效次数减到最少,从而使数据库保持 最大的可用性。
- ②安全性:计算机病毒型、特洛伊木 马型、“黑客”入侵型、 逻辑炸弹型等会造成信息 丢失, 丢失的数据需要及 时恢复。
- ③完整性:当数据库失效后,确保尽 量少的数据丢失或根本不 丢失,从而使数据具有最 大的完 整性。
三、单表查询
1. DQL语言
DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句 中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多表联查。
单表查询:针对数据库中的一张数据表进行查询,可以通过各 种查询条件和方式去做相关的优化。
多表联查:针对数据库中两张或者两张以上的表同时进行查询, 依赖的手段有复杂查询和嵌套查询。
查询语句语法规则(很重要)
SELECT [DISTINCT]
{*|表1.*|[ 表1.字段1 [as 字段别名1]
[, 表1.字段2[as 字段别名2]][, …]]}
FROM 表1 [ as 表别名 ]
[ left|right|inner join 表2 on 表之间 的关系 ]
[ WHERE ]
[ GROUP BY ]
[ HAVING] [ ORDER BY]
[ LIMIT {[ 位置偏移量,] 行数 }] ;
其中:
- “[ ]”包含的内容可以省略;
- “{ }”包含的内容必须存在;
DISTINCT | 设定DISTINCT可以去掉重复记录。 |
AS | 表名或者字段名过长时,可以用AS关键字起别名,方便操作。 |
GROUP BY | 按组分类显示查询出的数据。 |
HAVING GROUP BY | 分组时依赖的分组条件。 |
ORDER BY | 将查询出来的结果集按照一定顺序排序完成。 |
LIMIT | 限制显示查询结果的条数。 |
2.指定字段列
语法:
SELECT * | 字段名1, 字段名2... FROM 表名
其中:
- “*”表示所查询的数据库表的全部字段。
3. 表别名和字段别名
语法:
SELECT 表别名.字段名1 AS 字段别名1, 表别名.字段名2 AS 字段别名2 FROM 表名 AS 表别名
其中:
- “.” 当前表存在的字段;
- “AS”可忽略不写,“AS”的功能如下:
①给字段取一个新别名;
②给表取一个新别名;
③把经计算或总结的结果用另外一个新名称来代替。
4.DISTINCT
语法:
SELECT DISTINCT 字段名1, 字段名2... FROM 表名
其中:
- 去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同), 只返回一条。
5. WHERE条件子句
语法:
SELECT * FROM 表名 [ WHERE 条件];
其中:
- WHERE条件子句不是必须的;
- WHERE子句,可以给查询增加条件;
- 条件:为筛选条件,如不指定则修改该表的所有数据。
6.LIKE 关键字
语法:
SELECT * FROM 表名 WHERE 字段 LIKE 条件;
其中:
- 在WHERE子句中,使用LIKE关键字进行模糊查询;
- 与“%”一起使用,表示匹配0或任意多个字符;
- 与“_”一起使用,表示匹配单个字符。
7.IN 关键字
语法:
SELECT * FROM 表名 WHERE 字段 IN (值1,值2...);
其中:
- 查询的字段的值,至少与IN 后的括号中的一个值相同;
- 多个值之间用英文逗号隔开。
8.NULL 值查询
语法:
SELECT * FROM 表名 WHERE 字段 IS NULL | IS NOT NULL
其中:
- NULL代表“无值”;
- 区别于零值0和空符串;
- 只能出现在定义允许为NULL的字段;
- 须使用 IS NULL 或 IS NOT NULL 比较操作符去比较。
9.常用的聚合函数
10.GROUP BY和HAVING分组
GROUP BY:
1、对所有的数据进行分组统计;
2、分组的依据字段可以有多个,并 依次分组。
HAVING:
与GROUP BY结合使用,进行分组 后的数据筛选。
11.ORDER BY排序
语法:
SELECT * FROM 表名 ORDER BY 字段名 [DESC|ASC]
其中:
- ORDER BY 表示对SELECT语句查询得到的结果,按字段名进行排序;
- DESC表示排序的顺序为降序,ASC表示排序的顺序为升序;
- “[ ]”包含的内容可以省略。
12.LIMIT关键字
语法:
SELECT * FROM 表名 LIMIT [n , m ]
其中:
- LIMIT关键字是MySQL特有关键字;
- LIMIT限制SELECT返回结果的行数;
- n 表示第一条记录的偏移量,m 表示显示记录的数量;
-
“[ ]”包含的内容可以省略
13.LIMIT实现分页显示的方式
数据总量:SELECT COUNT(主键字段) FROM 表 WHERE 条件;
分页显示: SELECT 字段1,字段2...字段n FROM 表 WHERE 条件
LIMIT ( 当前页码 - 1 ) * 页面容量 , 页面容量
14.MySql8新关键词OFFSET
语法:
SELECT * FROM 表名 limit m offset n
其中:
- LIMIT关键字是MySQL特有关键字;
- LIMIT限制SELECT返回结果的行数;
- n 表示第一条记录的偏移量,m 表示显示记录的数量;
- “[ ]”包含的内容可以省略。
上述总结:
DML语句内容?
INSERT语句,UPDATE语句和DELETE语句;
新增语句如何实现多记录同时新增?
INSERT INTO `表名` (`字段1`,`字段n`) VALUES (值1,值n),(值1,值n),(值1,值n);
WHERE子句的功能?
依赖逻辑条件对数据库的记录修改,删除或者查询;
TRUNCATE语句和DELETE语句的异同?
相同点:都能删除数据,都不能修改表结构;
不同点:
- 前者会重置自增计数器,后者不会;
- 前者无条件约束,速度快效率高。
DQL语句内容
SELECT语句。