Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
Coding Tree
提交
8a09c7fc
C
Coding Tree
项目概览
檀越@新空间
/
Coding Tree
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coding Tree
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
8a09c7fc
编写于
3月 27, 2022
作者:
彭世瑜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
2868487d
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
233 addition
and
0 deletion
+233
-0
blog/php-mysql/index.md
blog/php-mysql/index.md
+6
-0
blog/php-mysql/sql-senior-delete.md
blog/php-mysql/sql-senior-delete.md
+23
-0
blog/php-mysql/sql-senior-select.md
blog/php-mysql/sql-senior-select.md
+162
-0
blog/php-mysql/sql-senior-update.md
blog/php-mysql/sql-senior-update.md
+42
-0
未找到文件。
blog/php-mysql/index.md
浏览文件 @
8a09c7fc
...
...
@@ -31,3 +31,9 @@
[
表关系
](
blog/php-mysql/sql-relation.md
)
[
高级数据操作-新增数据
](
blog/php-mysql/sql-senior-add.md
)
[
高级数据操作-更新数据
](
blog/php-mysql/sql-senior-update.md
)
[
高级数据操作-删除数据
](
blog/php-mysql/sql-senior-delete.md
)
[
高级数据操作-查询数据
](
blog/php-mysql/sql-senior-select.md
)
blog/php-mysql/sql-senior-delete.md
0 → 100644
浏览文件 @
8a09c7fc
# 高级数据操作-删除数据
1、删除数据应该使用where进行条件控制
```
sql
delete
from
表名
where
条件
;
```
2、删除数据可以使用limit来限制删除数量
```
sql
delete
from
表名
where
条件
limit
数量
;
```
delete删除数据,无法重置auto_increment
要重置auto_increment,可以使用truncate
```
sql
truncate
表名
;
-- 等价于: drop + create
```
blog/php-mysql/sql-senior-select.md
0 → 100644
浏览文件 @
8a09c7fc
# 高级数据操作-查询数据
完整的查询指令
```
sql
select
选项
字段列表
from
数据源
where
条件
group
by
分组
having
条件
order
by
排序
limit
限制
;
```
## 1、select选项
处理查询到的结果
-
all 默认值,表示保存所有记录
-
distinct 去重,只保留一条(所有字段都相同认为重复)
```
sql
create
table
my_select
(
name
varchar
(
10
)
);
insert
into
my_select
(
name
)
values
(
'A'
),
(
'A'
),
(
'A'
),
(
'B'
);
mysql
>
select
all
*
from
my_select
;
+
------+
|
name
|
+
------+
|
A
|
|
A
|
|
A
|
|
B
|
+
------+
mysql
>
select
distinct
*
from
my_select
;
+
------+
|
name
|
+
------+
|
A
|
|
B
|
+
------+
```
## 2、字段列表
多张表获取数据,可能存在不同表中有同名字段,需要使用别名alias
```
sql
字段名
[
as
]
字段别名
;
```
```
sql
select
distinct
name
as
name1
,
name
as
name2
from
my_select
;
+
-------+-------+
|
name1
|
name2
|
+
-------+-------+
|
A
|
A
|
|
B
|
B
|
+
-------+-------+
```
## 3、from数据源
为前面的查询提供数据
数据源只要是一个符合二维表结构的数据即可
### 3.1、单表数据
```
sql
from
表名
;
select
*
from
my_select
;
```
### 3.2、多表数据
基本语法
```
sql
from
表名
1
,
表名
2
...;
```
```
sql
mysql
>
select
*
from
my_select
;
+
------+
|
name
|
+
------+
|
A
|
|
B
|
+
------+
2
rows
in
set
(
0
.
00
sec
)
mysql
>
select
*
from
my_student
;
+
----+--------+
|
id
|
name
|
+
----+--------+
|
1
|
刘备
|
|
2
|
李四
|
|
3
|
王五
|
+
----+--------+
3
rows
in
set
(
0
.
00
sec
)
mysql
>
select
*
from
my_select
,
my_student
;
+
------+----+--------+
|
name
|
id
|
name
|
+
------+----+--------+
|
A
|
1
|
刘备
|
|
B
|
1
|
刘备
|
|
A
|
2
|
李四
|
|
B
|
2
|
李四
|
|
A
|
3
|
王五
|
|
B
|
3
|
王五
|
+
------+----+--------+
6
rows
in
set
(
0
.
00
sec
)
```
结果是两张表记录数据相乘,字段数拼接
本质:从第一张表取出一条记录,去拼凑第二张表所有记录,保留所有结果
笛卡尔积,会给数据库造成压力,尽量避免
### 3.3、动态数据
from后面不是一个实体表,而是一个从表中查询出来得到的二维结果表(子查询)
基本语法
```
sql
from
(
select
字段列表
from
表名
)
as
别名
```
```
sql
mysql
>
select
*
from
(
select
*
from
my_student
)
as
t1
;
+
----+--------+
|
id
|
name
|
+
----+--------+
|
1
|
刘备
|
|
2
|
李四
|
|
3
|
王五
|
+
----+--------+
```
group
having
order
limit
聚合函数
https://www.bilibili.com/video/BV1Vx411g7uJ?p=36&spm_id_from=pageDriver
blog/php-mysql/sql-senior-update.md
0 → 100644
浏览文件 @
8a09c7fc
# 高级数据操作-更新数据
1、通常一定是跟随条件更新
```
sql
update
表名
set
字段名
=
新值
where
判断条件
;
```
2、如果没有条件,是全表更新。可以使用limit来显示控制更新的数量
```
sql
update
表名
set
字段名
=
新值
[
where
判断条件
]
limit
数量
;
create
table
my_update
(
id
int
primary
key
auto_increment
,
name
varchar
(
10
)
);
insert
into
my_update
(
name
)
values
(
'A'
),
(
'A'
),
(
'A'
),
(
'A'
);
mysql
>
select
*
from
my_update
;
+
----+------+
|
id
|
name
|
+
----+------+
|
1
|
A
|
|
2
|
A
|
|
3
|
A
|
|
4
|
A
|
+
----+------+
update
my_update
set
name
=
'B'
where
name
=
'A'
limit
2
;
mysql
>
select
*
from
my_update
;
+
----+------+
|
id
|
name
|
+
----+------+
|
1
|
B
|
|
2
|
B
|
|
3
|
A
|
|
4
|
A
|
+
----+------+
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录