您现在的位置是:首页 > 编程 > 

MySQL语句学习第三篇

2025-07-29 04:18:45
MySQL语句学习第三篇 MySQL的基础操作(改与查)修改操作修改指令: 通过update 表名 set 列名 修改的字段来修改数据,也可以增加条件(where/order by),指定修改行。代码语言:javascript代码运行次数:0运行复制updata database_name set colame = val where conditi/order by; #for exa

MySQL语句学习第三篇

MySQL的基础操作(改与查)
修改操作

修改指令:

通过update 表名 set 列名 修改的字段来修改数据,也可以增加条件(where/order by),指定修改行。

代码语言:javascript代码运行次数:0运行复制
updata database_name set colame = val where conditi/order by;

#for example1
update exam_result set math=math+10 where name='张三';
#for example2
update exam_result set math=math+0 order by chinese+english+math desc limit ;
删除操作

删除操作:

delete from 表名 where条件/order by/limit; 不指定条件删除整张表内容(空表)。

代码语言:javascript代码运行次数:0运行复制
delete from database_name where name ='张三';
数据库约束

1.ULL指令:

创建时添加not null/OT ULL ,创建成功后,当插入或者修改字段时无法插入或者修改为空值。

代码语言:javascript代码运行次数:0运行复制
create table table_name(colmae type OT ULL);
#for example
create table person(name varchar(10) not null,age int OT ULL);

2.UIQUE指令:

创建时将unique置入类型后面,不可再次重复插入或者修改为此类型的值。

代码语言:javascript代码运行次数:0运行复制
create table table_name(colame type unique);
#for example
create table person(id int,name varchar(10) UIQUE);

.DEFAULT指令:

通过创建表,指定类型的默认值,在不赋值的情况下,插入或者修改指定的字段时,显示default默认值。

代码语言:javascript代码运行次数:0运行复制
create table table_name(colame type default defaultame);
#for example
create table person(id int,name varchar(10) default '未命名');

4.PRIMARY KEY指令:

primary key主键的功能:在插入或者修改带有primary key 的类型字段时,不能为空,且不能有重复字段添加。 一个表中只能有一个primary key

代码语言:javascript代码运行次数:0运行复制
create table table_name(colame type primary key);
#for example
create table person(age int primary key);

主键key的auto_increment自动增长指令:

通过自增方式通过数据库来自动分配字段,整数类型(int /bigint)

代码语言:javascript代码运行次数:0运行复制
create table table_name(colame int primary key auto_increment);
#for example
create table person(id int primary key auto_increment);
##自动插入1,2
insert into person values(null),(null);

5.FOREIG KEY指令:

foreign key 外键:描述两个表之间的关联关系(父表与子表) 父表约束子表,子表被约束。 当子表超出父表给定的关联值时,则会报错。需要搭配primary key来使用。 references 意思引用与父亲表中的val值。 当子表插入时,查看子表中的father_val1中的值在父表中是否存在,不存在则报错。 当父表中已经被子表引用,则无法删除或者修改,需要将子表删除后,在删除父表。

代码语言:javascript代码运行次数:0运行复制
#父表
create table father(colame1 int primary key,colame2 varchar(10));
#子表
create table child2(colame int primary key 
,father_val1 int,
foreign key(father_val1) references father(colame1) );


查询操作的进阶

1.查询搭配插入使用:

将table2所有的查询结果插入table1中,可以在后面搭配表达式where来使用。 这里的两个表的类型和列数需要匹配,否则报错.

代码语言:javascript代码运行次数:0运行复制
insert into table1 select*from table2;

聚合查询

sql中提供的聚合函数:

函数

说明 (可以添加去重操作distinct)

COUT()

使用*或者指定字段在查询计算结构中出现的个数(不指定情况下包含ULL值指定不包含ULL值)

SUM()

只适用于数字类型的字段或变量(算数运算)。不包含ULL值

MAX()

适用于数值类型、字符串类型、日期时间类型的字段(或变量)不包含ULL值

MI()

适用于数值类型、字符串类型、日期时间类型的字段(或变量)不包含ULL值

AVG()

只适用于数值类型的字段或变量。不包含ULL值

1.COUT指令:

查询行数(也可以通过运算符来计算获取值) 如果字符串为数字则转换为double类型的数字来进行计算 sum可以将每个列和行相加,获得一个最终的总和。

代码语言:javascript代码运行次数:0运行复制
#先执行select(*)在进行统计具体几行.
#*来获取所有行
select count(*) from table;
 #当输入的是字段属性时,获取的是不为null的行数
 select count(colame) from table_name;
 # 指定列

2.SUM指令:

针对数字类型进行求和的算数运算

