当前位置:首页 » 编程语言 » sql表示例

sql表示例

发布时间: 2023-09-25 11:50:53

sql数据库查询语句例子

各位同学们好,我们今天继续来说,sql数据库。我们今天的文档中主要介绍了SQL查询语句、查询语句示例等。这里我给大家做了一个总结,有需要的同学可以参考一下。

首先,我们来了解一下SQL数据库组成基本:

查找Movies表里的Title字段:

查找ID小于5的电影的Title和Director的以下这些:

查看电影的总条数

以下查询语句是常用于班级统计的:

查询“001”课程比“002”课程成绩高的所有学生的学号:

查询平均成绩大于60分的同学的学号和平均成绩:

查询所有同学的学号、姓名、选课数、总成绩:

查询姓“李”的老师的个数:

查询没学过“叶平”老师课的同学的学号、姓名:

查询学过“001”并且也学过编号“002”课程的同学的学号、姓名:

查询学过“叶平”老师所教的所有课的同学的学号、姓名:

查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名:

查询所有课程成绩小于60分的同学的学号、姓名:

查询没有学全所有课的同学的学号、姓名:

好了,这就是关于sql数据库查询语句的基础了。我都替你们整理好了,感兴趣的同学收藏一来,需要用的时候直接拿起来用就可以了。我们今天就到这里,下期再见!

本篇文章使用以下硬件型号:联想小新Air15;系统版本:win10;软件版本:sqlserver2008。

② SQL实战新手入门:创建表

创建表

现在已经创建了一个数据库 接下来可以使用它来创建数据库中的各种对象 例如表 表是存储数据慧唤的地方 这是一个常识性的逻辑 但也是RDBMS分道扬镳的地方

拿笔者的冰箱为例 笔者在冰箱表面用小磁铁吸住了各种各样的东西 例如游览动物园后带回来的一些好玩的纪念品 友好的保险代理商赠送的日历 孩子所在学校的饮食菜单(以及查询学校考勤的电话号码) 购物列表 小狗的照片 孩子们的照片 订购比萨的热线电话等

可以将其视为笔者的一个私人数据库 只需要将各种东西粘贴在上面即可 文本 图片 日历等 相比之下 RDBMS更加特殊一些 它要求根据数据类型来对数据排序 第 章将详细地讨论数据类型 就目前而言 只需要关注最容易理解也是RDBMS最好处理的数据类型 文森腊本

就像前面的例子中创建数据库一样 创建一个表也是非常简单的 创建表时 需要指定表中各列的列名和数据类型

CREATE TABLE myLibrary (all_my_books VARCHAR( ))

上面的语句将ALL_MY_BOOKS列定义为字符串数据类型(关于数据类型的更多信息 请参见第 章) 并且定义该列可以容纳 个字符

读者或许已经想到 与上面的例子相比 CREATE TABLE语法还有更多的内容 对于任何一种RDBMS 完整的CREATE TABLE语法列表的长度将超过一页 精通这些选项要求读者具有高级SQL的知识 因此本书只是简要介绍一下CREATE TABLE的语法

在第 章中将会介绍 在创建了一个表之后 还可以从数据库中删除或修改表 SQL提供了对数据库对象的完全控制 可以创建 修改并销毁对象

试一此碧滑试在Microsoft SQL Server 中创建一个数据库

创建数据库通常是数据库管理员的工作 特别是在一个产品级的环境之中 有太多的选项需要权衡和考虑而不是让所有选项保留默认设置 然而对本书而言 只需要使用基本的语法即可 在Microsoft SQL Server中可以采用多种办法来创建数据库 毫无疑问使用SQL ServerManagement Studio Express是最简单的办法 下面列出了相应的操作步骤

( ) 确保SQL Server实例已经安装并处于运行状态(请参考附录B中的安装指南)

( ) 单击Microsoft SQL Server 菜单项 启动SQL Server Management Studio Express(在本练习中 假定SQL Server已经安装到了读者的本地计算机上 因此可以使用Windows

Authentication自动连接)

( ) 首先我们看到一个连接数据库服务器的提示屏幕 如果提示窗口中没有填入默认值 那么将服务器类型设置为Database Engine 将服务器名称设置为 SQLEXPRESS(如果按照附录B的指南完成了安装的话 否则从下拉列表中选择另外一个名称 该下拉列表中仅显示当前计算机上可见的SQL Server实例) 另外将身份验证设置为Windows Authentication

