当前位置: 澳门新濠3559 > 数据库 > 正文

as 字段别名,1.从已有表拷贝数据到新表中

时间:2019-11-09 19:36来源:数据库
  高等更新 update 表名 set 字段= 值 【 where 】; 高级新型 语法 UPDATE 表名 SET 字段 = 值 【where条件】【limit 更新数量】; update student set name = 'jake' where name = 'xiaoming' limit 3; 主键冲突 主键

 

高等更新

update 表名 set 字段= 值 【 where 】;
高级新型 语法
UPDATE 表名 SET 字段 = 值 【where条件】【limit 更新数量】;

update student set name = 'jake' where name = 'xiaoming' limit 3;

主键冲突

  • 主键冲突:更新操作(不时用卡塔尔
insert into 表名[(字段列表:包含主键)] values(值列表) 
on duplicate key 
update 字段 = 新值;
  • 主键冲突:替换(常用卡塔尔国
replace into 表名[(字段列表:包含主键)] values(值列表);

格式:select [筛选子句] 字段表达式子句 [from子句] [where子句] [group by子句] [having子句] [order by子句] [limit子句];


高档删除

Delete from student where name = 'jake' limit 10;

剔除:假若表中设有主键自增加,那么删除之后,自拉长不会回复

思路:数据的删减是不会转移表结构,只好删除表后再也建表
Truncate 表名:--先删除更正,再成立 重新设置自增进

蠕虫复制

蠕虫复制:从本来就有的数据中去获取数据,然后将数据又进行增产操作,数据成倍的加多。

  • 复制表结构(从原来就有表创造新表卡塔尔
create table 表名 like 数据库.表名;
  • 复制数据:蠕虫复制:先查出多少,然后将摸清的多少新扩展叁次
insert into 表名[(字段列表)] select 字段列表/* from 数据表名;

蠕虫复制的意思:
1.从原来就有表拷贝数据到新表中
2.方可一点也不慢的让表中的数据膨胀到一定的多寡级:测量检验表的压力甚至功能

提示:子句的顺序是稳定的

 

select 选项子句 [ all | distinct ]

本条参数主要影响查询结果是或不是包括重复记录

All:代表保留全部的笔录,这么些私下认可选项,可以省略不写

Distinct:代表去除重复的笔录

格式:select all|distinct 字段表达式 from...;

 

from子句

 格式:from 数据表

FROM子句用于钦赐要询问利用的数据源

数据表能够有七个,中间用逗号分开,数据表也能够起小名

若是数据源是四个表时,结果会是三个接力连接的点子,记录数也等于笛卡尔积

五个表的数量总和=表1的记录数*表2的记录数

写*时,字段名总的数量是三个表的字段数量的和

数据表也足以起小名,还是能够加条件

 

WHERE子句

效用是拓宽数据的筛选过滤。

格式:where 条件表明式

条件表明式使用关系运算符和逻辑运算符

论及运算符

> 大于

< 小于

>= 大于等于

<= 小于等于

!= 不等于

<> 不等于

= 等于

逻辑运算符

&&  and 与

||   or  或

!   not  非

Xor  异或

运算符存在优先级的标题

在where子句中无法选拔字段的外号

 

GROUP BY子句

 

首要用来分组。平常在字段表明式中运用分组函数。

 

格式:group by 字段1 [asc|desc], 字段2 [asc|desc], ……

 

排序不写默许是asc正序

使用count(*)和count(字段名)时,注意字段的值为null的标题

count(字段名)计算时,会把值为null的记录忽视掉!

 

HAVING子句

它用于对查询出来的结果开展重新的过滤。

相比较鲜明的便是如对分组查询出来的结果再行使用条件。

省略where和group by子句时,不等于having就是where

不能把where放到having的位置

 

正文内容:

  • 完整语法
  • 去重选项
  • 字段小名
  • 数据源
  • where
  • group by
  • having
  • order by
  • limit

 

首发日期:2018-04-11


高级select

主干语法
Select 字段列表/* from 表名【where条件】;
完整语法
Select [select选项] 字段列表【字段别称】/*from 数据源 【where 条件子句】【gruop by 子句】【having 子句】【order子句】【limit子句】;

  • Select选项
    Select选项:select对查出来的结果的管理格局
    All:暗许的,保留全部的结果
    Distinct:去重,查出来的结果,将再一次给删除(全体的字段都相通卡塔尔国;
    select * from student;
    select all * from student;

多少更新(约束记录卡塔尔

高级更新语法

update 表名 set 字段 = 值 [where 条件] [limit 更新数量];

ORDER BY**子句**

首要用来对数码举行排序。

格式:order by 字段1 [asc|desc], 字段2 [asc|desc], ……

Asc代表正序,它是暗中认可选项,不写正是asc

Desc代表倒序

当用八个字段做排序时,假使现身针对排序字段相符的笔录时,会含有去接收主键举行第二排序

 

完整语法:

select 去重选项 字段列表 [as 字段外号] from 数据源 [where子句] [group by 子句] [having子句] [order by 子句] [limit子句];

 


字段外号

字段别名:当数码开展询问出来的时候,有时候·名字并不一定就满意急需(多表查询会有同字段名卡塔尔,必要对字段名展开别称:外号
字段名【as】别名

SELECT id, mignZi as 名字, age as 年龄, score as 分数 from student;

澳门新濠3559 1

Paste_Image.png

删去数据

delete from 表名 [where 条件] [limit 数量];

借使表中存在主键自拉长,那么当删除之后,自拉长不会恢复生机。
即便想要自增进还原思路:
去除表后重新建立表

-- 清空表,重置自增长
truncate 表名;

LIMIT子句

以此子句是做分页的。

格式:limit 初阶记录地方, 记录数

留神:借使省略初叶记录地方,只交给记录数,表示从第一条数据在此以前取内容

Limit 10 相当于 limit 0, 10

唤醒:记录的职位是从0开端总括的

 

select [选料子句] 字段表明式子句 [ from 子句] [ where 子句] [ group by 子句] [ having 子句] [ order by 子句] [ limit 子句]; 提示:子句的 顺序...

去重选项::

 

  • 去重选项便是是不是对结果中完全相近的笔录(全部字段数据都意气风发致卡塔尔开展去重:
    • all:不去重
    • distinct:去重
  • 语法:select 去重选项 字段列表 from 表名;

 

 

示例:

去重前:澳门新濠3559 2 ,去重后澳门新濠3559 3

create table student(name varchar(15),gender varchar(15));
insert into student(name,gender) values("lilei","male");
insert into student(name,gender) values("lilei","male");
select * from student;
select distinct * from student;

 

 


数据源

数据源:数据的来源 关系型数据库的发源都以数据表:本质上只要保障数据肖似二维表最后都足以看做数据源

数据源分为多中: 单表数据源,多表数据源 查询语句

多表数据源
select *from 表名1, 表名2;

子查询:
select * from (select * from 表名) as 别名;

查询数据

大器晚成体化语法:
select [select 选项] 字段列表[字段外号]/* from 数据源 [where 条件子句] [group by 子句] [having 子句] [order by 子句] [limit 子句];

字段小名:

 

  • 字段别称是给查询结果中的字段另起二个名字
  • 字段别称只会在当次查询结果中生效。
  • 字段别称常常都以赞助明白字段意义(比如大家定义的名字是name,大家盼望回到给客户的结果展现成姓名卡塔尔、简写字段名
  • 语法:select 字段 as 字段小名 from 表名;

 

示例:

使用前:澳门新濠3559 4,使用后澳门新濠3559 5

create table student(name varchar(15),gender varchar(15));
insert into student(name,gender) values("lilei","male");
insert into student(name,gender) values("lilei","male");
select * from student;
select  name as "姓名",gender as "性别" from student;

 

 


where子句

Where子句:用来判定数据,挑选数据
Where 子句重回的结果:0 要么1,0代表false, 1代表true

看清规范
正如运算符:> 、< 、>= 、!= 、<>(不等于) 、=  、like, between and, in/not in
逻辑运算符:&&(and卡塔尔, ||(or卡塔 尔(阿拉伯语:قطر‎, !(not卡塔 尔(英语:State of Qatar)

where原理:where是并世无两八个一向从磁盘获取数据的时候就起始推断;从磁盘抽取记录,开首开展where剖断:决断的结果,要是判定创建保存到内容;借使败北直接抛弃

select * from student WHERE id in(1,3, 5); -- 逻辑判断
select * from student WHERE id = 3 || id =5; -- 落在集合中
1. select 选项:select对查出来的结果的管理方式
  • all:默许的,保留全体的结果
  • distinct:去重,查出来的结果,将再一次给删除

数据源:

 

  • 骨子里,查询的源于能够不是“表名”,只需是一个二维表就能够。那么数量出自能够是叁个select结果。
  • 数据源可以是单表数据源,多表数据源,以致询问语句
    • 单表:select 字段列表 from 表名;
    • 多表: select 字段列表 from 表名1,表名2,…; 【多表查询时是将每个表中的x条记录与另多少个表y条记下组成结果,组成的结果的笔录条数为x*y】【能够称呼笛卡尔积】
      • 澳门新濠3559 6
    • 查询语句:select 字段列表 fromr (select语句) as 表小名;【那是将一个询问结果作为多少个查询的指标二维表,须求定义成五个表小名】

 

 

 


gruop by子句

Group by:分组,依据有个别字段举行分组,(相似的放生龙活虎组,区别的分到生机勃勃组 )

大旨语法:group by 字段名;
分组的意趣:视为了总括数据(按组总括:按分组字段举办多少总括);
SQL:提供了一些列的计算函数:
count(): 计算分组后的记录数;每生机勃勃组有微微记录
马克斯(): 总计每后生可畏组的最大的值
Min():总括最小的值
Avg():总计平平均数量
Sum:统计和

select sex, count(*), max(height), min(height), avg(age), sum(age) from student group by sex;

2. 字段外号

语法:字段名 [as] 别名;
澳门新濠3559,聊起底以小名展现查询数据结果

where子句:

  • where子句是用于筛选相符条件的结果的。

 

where二种语法:

  • 基于值:
    • = : where 字段 =值  ;查寻找对应字段等于对应值的笔录。(相同的,<是自轻自贱对应值,<=是低于等于对应值,>是抢先对应值,>=是超越等于对应值,!=是不对等卡塔尔国
    • like:where 字段 like 值 ;作用与 = 相通,但能够使用模糊匹配来搜求结果。
  • 基于值的节制:
    • in: where 字段 in 范围;查搜索对应字段的值在所钦定范围的笔录。
    • not in : where 字段 in 范围;查找寻对应字段的值不在所钦命范围的笔录。
    • between x and y :where 字段 between x and y;查找寻对应字段的值在闭区间[x,y]限定的记录。
  • 法规复合:
    • or : where 条件1 or 标准化2… ; 查搜索切合条件1或相符条件2的笔录。
    • and:  where 条件1 and 规范2… ; 查找寻相符条件1还要相符条件2的笔录。
    • not : where not 条件1 ;查找寻不相符条件的享有记录。
    • &&的机能与and相通;||与or效率看似,!与not 效率相近。

 

 

having子句

与where肖似:进行标准剖断的
where是指向性磁盘数据进行判定:走入到内部存款和储蓄器之后,会進展分组管理:分组结果操作就需求having来拍卖;

having能做where能做的大致全数的政工;

。。。。。

3. 数据源

数量的发源,关系型数据库的根源都是数据表,本质上意气风发经保障数据相同二维表,最后都足以作为数据源。
数码源分为:单表数据源,多表数据源,查询语句

  • 单表数据源:select * from 表名;
  • 多表数据源:select * from 表名1,表名2...;
    从一张表中收取一条记下,去另一张表中非常全数记录,并且全体保留。这种结果叫做笛卡尔积,应该尽量制止。
  • 子查询:数据的源于是一条查询语句
    select * from (select 语句) as 表名;

补充:

  • where是从磁盘中获取数据的时候就张开筛选的。所以有个别在内部存款和储蓄器是才有的东西where不能使用。(字段外号什么的是自然不是“磁盘中的数据”(是在内存那中运维时才定义的卡塔尔国,所以where不能够使用,常常都依附having来挑选).

    select name as n ,gender from student where name ="lilei"; -- select name as n ,gender from student where n ="lilei"; --报错 select name as n ,gender from student having n ="lilei";

 


Order by子句

听说某些字段进行升序恐怕降序

order by 字段名 【asc/desc】; -- asc是升序(默认的)

SELECT *from student order BY age ASC; 

排序能够打开八个字段排序:先依据某些字段进行排序,然后排序好的当中,在据守有些数据实行重新排序;

select student *from student order by age, score desc;

澳门新濠3559 7

Paste_Image.png

4. where子句

where子句重临结果:0也许1,0代表false,1象征true
认清标准:

  • 相比较运算符:>, <, >=, <=, !=, <>, =, like, between and, in/not in
  • 逻辑运算符:&&(and), ||(or), !(not)

where是必定要经过的道路二个一向从磁盘获取数据的时候就起来推断的规格。
规格查询1:供给找寻学子id为1要么3要么5的学子

select * from my_student where id = 1 || id = 3 || id = 5;
select * from my_student where id in(1, 3, 5);
-- 以上两条语句等价

标准查询2:查出区间落在180,190身体高度之间的学子。

select * from my_student where height >= 180 and height <= 190;
select * from my_student where height between 180 and 190;
-- 以上两条语句等价

between自身是闭区间,between左侧的值必需低于或许等于右侧的值。

group by 子句:

 

group by 可以将查询结果依靠字段来将结果分组。

语法:select 字段列表 from 表名 group by 字段;

  • 【字段可以有多少个,实际正是三回分组】澳门新濠3559 8

 

Limit子句

方案1,:只用来突显长度(数据量): limit 数据量
方案2:约束起首地方,约束数量:limit 开端地点,长度;
limit 0, 2;
limit 2, 2
limit 4, 2;
limit 6, 2
首要用以贯彻数据的分页:为客商节省时间,提交服务器的响应功能,减少能源的萧疏。

对于客商来说:能够点击的分页按键:1,2,3,4,5
对于服务器来说: 依据客户选取的页码来获取分裂的多少:limit offset,length;
length:每一页呈现的数据量:基本不改变
offset:offset = (页码 - 1) *每页呈现量

5. group by子句

分组,依照某些字段举行分组
大旨语法:group by 字段名;
SQL提供了生龙活虎各样总括函数:

  • count():总计分组后的记录数,每后生可畏组有稍稍记录
  • max():总结每组中的最大值
  • min():总结最小值
  • avg():总括平均值
  • sum():统计和
-- 按性别分组统计:身高高矮,年龄平均,总年龄
select sex, count(*), max(height), min(height), avg(age), sum(age) from my_student group by sex;

count函数:里面能够选拔三种参数:*意味着总括记录,字段名代表计算对应的字段(除了null的个数卡塔尔。

分组会自动排序:依照分组字段:暗中同意升序
group by 字段 [asc|desc];

多字段分组:先依照贰个字段进行分组,然后对分组后的结果再根据其余字段进行分组

-- 多字段分组:先班级,后男女
select c_id, sex, count(*) from  my_student group by c_id, sex;

group_concat()函数:
能够对分组的结果中的有些字段进行字符串连接(保留该组全数的某部字段卡塔 尔(阿拉伯语:قطر‎

select c_id, sex, count(*), group_concat(name) from my_student group by c_id, sex;

忆起总计:with rollup:任何一个分组后都会有一个小组,最后都亟需向上级分组举办反映总结,依照当前分组的字段,那就是回想总括,回溯总括的时候将分组字段置空。
多字段回想:考虑第风流倜傥层会有此回溯,第一遍分组要看率先次分组的组数,组数是稍微,回溯正是稍稍,然后加上第后生可畏层回溯即可。

补充:

实际,group by 的效应主假设计算(使用意况相当多,比方说总括有些人的总分数,学子中女人的数据。。卡塔 尔(英语:State of Qatar),所以日常会合营局地总括函数来接受:

  • count(x):总计每组的记录数,x是*时期表记录数,为字段名时期表总计字段数据数(除去NULL卡塔 尔(阿拉伯语:قطر‎
  • max(x):总计最大值,x是字段名
  • min(x):总计最小值,x是字段名
  • avg(x):总括平均值,x是字段名
  • sum(x):总括总和,x是字段名

group by 字段 前边还足以跟上asc或desc,代表分组后是还是不是基于字段排序。

 


6. having子句

与where子句同样:实行标准判定。
where是针对性磁盘数据开展判别,步入到内部存款和储蓄器之后,交易会开分组操作,分组结果就要求having来拍卖。
having能做where能做的差非常少具有工作,然而where却无法做having能做的多数事。

分组总计的结果或然说总括函数都唯有having能够利用。

-- 求出所有班级人数大于等于2的学生人数
select c_id, count(*) from my_student group by c_id having count(*) >= 2;

having能够利用字段外号:where不能够:where是从磁盘取多少,而名字只恐怕是字段名;外号是在字段步向到内部存款和储蓄器后才会发生。

select c_id, count(*) as total from my_student group by c_id having total >= 2;

having子句:

 

having效能与where相通,不过having的规格剖断发生在数量在内部存款和储蓄器中时,所以能够应用在内部存款和储蓄器中才发出的数目,如“分组”,“字段外号”等。

语法:select 字段列表 from 表名 having 条件;【操作符之类的能够参见where的,扩充的只是部分“内部存储器”中的筛选标准】

 

 


7. order by子句

排序,依照某些字段举办升序或许降序排序,注重核对集。
主导语法:order by 字段名 [asc|desc];

多字段排序:先根据有个别字段进行排序,然后排序好的个中,再依据有个别数据开展重新排序。

-- 先班级升序排序,后性别降序排序
select * from my_student order by c_id, sex desc;

order by 子句:

 

order by 能够使查询结果依照有些字段来排序

语法:select 字段列表 from 表名 order by 字段 [asc|desc];

  • 字段能够有两个,从左到右,后边的排序基于前边的,(举例:先按name排序,再按gender排序,后边的gender排序是本着前边name排序时name相近的多寡卡塔 尔(英语:State of Qatar)
  • asc代表排序是雨后春笋的
  • desc代表是依次减少的
  • 也可以内定某些字段的排序方法,举例第二个字段依次增加,第叁个依次减少。只需求在每一种字段后边加asc或desc就可以(固然暗中认可不加是多如牛毛,但依旧拉长更清晰鲜明卡塔 尔(英语:State of Qatar)。

 

-- 示例
select * from student order by name;
select * from student order by name,gender;
select * from student order by name asc,gender desc;

 

 


8. limit子句

是大器晚成种限定结果的口舌
二种艺术:

  • 方案1:只用来界定长度(数据量卡塔 尔(阿拉伯语:قطر‎:limit 数据量;
  • 方案2:约束起初地点,约束数量:limit 开首位置, 长度;
select * from my_student limit 0, 2;
-- 记录数是从0开始编号,从第一条数据开始取,一共取两条。

方案2要害用来达成多少分页,为客商节省时间,提交服务器的响应成效,减少能源的浪费。
对此客商来讲:能够点击的分页开关:1,2,3,4
对于服务器来说:依据顾客选用的页码来收获分歧的数量:limit offset,length;
length:每页展现的数据量:基本不改变
offset:offset = (页码 - 1) * 每页呈现量。

limit子句:

 

limit是用来界定结果数量的。与wherehaving等特别使用时,能够界定相配出的结果。但凡是涉及多少的时候都可以选择limit(这里只是重申limit的职能,不要过度掌握卡塔 尔(阿拉伯语:قطر‎

语法:select 字段列表 from 表名 limit [offset,] count;

  • count是数量
  • offset是初阶地点,offset从0初叶,能够说是每条记下的索引号

 

-- 示例
select * from student limit 1;
select * from student limit 3,1;
select * from student where name ="lilei" limit 1;
select * from student where name ="lilei" limit 3,1;

 

 

 


编辑:数据库 本文来源:as 字段别名,1.从已有表拷贝数据到新表中

关键词:

  • 上一篇:没有了
  • 下一篇:没有了