代码语言:javascript代码运行次数:0运行复制
select sum(colame'数字类型的字段') from table_name;

.AVG 指令:

支持数字类型进行平均值的算数运算

代码语言:javascript代码运行次数:0运行复制
select sum(colame'数字类型的字段') from table_name;

4.MAX和MI指令:

获取最大值和最小值

代码语言:javascript代码运行次数:0运行复制
#max
select max(colame) from table_name;
#min
select min(colame) from table_name;

聚合分组查询

使用group by进行分组,针对每个分组,在分别进行聚合查询。 通过将valame相同的值来分组,将每个组获进行计算。

代码语言:javascript代码运行次数:0运行复制
elect colame,
 avg(colame'整数') from emp group by colame;
聚合分组表达式查询

where表达式聚合查询:

先通过表达式来筛选,表达式需要在分组之前进行。 先执行where条件 在进行分组 在进行聚合。

代码语言:javascript代码运行次数:0运行复制
select colame ,avg(salary) from emp where name!='张三' group by valame;

having表达式聚合查询:

通过分组后,然后进行条件筛选,最后进行聚合查询。表达式在分组之后 先执行分组 在进行筛选 在最后进行聚合。

代码语言:javascript代码运行次数:0运行复制
select colame,avg(salary) from emp group by colame having avg(salary)<20000;

分组中可以包含两个表达式(包含分组前where和分组后having)。


联合查询/多表查询

笛卡尔积:两个集合(表)进行合并后的乘积,两张表的记录中表记录与另一张表的所有记录进行记录排列组合。

继续进行继续筛选

而这时候会出现许多非法的字段,无意义的数据,这时候对笛卡尔积需要限定条件,让每张表进行关联。

代码语言:javascript代码运行次数:0运行复制
#笛卡尔积
select *from colame1,colame2;
# 筛选有效数据
select *from colame1,colame2, where table_=table_;

# and 接表达式继续筛选
select *from colame1,colame2, where 
table_=table_ and.....;

#having表达式,进行分组之后的表达式
select *from colame1,colame2, where
table_=table_ and.....
group by colame1 having ...;

当数据库使用select查询的时候 首先遍历表,然后将当前行带入到条件中,看条件是否成立,当条件成立后保留。 当表存储非常大的时候,这样的遍历成本比较高,时间复杂度为O() 当数据库把数据存储在硬盘上,而每次读取一个数据都需要读取硬盘,消耗非常大。


index索引

首先索引是针对查询操作引入的优化手段,可以通过索引来加快查询的速度,避免对表的遍历。

而索引能提高查询的速度,但是也有一定的代价。 生成索引需要一系列的数据结构,以及一系列额外的数据,存储到硬盘空间中的。 降低插入修改删除的速度。当进行这一系列操作时,也要计算索引的位置。 primary 、foreign 、unique 中在mysql中自动生成索引(主动生成的索引不能被删除)。

查index指令:

代码语言:javascript代码运行次数:0运行复制
show index from `表名`;

创建index指令:

当创建索引时,需要遍历表中数据,需要提前规划。

代码语言:javascript代码运行次数:0运行复制
create index `索引名` on `表名(列)`;

删除index指令:

代码语言:javascript代码运行次数:0运行复制
drop index `索引名` on '表明';
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-12-09,如有侵权请联系 cloudcommunity@tencent 删除数据索引数据库mysql遍历

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1220488.html

相关标签:无
上传时间: 2025-07-25 14:50:48
留言与评论(共有 13 条评论)
本站网友 金华绿茵小区
6分钟前 发表
查index指令:代码语言:javascript代码运行次数:0运行复制show index from `表名`;创建index指令: 当创建索引时
本站网友 apabireader
3分钟前 发表
时间复杂度为O() 当数据库把数据存储在硬盘上
本站网友 去黑头的方法
3分钟前 发表
消耗非常大
本站网友 暴光
11分钟前 发表
降低插入修改删除的速度
本站网友 许昌职业技术学院地址
29分钟前 发表
让每张表进行关联
本站网友 淘宝比价网
22分钟前 发表
colame2
本站网友 意大利签证所需材料
19分钟前 发表
2 insert into person values(null)
本站网友 利率下调
30分钟前 发表
代码语言:javascript代码运行次数:0运行复制#先执行select(*)在进行统计具体几行. #*来获取所有行 select count(*) from table; #当输入的是字段属性时
本站网友 征收房产税
0秒前 发表
然后进行条件筛选
本站网友 临时
30分钟前 发表
则会报错
本站网友 眉山租房
21分钟前 发表
代码语言:javascript代码运行次数:0运行复制#笛卡尔积 select *from colame1
本站网友 celerity
5分钟前 发表
显示default默认值