( ) 单击Connect按钮

( ) SQL Server Management Studio Express将显示一个带有多个窗格的窗口 对于这个练习 我们只需要关注位于窗口左上角的New Query按钮 它就在File菜单之下(如图 所示) 单击New Query按钮

( ) 在窗口的中部 将显示一个新的查询窗口 在该窗口中可以输入SQL命令

( ) 输入下面的SQL语句 创建一个数据库

CREATE DATABASE library;

( ) 单击位于上方工具栏中的Execute按钮 如图 所示

( ) 注意观察下方窗格的Messages选项卡中的消息 Command(s) pleted successfully

( ) 新创建的数据库将出现在左侧标题为Object Explorer的窗格的Databases列表之中 如图 所示 单击Databases节点之前的加号 就可以展开列表

示例说明

Microsoft SQL Server承担了创建数据库过程中的许多复杂工作 在后台 SQL Server将在计算机的硬盘(或者外部存储设备)上创建一系列的文件 在Windows注册表中创建数十个条目和特定于SQL Server的配置文件 它还将创建额外的多个支撑对象用于数据库操作(展开新创建数据库中的LIBRARY节点 就可以看到这些对象)

在该例子中 省略了所有的可选配置选项 使用所有选项的默认值来创建数据库 存储文件名称 位置 初始大小 排序规则等 尽管这并不是创建性能优化的数据库的最好办法(关于性能优化的内容请参见第 章) 但对于本书演示的目的来说已经足够了

返回目录 SQL实战新手入门

编辑推荐

Oracle索引技术

高性能MySQL

lishixin/Article/program/SQL/201311/16486

③ sql数据库多表查询(sql数据库多表查询示例)

可以有两种处理方法,1、两表先合并,后求和

select日期,sum(数值)as数值from

(select日期,金额薯局祥as数值fromA表

unionall

select日期,数量as数值fromB表)

groupby日期

2、先求和后合并,再求和

select日期,sum(数值)as数值from

(select日期,sum(金额)as数值fromA表groupby日期

unionall

select日期,sum(数量)as数值fromB表groupby日期)

groupby日期

对于“如果要实现总和的相乘、相除,或者相减得话,应该怎么写呢?”,你得提出明确需求,那后才能设计。

如果数搏是相乘、相除,或者相减,得有条件,还像上面,用日期关联,A表-B表,A表求和:select日期,sum(金额)as数值fromA表groupby日期

B表求和:select日期,sum(数量)as数值fromB表groupby日期

在执行A表-B表时,由于用日期关联,则某一日期对应的记录可能会产生三种情况:A表B表都有;A表有B表无;A表无B表有。

1、需要先找出所有日期,select日期fromA表

union

select日期fromB表

2、对于A表中所有数据以上表中日期为依据构造所有相关日期数据,如果有日期数据,则为原数腊桥据,否则为0。

selecta.日期as日期,casewhenb.数值isNULLthenb.数值else0endas数值

from

(select日期fromA表

union

select日期fromB表)a

leftjoin

(select日期,sum(金额)as数值fromA表groupby日期)b

ona.日期=b.日期

3、同样对于B表也如此。

4、2表相减即得。

selecta3.日期as日期,a3.数值-b3.数值as数值

from

(

selecta1.日期as日期,casewhenb1.数值isNULLthenb1.数值else0endas数值

from

(select日期fromA表

union

select日期fromB表)a1

leftjoin

(select日期,sum(金额)as数值fromA表groupby日期)b1

ona1.日期=b1.日期

)a3,(

selecta2.日期as日期,casewhenb2.数值isNULLthenb2.数值else0endas数值

from

(select日期fromA表

union

select日期fromB表)a2

leftjoin

(select日期,sum(金额)as数值fromB表groupby日期)b2

ona2.日期=b2.日期

)b3

wherea3.日期=b3.日期

当然,以上只是一种方法,还有其他方法也可以实现,尽供参考。

④ sql中引用一个表的查询结果作为条件来查询另一个表如何实现

sql中引用一个表的查询结果作为条件来查询另一个表称为sql嵌套查询。

简单子查询

示例:Copyselect name,age from person

where age >

( select age from person

where name = '孙权'

)

in嵌套查询

in关键字用于where子句中用来判断查询的表达式是否在多个值的列表中。返回满足in列表中的满足条件的记录。

示例:

select name from person

where countryid in

(

select countryid from country

where countryname = '魏国'

)

(4)sql表示例扩展阅读

