浅学 SQL server 数据库 03

数据查询

语法格式:

  1. SELECT  <目标列表达式1>[,<目标列表达式2>] ......
  2. FROM < 表名或者视图名 >[,<表名或者视图名>]......
  3. WHERE <条件表达式>
  4. GROUP BY <列名>     HAVING <条件表达式>
  5. ORDER BY <列名>  ASC/DESC

 一,查询指定列操作

查询所有属性列

1.在SELECT 关键字后面列出所有列名

2.将<目标列表达式>指定为 * 

eg:查询全体学生的详细记录

SELECT *
FROM Student;
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student;

查询经过计算的值

1.SELECT 子句的<目标列表达式>不仅可以为表中列属性,也可以是表达式

eg:查询全体学生的姓名,出生年份和所在的院系,要求用小写字母表示系名

SELECT Sname 学生姓名,2022-Sage 出生年份,LOWER(Dept) 所在院系 --2022-Sage就是一个表达式
FROM Student;

说明:Sname 后面的 ‘学生姓名’,是一个常量表达式,可将其视为列名

如下图所示

 列名不再是 Sname而是 学生姓名。出生年份,所在院系同理。

二,消除取值重复的行

使用关键字 DISTINCT

eg:查询选修了课程的学生学号

SELECT Sno
FROM SC;

 这样的话,一名学生修多门课程时就会出现多个相同的学号。为避免这种情况的发生,可以使用DISTINC

SELECT DISTINCT Sno
FROM SC;

三,查询满足条件的元组 

查询条件谓词
比较=,>,<,>=,<=,!=,!>,!<;NOT + 上述比较运算符
确定范围BETWEEN AND,   NOT BETWEEN AND
确定集合IN,     NOT IN
字符匹配LIKE,   NOT LIKE
空值IS NULL,   IS NOT  NULL
多重条件AND,OR,NOT
  1.  比较        eg查询所有年龄在20岁以下的学生姓名及其年龄

    SELECT Sname,Sage
    FROM Student
    WHERE Sage<20;--比较谓词 <
  2. 确定范围    eg:查询年龄在20~30岁之间的学生姓名及其年龄

    SELECT Sname,Sage
    FROM Student
    WHERE Sage BETWEEN 20 AND 23;--范围谓词 BETWEEN AND
  3. 确定集合     eg:查询计算机科学系,数学系,信息系学生的姓名和年龄

    SELECT Sname,Sage
    FROM Student
    WHERE Dept IN('计算机系','数学系','信息系');--确定集合谓词 IN
  4. 字符匹配   

        <匹配串>即可以是一个完整的字符串,也可以含有通配符 %和 _

        1.%(百分号)代表任意长度的字符串(字符串长度可为0)

        eg:查询所有姓刘的学生姓名,学号和性别

SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE('刘%');

        2._(下划线)代表任意单个字符 

        3.当你所要查询的字符本身就包括_或者%,那么就需要将通配符转义为普通字符,使用关键字ESCAPE

        eg:查询以"DB_"开头,且倒数第3个字符为i的课程的详细情况  

SELECT *
FROM Course
WHERE Cname LIKE ('DB\_%I__')  ESCAPE'\';

补充:字符串匹配的通配符还有 [ ]和[^] 

[ ]:匹配方括号中的任何一个字符

[^]:不匹配方括号中的任何一个字符

eg:查询姓‘张’,‘李’,‘刘’的学生的详细信息

SELECT *
FROM Student
WHERE Sname LIKE'[张刘李]%';

    5.空值    eg:某些学生选修课程后没有参加考试,所以有选课记录,但是没有考试成绩。查询缺少成绩的学生的学号和相应的课程号

SELECT Sno,Cno
FROM SC
WHERE Grade IS NULL;

    6. 多重条件     eg:查询计算机年龄在二十岁以下的学生姓名

SELECT Sname
FROM Student
WHERE Dept = '计算机系' AND Sage<20;

四,ORDER BY 字句,可以按一个或多个属性列排列

升序:ASC  降序: DESC

注:对于空值,排序是显示的次序由具体系统实现来决定

eg:查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列

SELECT *
FROM Student
ORDER BY Dept ASC,Sage DESC;
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在静态方法使用JdbcTemplate需要注意以下几点: 1. 静态方法无法直接使用Spring容器的Bean,因为静态方法是类级别的,而Bean是实例级别的。因此需要手动获取JdbcTemplate实例,可以通过ApplicationContext获取JdbcTemplate实例,或者通过静态变量保存JdbcTemplate实例。 2. 在使用JdbcTemplate时,需要先创建一个JdbcTemplate实例,并设置数据源。数据源可以通过Spring容器注入,或者手动创建。在静态方法,可以通过静态变量保存JdbcTemplate实例,避免重复创建。 3. 在使用JdbcTemplate操作数据库时,需要注意线程安全问题。JdbcTemplate是线程安全的,但是需要保证JdbcTemplate实例的线程安全,即在多线程环境需要保证同一JdbcTemplate实例不会被并发访问。 下面是一个示例代码: ``` public class JdbcUtils { private static JdbcTemplate jdbcTemplate; public static void setDataSource(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } public static void executeSql(String sql) { jdbcTemplate.execute(sql); } } ``` 在上面的代码,我们通过静态变量保存了JdbcTemplate实例,并提供了一个静态方法setDataSource用于设置数据源。在使用JdbcTemplate时,我们可以直接调用静态方法executeSql执行SQL语句。需要注意的是,这里的executeSql方法是线程安全的,因为JdbcTemplate实例是共享的,并且JdbcTemplate本身是线程安全的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值