澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

学习笔记单表,知了堂学习笔记

SQL查询底蕴

【知了堂读书笔记】SQL查询底工语句(单表查询、多表查询),学习笔记单表

net start mysql运行服务。net stop 服务名。关闭服务。

2.2 什么是数据库软件

1、单表查询

从数据库中寻觅数据 专门的工作的称谓又称为投影

基本查询语句构造

select 列 from 表

* 全体列不是兼具别的东西

询问全部数据

例:SELECT * FROM t_studen

要求进行一点也异常细的操作  加上条件筛选:查询id为2号的学员新闻

SELECT * FROM t_student WHERE id=2;

筛选的实施步骤  

例:SELECT * FROM t_student WHERE id=2;

SELECT *          (3卡塔尔 再查询  筛选完后 作者最终投影的结果便是筛选后的结果,不是每行都显得出来,显示行的数据是筛选后的数据  所以最后试行 select

FROM t_student    (1卡塔尔(英语:State of Qatar) 把整张表加到内存里面  把整张表找到后加到内部存款和储蓄器里面

WHERE id =2      (2卡塔尔(قطر‎ 筛选  因为一张表里面包车型地铁数码要求去做一个筛选,不想让每行都显得,这样就没意义了,所以要进行八个尺度筛选

只投影有些列

SELECT id,s_name FROM t_student;  只投影结果,并非改动表数据,很四个人会吸引,别的列会不会放弃了

询问出来显示成汉语,比方s_name展现成学子姓名

 

 

 AS 增添别称  (列的小名卡塔尔(英语:State of Qatar)

SELECT id,s_name AS "学子姓名"  FROM t_student;

表小名,当有几张表的时候,表的名字不长,会给表加上外号

SELECT t_student.s_name FROM t_student  -- 不过在一张表中那样写t_student.s_name 没有其余意义

SELECT a.s_name FROM t_student a  本次查询 a就代表t_student 就可以a.s_name

 

 

SQL查询底工

1、查询时增添常量列

数据库,俗称数据的库房。方便管理数据的软件(或程序)。

1.1、筛选掉重复数据 DISTINCT

SELECT DISTINCT s_name FROM t_student;

SELECT DISTINCT s_name,s_classid FROM t_student;   distinct 要重复列(s_name,s_classid卡塔尔(英语:State of Qatar)的数量完全等同

 

1、单表查询

从数据库中查找数据 专门的工作的名目又叫做投影

中央查询语句布局

select 列 from 表

* 全体列不是富有别的东西

查询全部数据

例:SELECT * FROM t_studen

急需推行非常细的操作  加上条件筛选:查询id为2号的学习者音讯

SELECT * FROM t_student WHERE id=2;

筛选的实行步骤  

例:SELECT * FROM t_student WHERE id=2;

SELECT *          (3卡塔尔 再查询  筛选完后 小编最终投影的结果正是筛选后的结果,不是每行都呈现出来,展现行的多少是筛选后的多少  所以最终实践 select

FROM t_student    (1卡塔尔(英语:State of Qatar) 把整张表加到内部存款和储蓄器里面  把整张表找到后加到内存里面

WHERE id =2      (2卡塔尔(英语:State of Qatar) 筛选 因为一张表里面包车型地铁数量须求去做三个筛选,不想让每行都体现,那样就没意义了,所以要开展一个条件筛选

只投影有些列

SELECT id,s_name FROM t_student;  只投影结果,实际不是更改表数据,很五个人会吸引,其他列会不会废弃了

查询出来体现成普通话,比如s_name显示成学子姓名

 

 

 AS 增加小名  (列的小名卡塔尔(قطر‎

SELECT id,s_name AS "学子姓名"  FROM t_student;

表外号,当有几张表的时候,表的名字十分短,会给表加上小名

SELECT t_student.s_name FROM t_student  -- 可是在一张表中如此写t_student.s_name 未有此外意义

SELECT a.s_name FROM t_student a  本次查询 a就代表t_student 就可以a.s_name

 

 

  要求: 在询问student表时增添一个班级列,内容为“java就业班”

2.4 MySQL入门

1.2、选用操作:写筛选典型的方法:

 

还要  and 也得以写成&&

SELECT * FROM t_student WHERE id=2 AND s_name='李四' AND s_classid='二班'

SELECT * FROM t_student WHERE id=2 AND s_name='李四' && s_classid='二班'

 

抑或 or 也得以写成 ||

SELECT * FROM t_student WHERE s_classid='二班' OR id=1

SELECT * FROM t_student WHERE s_classid='二班' || id=1

 

节制操作BETWEEN……AND……(包蕴)

语法:select 列 from 表名 where 列名 between 值  and 值;

SELECT * FROM t_student WHERE age>=18 AND age<=25

SELECT * FROM t_student WHERE age BETWEEN 18 AND 25  -- 等同于上边大于等于 及小于等于

低于等于18和生机勃勃班,大于等于25和生龙活虎班

SELECT * FROM t_student WHERE age<=18  OR age>=25 AND s_classid='一班';

那条语句试行出来的结果是低于等于18的具备数据和当先等于25同不时间是意气风发班的数额

是因为and的预先级高于or的前期级

故而应当这么写:

SELECT * FROM t_student WHERE (age<=18  OR age>=25 ) AND s_classid='一班';

稍低于等于18和朝气蓬勃班,大于等于25微风姿洒脱班   and优先级高于or 所以平常是独自用括号括起来

查询学子年纪为18 或许25 可能28

SELECT * FROM t_student WHERE age=18 OR age=25 OR age=28

 

in 操作  

简化下面的这种状态  where 列 in(值1,值2,值3卡塔尔

SELECT * FROM t_student WHERE age IN(18,25,30)

 

not in 操作

值不是25的

SELECT * FROM t_student WHERE age NOT IN(25)

 

回去约束行数 limit

limit 数字=从第意气风发行数据起头 数两行

limit 数字n,数字m    从第n行数据初叶(跟数组下标总计方式相似卡塔尔 数m行  跟字符串substr相通

SELECT * FROM t_student LIMIT 2

SELECT * FROM t_student LIMIT 2,2

回去第二行未来有所行  第2个参数丰硕大  超过也只会回去到最后风华正茂行甘休  

SELECT * FROM t_student LIMIT 2,100  

回去多少行   应用处景?  一些网址数量相当多时,要出新分页

 

1.1、筛选掉重复数据 DISTINCT

SELECT DISTINCT s_name FROM t_student;

SELECT DISTINCT s_name,s_classid FROM t_student;   distinct 要重复列(s_name,s_classid卡塔尔(قطر‎的数据完全一致

 

  SELECT id,NAME,gender,age,'java就业班' AS '年级'  FROM student;

1)到mysql官方网站下载。

1.3、模糊查询 

 

% 不限量字符

语法:select * from 表名 where 字段 like ‘x%’;

找全体姓张的上学的小孩子

SELECT * FROM t_student WHERE s_name='张三'      = 全相配 不会帮您活动模糊查询

SELECT * FROM t_student WHERE s_name LIKE '张%'  like % 不约束字符(0-N个字符卡塔尔(قطر‎的模糊查询

SELECT * FROM t_student WHERE s_name LIKE '%张%'  like % 能够查到含有张 如 *张*

SELECT * FROM t_student WHERE s_name LIKE '%张  like % 可以查到张,以张结尾, 可是无法是张**

 

占位符 _(下划线)   一个下划线代表一个字符

找全体姓张的学子,並且名字长度为多个字

SELECT * FROM t_student WHERE s_name LIKE '张__'    like _ 约束字符数的模糊查询  一个下划线代表三个字符

查询年纪为空的学习者音信

SELECT * FROM t_student WHERE age=""        ''”代表为空白的值

 

空值 is null

SELECT * FROM t_student WHERE age IS NULL    代表空值  未有输入数据

 

不是空 is not null

SELECT * FROM t_student WHERE age IS NOT NULL

地点的操作 投影出来的事物 跟我们的表数据(输入顺序卡塔尔国中是大器晚成致的顺序,比如想让它以

 

排序   order by           升序 ASC 降序 desc

年龄大小排序

SELECT * FROM t_student OPRADODEENCORE BY age  -- 默许是升序

SELECT * FROM t_student ORDER BY age DESC  -- 降序

SELECT * FROM t_student ORDER BY age ASC  -- 升序

多于三个法则的排序

SELECT * FROM t_student ORDER BY age ASC,id ASC     会先让age排序,

接下来即使age有四个风度翩翩律,再让id排序age的种种,平时不会全部虚构,唯有当两条数据黄金时代致,才考虑第叁个标准

 

1.2、接收操作:写筛选标准的法门:

 

再正是  and 也足以写成&&

SELECT * FROM t_student WHERE id=2 AND s_name='李四' AND s_classid='二班'

SELECT * FROM t_student WHERE id=2 AND s_name='李四' && s_classid='二班'

 

或许 or 也得以写成 ||

SELECT * FROM t_student WHERE s_classid='二班' OR id=1

SELECT * FROM t_student WHERE s_classid='二班' || id=1

 

范围操作BETWEEN……AND……(包罗)

语法:select 列 from 表名 where 列名 between 值  and 值;

SELECT * FROM t_student WHERE age>=18 AND age<=25

SELECT * FROM t_student WHERE age BETWEEN 18 AND 25  -- 等同于上边大于等于 及小于等于

稍差于等于18和豆蔻年华班,大于等于25和风流洒脱班

SELECT * FROM t_student WHERE age<=18  OR age>=25 AND s_classid='一班';

那条语句推行出来的结果是自轻自贱等于18的持有数据和不仅等于25还即使生机勃勃班的多少

是因为and的先行级高于or的事情发生以前级

为此理应如此写:

SELECT * FROM t_student WHERE (age<=18  OR age>=25 ) AND s_classid='一班';

稍差于等于18和大器晚成班,大于等于25和生机勃勃班   and优先级高于or 所以常常是独立用括号括起来

询问学子年纪为18 恐怕25 可能28

SELECT * FROM t_student WHERE age=18 OR age=25 OR age=28

 

in 操作  

简化下边包车型的士这种状态  where 列 in(值1,值2,值3卡塔尔

SELECT * FROM t_student WHERE age IN(18,25,30)

 

not in 操作

值不是25的

SELECT * FROM t_student WHERE age NOT IN(25)

 

回去约束行数 limit

limit 数字=从第黄金年代行数据开首 数两行

limit 数字n,数字m    从第n行数据起初(跟数组下标总括办法相似卡塔尔(英语:State of Qatar) 数m行  跟字符串substr相似

SELECT * FROM t_student LIMIT 2

SELECT * FROM t_student LIMIT 2,2

回去第二行将来全体行  第2个参数充足大  超过也只会回到到终极大器晚成行甘休  

SELECT * FROM t_student LIMIT 2,100  

回到多少行   应用处景?  一些网址数量比较多时,要现身分页

 

 2、 查询时合併列

2)安装mysql软件

1.4、聚合函数

 

计数 count(列)

语法:select count(列) as ‘总数’ from 表名 where **条件**  -------日常在计数的时候都会给取个小名

Count 总计时不含有没有值的项

总结年龄在20岁的食指

例:SELECT COUNT(*) FROM t_student  WHERE age=20

 

求和 sum(列)

语法:select sum(列) from 表名

例:SELECT SUM(age) FROM t_student

 

平均 avg

语法:(1)select sun(列)/count(*) from 表名

例:SELECT SUM(age)/COUNT(*) FROM t_student

(2卡塔尔(英语:State of Qatar)select avg(列卡塔尔(英语:State of Qatar) from 表名     -------暗许不包蕴空

例:SELECT AVG(age) FROM t_student

(3卡塔尔(英语:State of Qatar)Select avg(ifnull(列,0卡塔尔(قطر‎卡塔尔国 from 表名   -----假设是空数据,补成0在求平均

例:SELECT AVG(IFNULL(age,0)) FROM t_student

 

最大值、最小值

语法:select max(列),min(列) from 表名

例:SELECT MAX(age),MIN(age) FROM t_student

 

分组 group by

语法:select 列名 ,count(*卡塔尔(قطر‎ from 表名 group by 须求分组的列名   (必得和前面包车型大巴列相关联)

select 列名 ,count(*卡塔尔 from 表名 group by 必要分组的列名 having 条件

例:查询每风姿浪漫班的人头

SELECT s_classid,COUNT(*) FROM t_student GROUP BY s_classid;

呈现10岁(where)的总人口超越2的班级的一条数据

SELECT s_classid,COUNT(*) FROM t_student WHERE age=10 GROUP BY s_classid HAVING(COUNT(*)>2);

施行步骤:

SELECT s_classid,COUNT(*)       -- 4 投影

FROM t_student                           -- 1 把表加载到内部存储器

WHERE age=10                            -- 2 筛选  

GROUP BY s_classid                    -- 3分组

HAVING(COUNT(*卡塔尔(英语:State of Qatar)>2卡塔尔(قطر‎                   -- 5 二回筛选,首先要赢得第三次的结果 才得以开展筛选

                                                     -- having跟where都是筛选规范,where是分组前,因为分组前未有实行聚合函数

                                                     -- having是在分组后,只可以用做聚合函数的过滤

 

体现10岁(where)的人数超越1的班级何况根据人数排序

SELECT s_classid,COUNT(*) FROM t_student WHERE age=10 GROUP BY s_classid HAVING(COUNT(*)>=1) ORDER BY COUNT(*)  limit 1

实行步骤:

SELECT s_classid,COUNT(*)       -- 4 投影

FROM t_student                           -- 1 把表加载到内部存储器

WHERE age=10                            -- 2 筛选  

GROUP BY s_classid                    -- 3 分组

HAVING(COUNT(*卡塔尔国>=1卡塔尔国                 -- 5 三遍筛选 首先要博得第一遍的结果 才方可扩充筛选

ORDER BY COUNT(*卡塔尔(قطر‎ DESC        -- 6 贰遍分组

LIMIT 1                                         -- 7 节制行数 确定是您实行完今后最终的结果的 行数   

                                                    -- 那7步顺序万万不可能搞错

 

1.3、模糊查询 

 

% 不限量字符

语法:select * from 表名 where 字段 like ‘x%’;

找全体姓张的学习者

SELECT * FROM t_student WHERE s_name='张三'      = 全相称不会帮你活动模糊查询

SELECT * FROM t_student WHERE s_name LIKE '张%'  like % 不约束字符(0-N个字符卡塔尔的模糊查询

SELECT * FROM t_student WHERE s_name LIKE '%张%'  like % 能够查到含有张 如 *张*

SELECT * FROM t_student WHERE s_name LIKE '%张  like % 能够查到张,以张结尾, 不过无法是张**

 

占位符 _(下划线)   叁个下划线代表四个字符

找全部姓张的学员,何况名字长度为多少个字

SELECT * FROM t_student WHERE s_name LIKE '张__'    like _ 约束字符数的混淆查询  一个下划线代表二个字符

询问年纪为空的学习者消息

SELECT * FROM t_student WHERE age=""        ''”代表为空白的值

 

空值 is null

SELECT * FROM t_student WHERE age IS NULL    代表空值  没有输入数据

 

不是空 is not null

SELECT * FROM t_student WHERE age IS NOT NULL

上边的操作 投影出来的东西 跟我们的表数据(输入顺序卡塔尔中是同风度翩翩的顺序,比方想让它以

 

排序   order by           升序 ASC 降序 desc

年纪大小排序

SELECT * FROM t_student OHavalDEPRADO BY age  -- 默许是升序

SELECT * FROM t_student ORDER BY age DESC  -- 降序

SELECT * FROM t_student ORDER BY age ASC  -- 升序

多于三个口径的排序

SELECT * FROM t_student ORDER BY age ASC,id ASC     会先让age排序,

接下来意气风发旦age有四个风流浪漫律,再让id排序age的种种,日常不会全部思谋,独有当两条数据豆蔻梢头致,才构思第四个规格

 

  -- 要求: 查询每种学员的servlet和jsp的总成绩

3)使用登陆验证是或不是成功

2、多表查询

 

1.4、聚合函数

 

计数 count(列)

语法:select count(列) as ‘总数’ from 表名 where **条件**  -------通常在计数的时候都会给取个小名

Count 总结时不带有未有值的项

算算年龄在20岁的人数

例:SELECT COUNT(*) FROM t_student  WHERE age=20

 

求和 sum(列)

语法:select sum(列) from 表名

例:SELECT SUM(age) FROM t_student

 

平均 avg

语法:(1)select sun(列)/count(*) from 表名

例:SELECT SUM(age)/COUNT(*) FROM t_student

(2卡塔尔(英语:State of Qatar)select avg(列卡塔尔(قطر‎ from 表名     -------暗中认可不分包空

例:SELECT AVG(age) FROM t_student

(3卡塔尔(英语:State of Qatar)Select avg(ifnull(列,0卡塔尔国卡塔尔国 from 表名   -----如若是空数据,补成0在求平均

例:SELECT AVG(IFNULL(age,0)) FROM t_student

 

最大值、最小值

语法:select max(列),min(列) from 表名

例:SELECT MAX(age),MIN(age) FROM t_student

 

分组 group by

语法:select 列名 ,count(*学习笔记单表,知了堂学习笔记。卡塔尔(英语:State of Qatar) from 表名 group by 必要分组的列名   (必得和前边的列相关联)

select 列名 ,count(*卡塔尔(قطر‎ from 表名 group by 要求分组的列名 having 条件

例:查询每朝气蓬勃班的食指

SELECT s_classid,COUNT(*) FROM t_student GROUP BY s_classid;

体现10岁(where)的人头大于2的班级的一条数据

SELECT s_classid,COUNT(*) FROM t_student WHERE age=10 GROUP BY s_classid HAVING(COUNT(*)>2);

实行步骤:

SELECT s_classid,COUNT(*)       -- 4 投影

FROM t_student                           -- 1 把表加载到内部存款和储蓄器

WHERE age=10                            -- 2 筛选  

GROUP BY s_classid                    -- 3分组

HAVING(COUNT(*卡塔尔(英语:State of Qatar)>2卡塔尔国                   -- 5 叁回筛选,首先要收获第一遍的结果 技术够进行筛选

                                                     -- having跟where都以筛选标准,where是分组前,因为分组前未有实行聚合函数

                                                     -- having是在分组后,只好用做聚合函数的过滤

 

展现10岁(where)的人口大于1的班级並且依据人数排序

SELECT s_classid,COUNT(*) FROM t_student WHERE age=10 GROUP BY s_classid HAVING(COUNT(*)>=1) ORDER BY COUNT(*)  limit 1

施行步骤:

SELECT s_classid,COUNT(*)       -- 4 投影

FROM t_student                           -- 1 把表加载到内部存款和储蓄器

WHERE age=10                            -- 2 筛选  

GROUP BY s_classid                    -- 3 分组

HAVING(COUNT(*卡塔尔国>=1卡塔尔国                 -- 5 二回筛选首先要收获第叁次的结果 才方可扩充筛选

ORDER BY COUNT(*卡塔尔(قطر‎ DESC        -- 6 二回分组

LIMIT 1                                         -- 7 限制行数 鲜明是你施行完之后最后的结果的 行数   

                                                    -- 那7步顺序千万不可搞错

 

  SELECT id,NAME,(servlet jsp) AS '总成绩' FROM student;

SQL语言:和数据库人机联作的语言,进行数据库管理的语言。(Structure Query Lanuage,结构化查询语言)

2.1、相关子查询

子查询必得重视于主查询 ,子查询单独运行会报错,注重于主查询的结果

 

select嵌套  只可以回去单行单列

老是主查询 推行三遍,子查询也会实践三回,最后施行N 1次,功用低下,假诺主查询未有提供数据,子查询不可能实践

语法:select 列名1,列名2,(select 列名 from 表名 where 条件) from 表名

例:SELECT s_name,(SELECT c_name FROM t_class WHERE c_id=s_classid) FROM t_student

 

2、多表查询

 

  -- 注意:归拢列只可以合併数值类型的字段

mysql -u root -p  回车  -> 输入密码(登陆root账户的mysql服务器)

2.2 非相关子查询

from 嵌套   务须要给嵌套的子查询表起外号,可回到多行多列数据

子查询对主查询未有依赖  子查询只会实行叁遍,只会在from的时候才实践,品质较高,能独立运维,只是给主查询提供标准值

语法:select 列名1 ,列名2,.... from (select 列名 from 表名 [where 条件] )  [where 条件]

例:查询性别为女 並且姓名称叫张三的

SELECT * FROM (SELECT * FROM t_student WHERE s_sex='女') AS t1

WHERE t1.s_name='张三';

 

where 嵌套  实施2次,子查询能够单独运转,不注重主查询,只是给主查询提供规范值

语法:select 列名1,列名2, .... from 表名 where 列名 关系运算符 (select 列明 from 表名 where 条件卡塔尔国

例:查询风华正茂班的上学的小孩子有怎么着

SELECT * FROM t_student WHERE s_classid=(SELECT c_id FROM t_class WHERE c_name='一班')

 

in 多条值

例:查询风姿浪漫班的学员有哪些

语法:select 列名1,列名2,.... from 表名 where 列名 in (select 列明 from 表名 where 条件)

SELECT * FROM t_student WHERE s_classid in (SELECT c_id FROM t_class WHERE c_name='一班')

any 和all 必得跟子查询 不能独立行使

 

all 任意值

语法:select 列名1,列名2, .... from 表名 where 列名 关系运算符 all (select 列明 from 表名 where 条件卡塔尔(英语:State of Qatar)

例:查询分数高于大肆二个张三的具备学生 -- 使用all

SELECT * FROM t_student WHERE s_score>ALL(SELECT s_score FROM t_student WHERE s_name='张三')

 

any

语法:select 列名1,列名2, .... from 表名 where 列名 关系运算符 any (select 列明 from 表名 where 条件卡塔尔

例:查询分数高于任意八个张三的有所学子

SELECT * FROM t_student WHERE s_score>ANY( SELECT s_score FROM t_student WHERE s_name='张三');

还足以选拔MIN

SELECT * FROM t_student WHERE s_score>(SELECT MIN(s_score) FROM t_student WHERE s_name='张三');

子查询不管怎么变,都独有两种,在where中嵌套叁个,form 一个,select多少个

2.1、相关子查询

子查询必需依附于主查询 ,子查询单独运营会报错,正视于主查询的结果

 

select嵌套  只好回去单行单列

历次主查询 实施三回,子查询也会奉行二回,最后实施N 1次,成效低下,如果主查询未有提供数据,子查询不可能实行

语法:select 列名1,列名2,(select 列名 from 表名 where 条件) from 表名

例:SELECT s_name,(SELECT c_name FROM t_class WHERE c_id=s_classid) FROM t_student

 

  SELECT id,(NAME servlet) FROM student;

show databases;(查看全数的数据库

2.2 非相关子查询

from 嵌套   总得要给嵌套的子查询表起别称,可重回多行多列数据

子查询对主查询未有依据 子查询只会实行二遍,只会在from的时候才实行,质量较高,能独立运作,只是给主查询提供规范值

语法:select 列名1 ,列名2,.... from (select 列名 from 表名 [where 条件] )  [where 条件]

例:查询性别为女 並且姓名字为张三的

SELECT * FROM (SELECT * FROM t_student WHERE s_sex='女') AS t1

WHERE t1.s_name='张三';

 

where 嵌套  实行2次,子查询能够单独运维,不注重主查询,只是给主查询提供条件值

语法:select 列名1,列名2, .... from 表名 where 列名 关系运算符 (select 列明 from 表名 where 条件卡塔尔国

例:查询生龙活虎班的学子有哪些

SELECT * FROM t_student WHERE s_classid=(SELECT c_id FROM t_class WHERE c_name='一班')

 

in 多条值

例:查询后生可畏班的学习者有咋样

语法:select 列名1,列名2,.... from 表名 where 列名 in (select 列明 from 表名 where 条件)

SELECT * FROM t_student WHERE s_classid in (SELECT c_id FROM t_class WHERE c_name='一班')

any 和all 必得跟子查询 不可能独立行使

 

all 任意值

语法:select 列名1,列名2, .... from 表名 where 列名 关系运算符 all (select 列明 from 表名 where 条件卡塔尔国

例:查询分数高于猖獗一个张三的具有学员  -- 使用all

SELECT * FROM t_student WHERE s_score>ALL(SELECT s_score FROM t_student WHERE s_name='张三')

 

any

语法:select 列名1,列名2, .... from 表名 where 列名 关系运算符 any (select 列明 from 表名 where 条件卡塔尔

例:查询分数高于大肆一个张三的具备学员

SELECT * FROM t_student WHERE s_score>ANY( SELECT s_score FROM t_student WHERE s_name='张三');

还足以行使MIN

SELECT * FROM t_student WHERE s_score>(SELECT MIN(s_score) FROM t_student WHERE s_name='张三');

子查询不管怎么变,都唯有二种,在where中嵌套四个,form 一个,select二个

SQL 查询 根基 1 、单表查询 从数据库中寻觅数据 职业的名目...

3、 查询时去除重复记录(DISTINCT卡塔尔

information_schema |    -- mysql元数据,底子数据

  -- 要求: 查询学子的性别     男 女

| mysql              |    —mysql配置 数据库,在那之中储存客商消息。(客户名和密码,权限管理)

  SELECT DISTINCT gender FROM student;

| performance_schema |    --mysql数据库软件的周转数据,日志新闻,品质数据

  -- 另风流罗曼蒂克种语法

| test              |    --测量试验数据库。空的

  SELECT DISTINCT(gender) FROM student;

create database day15      -- 钦定暗中认可字符集创设数据库

4、条件查询

-> default character set 

  -- 须要: 查询jsp成绩超越等于75,且低于等于90分的上学的小孩子

-> ;(create 数据库实现不加分号,回车加钦定字符集)

  SELECT * FROM student WHERE jsp>=75 AND jsp<=90;

  -- 另三个语法

show create database day15; 查看数据库的默许字符集

  SELECT * FROM student WHERE jsp BETWEEN 75 AND 90; -- (包前包后卡塔尔(英语:State of Qatar)

drop database day15;删除数据库

5、模糊查询:模糊条件: like

alter database day15 default character set gbk;校订数据库

  -- 日常接收以下替换标识:

use  数据库名

  -- % : 表示大五个字符

show tables;查看全体表

  -- _ : 表示叁个字符

create table student( 创建表

  -- 需求: 查询姓‘张’的学生

-> sid int,

  SELECT * FROM student WHERE NAME LIKE '张%';

-> sname varchar(20),

6、 聚合查询(使用聚合函数的询问)

-> sage int

  -- 常用的聚合函数: sum(卡塔尔(英语:State of Qatar)  avg(卡塔尔  max(卡塔尔  min(卡塔尔国  count(卡塔尔国

-> );

  -- 必要:查询学子的servlet的总成绩 (sum(卡塔尔 :求和函数卡塔尔国

desc student;查看表结构

  SELECT SUM(servlet卡塔尔(英语:State of Qatar) AS 'servlet的总战表' FROM student;

drop table student;删除表

 

修改表

alter table student add column sgender varchar(2卡塔尔;加多字段

alter table student drop column sgender; 删除字段

alter table student modify column remark varchar(100卡塔尔国;改善字段类型

alter table student change column sgender gender varchar(2卡塔尔(英语:State of Qatar);改良字段名称

alter table student rename to teacher;修改表名称

  -- 注意:count()函数总计的数码不含有null的数码

增加和删除改数据库

-- 注意不能够少或多字段值

-- INSERT INTO student VALUES(2,'李四','女');

-- 插入部分字段

INSERT INTO student(id,NAME) VALUES(2,'李四');

1.2 更正数据

-- 改善全体多少(建议少用)

UPDATE student SET gender='女';

-- 带条件的修正(推荐应用)

UPDATE student SET gender='男' WHERE id=1; -- 纠正id为1的学子,修改性别为男

-- 改过七个字段,注意: SET 字段名=值,字段名=值,....

UPDATE student SET gender='男',age=30 WHERE id=2;

-- 1.3 删除数据

-- 删除全数数据(提出少用)

DELETE FROM student;

-- 带条件的删除(推荐应用卡塔尔(英语:State of Qatar)

DELETE FROM student WHERE id=2;

--  另生机勃勃种办法

-- delete from: 能够全表删除      1卡塔尔(قطر‎可以带条件删除  2)只可以删除表的数额,无法删除表的自律    3卡塔尔使用delete from删除的多少年足球以回滚(事务)

-- truncate table: 能够全表删除  1)不能够带条件删除 2)就可以以删除表的数额,也能够删除表的约束 3)使用truncate table删除的多寡无法回滚(SQL数据库优化能够用它来)

TRUNCATE TABLE student;

  -- 使用count计算表的记录数,要利用不含有null值的字段

查询数据库

select ID,name,gender from student;询问钦定列

select id AS ‘编号’,name AS ‘姓名’ from student AS s; 钦定列的别称(钦命后得以用小名访谈也得以用原名称访谈)点名表别称,无法用单引号,无法用汉字,在多表查询是断断续续食用表的小名。

2.4 查询时增多常量列

-- 要求: 在询问student表时加多叁个班级列,内容为“java就业班”

SELECT id,NAME,gender,age,'java就业班' AS '年级'  FROM student;

2.5 查询时合併列

-- 需要: 查询各种学子的servlet和jsp的总成绩

SELECT id,NAME,澳门新浦京娱乐场网站,(servlet jsp) AS '总成绩' FROM student;

-- 小心:归拢列只可以合併的数量值类型的字段

SELECT id,(NAME servlet) FROM student;

- 2.6 查询时去除重复记录( distinct卡塔尔国 

-- 需要: 查询学子的性别    男 女

SELECT DISTINCT gender FROM student;()(distinct做要紧字来用)

-- 另生龙活虎种语法

SELECT DISTINCT(gender卡塔尔(قطر‎ FROM student;(distinct做函数来用)

-- 需要: 查询学子所在的地区

SELECT DISTINCT address FROM student;()

  SELECT COUNT(age) FROM student;

标准化查询(where)

-- 2.7.1 逻辑条件: and(与卡塔尔(英语:State of Qatar)    or(或卡塔尔(英语:State of Qatar)

-- 要求: 查询id为2,且姓名称为李四的学员

SELECT * FROM student WHERE id=2 AND NAME='李四'; -- 交集

-- 供给: 查询id为2,或姓名叫张三的学子

SELECT * FROM student WHERE id=2 OR NAME='张三'; -- 并集

-- 2.7.2 相比较标准: >  <  >=  <=  =  <>(不等于卡塔尔(英语:State of Qatar)    between and (等价于>= 且 <=卡塔尔(英语:State of Qatar)

-- 需要: 查询servlet成绩抢先70分的学员

SELECT * FROM student WHERE servlet>70;

-- 要求: 查询jsp战表超越等于75,且小于等于90分的学员

SELECT * FROM student WHERE jsp>=75 AND jsp<=90;

-- 另两个语法

SELECT * FROM student WHERE jsp BETWEEN 75 AND 90; -- (包前包后卡塔尔国

SELECT * FROM student WHERE gender<>'男';

2.7.3 判空条件(null 空字符串卡塔尔(قطر‎:  is null / is not null / =''  / <>''

-- 须要: 查询地址为空的学员(蕴含null和空字符串)

-- null vs  空字符串

-- null:表示尚无值

-- 空字符串:有值的!

-- 判断null

SELECT * FROM student WHERE address IS NULL ;

-- 剖断空字符串

SELECT * FROM student WHERE address='';

SELECT * FROM student WHERE address IS NULL OENVISION address=''; -- (包蕴null和空字符串)

-- 须要: 查询有地点的学习者(不包蕴null和空字符串卡塔尔(英语:State of Qatar)

SELECT * FROM student WHERE address IS NOT NULL AND address<>'';

-- 2.7.4 模糊条件: like

-- 平时选拔以下替换标志:

-- % : 表示任性个字符

-- _ : 表示一个字符

-- 需求: 查询姓‘张’的学生

SELECT * FROM student WHERE NAME LIKE '李%';

-- 必要: 查询姓‘李’,且姓名唯有多少个字的学子

SELECT * FROM student WHERE NAME LIKE '李_';

-- 2.8 聚合查询(使用聚合函数的询问)

-- 常用的聚合函数: sum(卡塔尔(قطر‎  avg(卡塔尔(قطر‎  max(卡塔尔  min(卡塔尔(英语:State of Qatar)  count(卡塔尔

-- 供给:查询学生的servlet的总成绩 (sum() :求和函数卡塔尔(英语:State of Qatar)

SELECT SUM(servlet卡塔尔(英语:State of Qatar) AS 'servlet的总成绩' FROM student;

-- 要求: 查询学子的servlet的平均分

SELECT AVG(servlet卡塔尔(قطر‎ AS 'servlet的平均分' FROM student;

-- 必要: 查询当前servlet最高分

SELECT MAX(servlet) AS '最高分' FROM student;

-- 需要: 查询最低分

SELECT MIN(servlet) AS '最低分' FROM student;

-- 要求: 总计当前有多少学子(count(字段卡塔尔(قطر‎卡塔尔(英语:State of Qatar)

SELECT COUNT(*) FROM student;

SELECT COUNT(id) FROM student;

-- 注意:count()函数总结的数据不分包null的数量

-- 使用count总括表的记录数,要接收不分包null值的字段

SELECT COUNT(age) FROM student;

2.9 分页查询(limit 开头行,查询几行)

-- 开始行从0领头

-- 分页:当前页  每页展现多少条

-- 分页查询当前页的数据的sql: SELECT * FROM student LIMIT (当前页-1)*每页显示多少条,每页突显多少条;

-- 须求: 查询第1,2条笔录(第1页的多寡)

SELECT * FROM student LIMIT 0,2;

-- 查询第3,4条记下(第2页的数目)

SELECT * FROM student LIMIT 2,2;

-- 查询第5,6条记下(第3页的多少)

SELECT * FROM student LIMIT 4,2;

-- 查询第7,8条记录 (未有记录不显得卡塔尔国

SELECT * FROM student LIMIT 6,2;

- 2.10 查询排序(order by )

-- 语法 :order by 字段 asc/desc

-- asc: 顺序,正序。数值:依次增加,字母:自然顺序(a-z)

-- desc: 倒序,反序。数值:依次减少,字母:自然反序(z-a卡塔尔(英语:State of Qatar)

-- 暗中同意情形下,根据插入记录顺序排序

SELECT * FROM student;

-- 需要: 依据id顺序排序

SELECT * FROM student ORDER BY id ASC;

SELECT * FROM student O大切诺基DE兰德君越 BY id; -- 私下认可正序

SELECT * FROM student ORDER BY id DESC;-- 反序

-- 注意:几个排序条件

-- 需求: 按照servlet正序,按照jsp的倒序

SELECT * FROM student ORDER BY servlet ASC,jsp DESC;

2.11 分组查询(group by卡塔尔(قطر‎

-- 须求: 查询男女的人数

-- 预期结果:

--  男  3

--- 女  2

-- 1) 把学子依据性别分组(GROUP BY gender卡塔尔(英语:State of Qatar)

-- 2卡塔尔国 总计每组的人口(COUNT(*))

SELECT gender,COUNT(*) FROM student GROUP BY gender;

2.12 分组查询后筛选

-- 必要: 查询总人数当先2的性别

-- 1卡塔尔(英语:State of Qatar) 查询男女的人数

-- 2)筛选出人数超越2的记录(having卡塔尔(英语:State of Qatar)

--- 注意: 分组以前条件使用where关键字,分组之后条件使用having关键字

SELECT gender,COUNT(*) FROM student WHERE GROUP BY gender HAVING COUNT(*)>2;

7、分页查询(limit 起先行,查询几行)

  -- 最早行从0初叶

  -- 分页:当前页  每页展现多少条

  -- 分页查询当前页的数量的sql: SELECT * FROM student LIMIT (当前页-1)*每页突显多少条,每页展现多少条;

8、查询排序(order by )

  -- 语法 :order by 字段 asc/desc

9、分组查询,分组后筛选取having

  9.1总括每组的人口(COUNT(*))

  SELECT gender,COUNT(*) FROM student GROUP BY gender;

  9.2筛选出人数大于2的记录(having卡塔尔国

  --- 注意: 分组在此以前条件使用where关键字,分组以前条件使用having关键字

  SELECT gender,COUNT(*) FROM student WHERE GROUP BY gender HAVING COUNT(*)>2;

 10、关联合检查询(多表查询)

法规:(1)首先明确查哪个表(2)鲜明字段(3)鲜明连接条件(连接条件数量=表数量-1)

  10.1内连接查询   

    SELECT empName,deptName       -- 2)分明怎么样哪些字段

             FROM employee,dept    -- 1)分明询问哪些表

             WHERE employee.deptId=dept.id  -- 3)表与表之直接连条件

    第三种写法:    

    SELECT empName,deptName

             FROM employee

             INNER JOIN dept

             ON employee.deptId=dept.id;

  10.2左[外]连接查询: 使用侧边表的数目去相称左侧表的数码,借使契合连接条件的结果则显得,假诺不合乎连接条件则展示null。

  -- 供给: 查询种种机关的职工

    SELECT d.deptName,e.empName

           FROM dept d

           LEFT OUTER JOIN employee e

           ON d.id=e.deptId;

 

本文由澳门新浦京娱乐场网站发布于数据库,转载请注明出处:学习笔记单表,知了堂学习笔记