子查询的语法规则

1、子查询的select查询总是使用圆括号括起来。

2、不能包括compute或for.browse子句。

3、如果同时指定top子句,则可能只包括order by子句。

4、子查询最多可以嵌套到32层。个别查询可能会不支持32层嵌套。

5、任何可以使用表达式的地方都可以使用子查询,只要它返回的是单个值。

6、如果某个表只出现在子查询中二不出现在外部查询中,那么该表的列就无法包含在输出中。

子查询的组成

1、包含标准选择列表组件的标准select查询。

2、包含一个或多个表或者视图名称的标准from子句。

3、可选的where子句。

4、可选的group by子句。

5、可选的having子句。

⑤ 怎样用SQL语句查询一个数据库中的所有表

TABLE 语句

具体语法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
其实从语法上看,可以排序,也可以过滤记录集,不过比较简单,没有 SELECT 那么强大。

示例 1

简单的建一张很小的表 y1,记录数为 10 条。表 t1,插入 10 条记录

  • mysql-(ytt/3305)->create table t1 (r1 int,r2 int);

  • Query OK, 0 rows affected (0.02 sec)

  • mysql-(ytt/3305)->insert into t1

  • with recursive aa(a,b) as (

  • select 1,1

  • union all

  • select a+1,ceil(rand()*20) from aa where a < 10

  • ) select * from aa;

  • Query OK, 10 rows affected (0.00 sec)

  • Records: 10 Duplicates: 0 Warnings: 0

  • 简单全表扫描mysql-(ytt/3305)->select * from t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)

  • TABLE 结果mysql-(ytt/3305)->table t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)

  • 看下 table 的执行计划mysql-(ytt/3305)->explain table t1 order by r1 limit 2G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: NULL type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 10 filtered: 100.00 Extra: Using filesort1 row in set, 1 warning (0.00 sec)

  • 其实可以看到 TABLE 内部被 MySQL 转换为 SELECT 了。mysql-(ytt/3305)->show warningsG*************************** 1. row *************************** Level: Note Code: 1003Message: /* select#1 */ select `ytt`.`t1`.`r1` AS `r1`,`ytt`.`t1`.`r2` AS `r2` from `ytt`.`t1` order by `ytt`.`t1`.`r1` limit 21 row in set (0.00 sec)

  • 那其实从上面简单的例子可以看到 TABLE 在内部被转成了普通的 SELECT 来处理。示例 2应用于子查询里的子表。这里要注意,内表的字段数量必须和外表过滤的字段数量一致。克隆表 t1 结构mysql-(ytt/3305)->create table t2 like t1;Query OK, 0 rows affected (0.02 sec)

  • 克隆表 t1 数据mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (0.00 sec)Records: 10 Duplicates: 0 Warnings: 0

  • table t1 被当做内表,表 t1 有两个字段,必须同时满足 t2 检索时过滤的字段也是两个。mysql-(ytt/3305)->select * from t2 where (r1,r2) in (table t1);+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)

  • 注意:这里如果过滤的字段数量和子表数量不一致,则会报错。

⑥ SQL语句创建表

CREATE TABLE 语句用于创建数据库中的表。

具体用法为:

CREATE TABLE 表名称

(

列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型,

....

)

(6)sql表示例扩展阅读

创建表数据类型:

integer(size) int(size) smallint(size) tinyint(size):仅容纳整数。

decimal(size,d) numeric(size,d):容纳带有小数的数字。

char(size):容纳固定长度的字符串

varchar(size):容纳可变长度的字符串

date(yyyymmdd):容纳日期。

参考资料:网络-SQL CREATE TABLE

热点内容
bs源码 发布:2025-02-01 16:51:52 浏览:568
百度云zip怎么解压 发布:2025-02-01 16:31:59 浏览:567
pmc密码是什么意思 发布:2025-02-01 16:28:49 浏览:784
苹果手表和安卓手表哪个好用 发布:2025-02-01 16:28:07 浏览:583
上海电信上传 发布:2025-02-01 16:22:10 浏览:983
有什么好的双u主板配置 发布:2025-02-01 16:18:17 浏览:177
编程漩涡 发布:2025-02-01 16:01:51 浏览:328
司机会所访问 发布:2025-02-01 15:54:11 浏览:781
家用电脑改成服务器并让外网访问 发布:2025-02-01 15:30:23 浏览:355
javac工资 发布:2025-02-01 15:24:28 浏览:23