MySQL语句学习第三篇
MySQL语句学习第三篇
修改操作
修改指令:
代码语言:javascript代码运行次数:0运行复制通过update 表名 set 列名 修改的字段来修改数据,也可以增加条件(where/order by),指定修改行。
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 ;
删除操作
删除操作:
代码语言:javascript代码运行次数:0运行复制delete from 表名 where条件/order by/limit; 不指定条件删除整张表内容(空表)。
delete from database_name where name ='张三';
1.ULL指令:
代码语言:javascript代码运行次数:0运行复制创建时添加not null/OT ULL ,创建成功后,当插入或者修改字段时无法插入或者修改为空值。
create table table_name(colmae type OT ULL);
#for example
create table person(name varchar(10) not null,age int OT ULL);
2.UIQUE指令:
代码语言:javascript代码运行次数:0运行复制创建时将unique置入类型后面,不可再次重复插入或者修改为此类型的值。
create table table_name(colame type unique);
#for example
create table person(id int,name varchar(10) UIQUE);
.DEFAULT指令:
代码语言:javascript代码运行次数:0运行复制通过创建表,指定类型的默认值,在不赋值的情况下,插入或者修改指定的字段时,显示default默认值。
create table table_name(colame type default defaultame);
#for example
create table person(id int,name varchar(10) default '未命名');
4.PRIMARY KEY指令:
代码语言:javascript代码运行次数:0运行复制primary key主键的功能:在插入或者修改带有primary key 的类型字段时,不能为空,且不能有重复字段添加。
一个表中只能有一个primary key
。
create table table_name(colame type primary key);
#for example
create table person(age int primary key);
主键key的auto_increment自动增长指令:
代码语言:javascript代码运行次数:0运行复制通过自增方式通过数据库来自动分配字段,整数类型(int /bigint)
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指令:
代码语言:javascript代码运行次数:0运行复制foreign key 外键:描述两个表之间的关联关系(父表与子表) 父表约束子表,子表被约束。 当子表超出父表给定的关联值时,则会报错。需要搭配primary key来使用。 references 意思引用与父亲表中的val值。 当子表插入时,查看子表中的father_val1中的值在父表中是否存在,不存在则报错。 当父表中已经被子表引用,则无法删除或者修改,需要将子表删除后,在删除父表。
#父表
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.查询搭配插入使用:
代码语言:javascript代码运行次数:0运行复制将table2所有的查询结果插入table1中,可以在后面搭配表达式where来使用。
这里的两个表的类型和列数需要匹配,否则报错.
insert into table1 select*from table2;
聚合查询
sql中提供的聚合函数:
函数 | 说明 (可以添加去重操作distinct) |
---|---|
COUT() | 使用*或者指定字段在查询计算结构中出现的个数(不指定情况下包含ULL值指定不包含ULL值) |
SUM() | 只适用于数字类型的字段或变量(算数运算)。不包含ULL值 |
MAX() | 适用于数值类型、字符串类型、日期时间类型的字段(或变量)不包含ULL值 |
MI() | 适用于数值类型、字符串类型、日期时间类型的字段(或变量)不包含ULL值 |
AVG() | 只适用于数值类型的字段或变量。不包含ULL值 |
1.COUT指令:
代码语言:javascript代码运行次数:0运行复制查询行数(也可以通过运算符来计算获取值) 如果字符串为数字则转换为double类型的数字来进行计算 sum可以将每个列和行相加,获得一个最终的总和。
#先执行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;
聚合分组查询
代码语言:javascript代码运行次数:0运行复制使用group by进行分组,针对每个分组,在分别进行聚合查询。 通过将valame相同的值来分组,将每个组获进行计算。
elect colame,
avg(colame'整数') from emp group by colame;
聚合分组表达式查询
where表达式聚合查询:
代码语言:javascript代码运行次数:0运行复制先通过表达式来筛选,表达式需要在分组之前进行。 先执行where条件 在进行分组 在进行聚合。
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() 当数据库把数据存储在硬盘上,而每次读取一个数据都需要读取硬盘,消耗非常大。
首先索引是针对查询操作引入的优化手段,可以通过索引来加快查询的速度,避免对表的遍历。
而索引能提高查询的速度,但是也有一定的代价。 生成索引需要一系列的数据结构,以及一系列额外的数据,存储到硬盘空间中的。 降低插入修改删除的速度。当进行这一系列操作时,也要计算索引的位置。
primary 、foreign 、unique 中在mysql中自动生成索引(主动生成的索引不能被删除)。
查index指令:
show index from `表名`;
创建index指令:
代码语言:javascript代码运行次数:0运行复制当创建索引时,需要遍历表中数据,需要提前规划。
create index `索引名` on `表名(列)`;
删除index指令:
drop index `索引名` on '表明';
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-12-09,如有侵权请联系 cloudcommunity@tencent 删除数据索引数据库mysql遍历 #感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上一篇:MySQL语句学习第四篇
下一篇:MySQL语句学习第二篇
推荐阅读
留言与评论(共有 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默认值 |