百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

sql数据命令Ⅱ(sql命令语句)

toyiye 2024-08-29 00:27 4 浏览 0 评论

各个关键字的书写顺序

select 查询的字段信息 from 表名 where 普通字段条件 group by 分组字段名 having 聚合函数条件 order by 排序字段名 limit 跳过条数,请求条数;

select[distinct]   //查询[去重]
from   //需要从哪个数据表检索数据
join(如left join)   //关联
on  //关联关系
where  //条件
group by  //分组
having   //聚合函数条件
union  //合并
order by   //排序
limit  //分页

子查询(嵌套查询)

//查询工资大于2号部门平均工资的员工信息
select avg(sal) from emp where dept_id=2;select * from emp where sal>(select avg(sal) frziom emp where dept_id=2);
//查询工资高于程序员最高工资的员工信息
select max(sal) from emp where job="程序员";select * from emp where sal>(select max(sal) from emp where job="程序员");
//查询工资最高的员工信息
select max(sal) from emp;select * from emp where sal=(select max(sal) from emp);
//查询和孙悟空相同工作的员工信息
select job from emp where name="孙悟空";select * from emp where job=(select job from 
  emp where name="孙悟空") and name!="孙悟空";

关联关系 (指创建的表和表之间存在的业务关系)

有哪几种关系?

  • 一对一: 有AB两张表,A表中的一条数据对应B表中的一条数据, 同时B表中的一条数据也对应A表中的一条数据
  • 一对多:有AB两张表,A表中的一条数据对应B表中的多条数据, 同时B表中的一条数据对应A表中的一条数据

多对多:有AB两张表,A表中的一条数据对应B表中的多条数据, 同时B表中的一条数据也对应A表中的多条数据

表和表之间如何建立关系 ,通过外键字段建立关系

  1. 一对一: 在任意表中添加一个建立关系的字段指向另外一张表的主键 .
  2. 一对多: 在多的表中添加建立关系的字段(外键) 指向另外一张表的主键 .
  3. 多对多: 需要创建一个单独的关系表,里面至少包含两个字段分别指向另外两个表的主键.

关联查询

  1. 同时查询多张表数据的查询方式称为关联查询
  2. 关联查询包括: 等值链接, 内连接外连接
  • 关联查询之等值链接

格式: select * from A,B where 关联关系

//查询工资高于2000的员工姓名和对应的部门名 
select e.name,d.name,salfrom emp e,dept d where e.dept_id=d.id and sal>2000;
  • 关联查询之内连接

格式: select * from A join B on 关联关系

//查询工资高于2000的员工姓名和对应的部门名 
select e.name,d.name,sal from emp e join dept d on e.dept_id=d.id where sal>2000;
  • 关联查询之外连接
  1. 等值链接和内连接查询到的都是两张表的交集数据
  2. 外连接查询的是一张表的全部和另外一张表的交集数据

格式: select * from A left/right join B on 关联关系

//查询所有员工姓名和对应的部门名
select e.name,d.name from emp e left join dept d on e.dept_id=d.id;
//查询所有部门的名称,地点和对应的员工姓名和工资 
select d.name,loc,e.name,salfrom emp e right join dept d on e.dept_id=d.id;
  • INNER JOIN:如果表中有至少一个匹配,则返回行
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN:只要其中一个表中存在匹配,则返回行

INNER JOIN 关键字

在表中存在至少一个匹配时返回行【注】INNER JOIN 与 JOIN 是相同的。

LEFT JOIN 关键字

从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL【注】在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN


RIGHT JOIN 关键字

从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。【注】在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。

FULL OUTER JOIN 关键字

  1. FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
  2. FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

【注意】MySQL中不支持 FULL OUTER JOIN

如何查询多对多表中的数据

//查询每个老师对应的学生
select t.name,s.name from teacher t join t_s ts on t.id=ts.tid join student s on s.id=ts.sid;
//查询苍老师的学生都有谁?
select s.name from teacher t join t_s ts on t.id=ts.tid join student s on s.id=ts.sid where t.name="老师";
//查询小明的老师是谁?
select t.name from teacher t join t_s ts on t.id=ts.tid join student s on s.id=ts.sid where s.name="小明";

关联查询总结:

  1. 如果需要同时查询多张表的数据使用关联查询
  2. 关联查询包括:等值链接,内连接和外连接
  3. 等值链接和内连接查询的是两个表的交集数据, 推荐使用内连接
  4. 如果需要查询一张表的全部和另外一张表的交集时 使用外连接,只需要掌握左外即可,因为表的位置可以交换

合并结果集(UNION)

  • UNION

下面的 SQL 语句从 “Websites” 和 “apps” 表中选取所有不同的country(只有不同的值

  • UNION ALL

下面的 SQL 语句使用 UNION ALL 从 “Websites” 和 “apps” 表中选取所有的country(也有重复的值

SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2; 

约束(constraint)

  1. SQL 约束用于规定表中的数据规则。
  2. 如果存在违反约束的数据行为,行为会被约束终止。
  3. 约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • PRIMARY KEY - NOT NULLUNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件。
  • DEFAULT - 规定没有给列赋值时的默认值。
CREATE TABLE Orders
(
Id int NOT NULL,//不能为空
OrderNo int NOT NULL,
P_Id int  DEFAULT '0', //默认值
PRIMARY KEY (O_Id), //主键
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) //外键
) ;

索引

CREATE INDEX 语句用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

  1. 您可以在表中创建索引,以便更加快速高效地查询数据。
  2. 用户无法看到索引,它们只能被用来加速搜索/查询。
  3. 【注】更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建引。
CREATE INDEX index_name ON table_name (column_name) ;

CREATE UNIQUE INDEX 语法

  1. 在表上创建一个唯一的索引。不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。
Creates a unique index on a table. Duplicate values are not allowed
//【注】用于创建索引的语法在不同的数据库中不一样。因此,检查您的数据库中创建索引的语法。


sql语句

//1)按天统计:
select DATE_FORMAT(start_time,'%Y%m%d') days,count(product_no) count from test group by days;
//2)按周统计:
select DATE_FORMAT(start_time,'%Y%u') weeks,count(product_no) count from test group by weeks;
//3)按?统计:
select DATE_FORMAT(start_time,'%Y%m') months,count(product_no) count from test group bymonths
//当年第一天:
SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY);
//当年最后一天:
SELECT concat(YEAR(now()),’-12-31’);
//当前week的第一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY);
//当前week的最后一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 5 DAY);
//前一week的第一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 8 DAY);
//前一week的最后一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 2 DAY);
//前两week的第一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 15 DAY);
//前两week的最后一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 9 DAY);
//当前month的第一天:
SELECT concat(date_format(LAST_DAY(now()),’%Y-%m-’),‘01’);
//当前month的最后一天:
SELECT LAST_DAY(now());
//前一month的第一天:
SELECT concat(date_format(LAST_DAY(now() - interval 1 month),’%Y-%m-’),‘01’);
//前一month的最后一天:
SELECT LAST_DAY(now() - interval 1 month);
//前两month的第一天:
SELECT concat(date_format(LAST_DAY(now() - interval 2 month),’%Y-%m-’),‘01’);
//前两month的最后一天:
SELECT LAST_DAY(now() - interval 2 month);
//当前quarter的第一天:
select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-3 month),’%Y-%m-’),‘01’);
//当前quarter的最后一天:
select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-1 month);

学习记录,如有侵权请联系删除

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码