目录
前言
大家好,不知道前面的20题大家写的怎么样,前面分享的20题是SQL中查询的基础题型,这部分被称为DQL部分,是每个学习MySQL必须要学会的部分,下面就让我来介绍MySQL中的其他部分。
一、DQL
先介绍一下sql语句的语法和执行顺序(序号代表顺序由1~9):
select 查询列表 (7)
from 表名 (1)
[
join type join 表2 (2)
on 连接条件。 (3)
where 筛选条件 (4)
group by 分组字段 (5)
having 分组后的筛选 (6)
order by 排序的字段 (8)
]
limit [offset],size; (9)
其中:
- select: 指定要查询的列或表达式,用于检索数据。
- from: 指定要查询的表名,表示数据来自哪个表。
- join: 将两个或多个表连接起来进行查询,有不同类型的连接(如内连接、左连接、右连接等)。
- on: 指定连接条件,即指定两个表如何关联。
- where: 筛选条件,用于过滤数据,只返回满足条件的行。
- group by: 按指定列对结果集进行分组,通常与聚合函数一起使用(如 SUM、COUNT)。
- having: 对分组后的结果应用筛选条件,过滤分组后的结果集。
- order by: 指定结果集的排序方式,可以是升序(ASC)或降序(DESC)。
- limit: 限制查询返回的行数,常与 offset 一起使用,表示从第几行开始取数据,取多少行。
- offset: 要显示条目的起始索引(起始索引从0开始)。
- size: 要显示的条目个数。
当你在编写 SQL 查询时,通常会使用这些来获取想要的数据,是MySQL中DQL的基本语法,要想熟练掌握它,需要不断通过sql习题来增强记忆,学会分析问题的思路,最后就能快速地实现需求。
二 、DML(数据操作语言)部分
以下是数据库操作部分的语法及其示例:
2.1 插入数据:
## 方式一:insert into 表名 values(,,);
# 示例 :
INSERTINTO beauty
VALUES(17,'关晓彤','女',NULL,'18788888888',NULL,NULL);
## 方式二:insert into 表名 set 1,2,3;
# 示例 :
INSERTINTO beauty
SET id=18,name='张静怡',phone='19088888888';
2.2 更新数据:
## 单表更新:
update 表名 set xx=xx ;
# 示例 :
UPDATE boys SET boyName='李晨',userCP=50WHERE id =3;
## 多表更新:
# (92规范)示例 :
UPDATE boys bo,beauty b
SET b.boyfriend_id =3WHERE bo.id = b.boyfriend_id
AND bo.id ISNULL;
# (99规范)示例 :
UPDATE boys bo
RIGHTJOIN beauty b
ON bo.id = b.boyfriend_id
SET b.boyfriend_id =3WHERE bo.id ISNULL;
2.3 删除数据:
## 单表删除:
delete [from](单表加上,多表放表名后面)表名 where 筛选条件;
# 示例 :
DELETEFROM beauty WHERE phone LIKE'19%';
## 多表删除:
# 方式一:使用delete
DELETE b
FROM beauty b
INNERJOIN boys bo ON b.boyfriend_id = bo.id
WHERE bo.boyName ='汪峰';
delete b
from beauty b , boys bo
where b.boyfriend_id = bo.id
and bo.boyName ='汪峰';
# 方式二:使用truncate
truncate table 表名
TRUNCATETABLE boys WHERE userCP >100;-- 报错,truncate只能用于截断或者说是清空表。
TRUNCATETABLE boys; 相当于清空表
delete和truncate对比
(1) delete可以加where条件,truncate不能加。
(2) truncate删除,效率高一点。
(3) 加入要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据自增长列的值从1开始。
(4) truncate删除没有返回值,delete删除有返回值。
(5) truncate删除不能回滚,delete删除可以回滚。
DDL(数据定义语言)部分
以下是数据库定义部分的语法及其示例:
2.4 创建 create
#库:
DROPDATABASEIFEXISTS books;CREATEDATABASE[IFNOTEXISTS] books;
#表:
DROPTABLEIFEXISTS books;CREATETABLE[IFNOTEXISTS]books(
id INT,
bName VARCHAR(20));
三、修改 alter
# 库:
RENAMEDATABASE books TO 新库名;-- 一般不修改
# 更改库的字符集
ALTERDATABASE books CHARACTERSET'utf8';
# 表:
# 语法:
alter table 表名 add | drop | modify | change column 列名 [列类型 约束];add(加字段):ALTERTABLE author ADDCOLUMN age INT;drop(删字段):ALTERTABLE author DROPCOLUMN age;modify(修改字段类型):ALTERTABLE book MODIFYCOLUMN pubdate TIMESTAMP;change(修改列名):ALTERTABLE book CHANGECOLUMN publishDate pubDate DATETIME;
如果想修改表名:ALTERTABLE author RENAMETO book_author;
添加外键:ALTERTABLE table_name ADDFOREIGNKEY(column_name)REFERENCESother_table(column_name)
四、删除 drop
#库:
DROPDATABASE[IFEXISTS] books;
#表:
DROPTABLE[IFEXISTS] book_author;
五、表的复制
# 方式一: 使用like复制表结构
CREATETABLE 表名 LIKE author;
# 方式二: 复制结构和数据
CREATETABLE 表名 SELECT*FROM author;
# 使用where 0和 where 1 来实现:
CREATETABLE 表名
SELECT id,au_name
FROM author
WHERE0; (仅仅复制表结构即字段)
CREATETABLE 表名
SELECT id,au_name
FROM author
WHERE1; (结构加数据)
六、常见数据类型
整型: int bigint
小数定点数:DECIMAL类型 NUMERIC类型
小数浮点数:floatdouble
字符型较短的文本:char varchar
字符型较长的文本:text blob(较长的二进制数据)
日期型: date datetime timestamp
在创表时不确定的字段类型使用varchar(255)
好了,今天就先介绍这么多,以后每天还会分享更多的大数据技术基础知识!
最初附上这部分思维导图,以便大家记忆。
版权归原作者 从零开始的-CodeNinja之路 所有, 如有侵权,请联系我们删除。