DQL语句 -----简单select查询

Posted dimension0116

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DQL语句 -----简单select查询相关的知识,希望对你有一定的参考价值。

DQL语句

1、格式

  • select 列名*N from 表名 where 查询条件1 and/or 查询条件2 group by 列 Having 分组条件 Order by 排序

2、规则

  • sql在书写时除了查询条件外,大小写都可以
    • select * from user where uname=\'zs\';
    • SELECT *FROM USER WHERE UNAME=\'zs\';
  • 要是在公司要看其他员工sql是大写还是小写
  • --属于sql语句的注释
  • 所有查询条件为字符串时,需要用\'\'进行修饰,否则会当列名处理

3、select查询列和别名

3.1 直接查询

-- 查询所有员工信息
select * from emp;
-- 查询员工姓名
select ename from emp;
-- 查询员工薪资
select sal from emp;
-- 查询员工姓名和薪资
select ename,sal from emp;
select ename sal from emp;-- 错误,把sal当成ename别名了
select ename sal comm from emp;-- 报错
-- 查询员工姓名和薪资,给别名,推荐使用单引号
select ename \'员工姓名\', sal "薪资" from emp;
-- 查询到的数据可以直接进行运算
select ename,sal,sal*12 from emp;
select ename,sal,comm,(sal+comm)*12 from emp;

-- 字符串拼接
select CONCAT(ename,\' 的薪资是 \',sal) \'员工薪资\' from emp;

3.2 条件查询

-- 条件查询
-- 查询empno=7844
select * from emp where empno = 7844;
-- 查询工资等于3000
select * from emp where sal = 3000;
-- 查询job等于salesman
select * from emp where job = \'SALESMAN\';
-- 查询工资大于1000
select * from emp where sal > 1000;
-- 查询工资小于1000
select * from emp where sal < 1000;
-- 查询job不等于salesman
select * from emp where job != \'SALESMAN\';
select * from emp where job <> \'SALESMAN\';
-- 查询工资大于等于3000
select * from emp where sal >= 3000;  
-- 查询工资介于1600和3000之间包括1600和3000
select * from emp where sal between 1600 and 3000;
-- NULL不能用=,要用is
select * from emp where comm is null;

3.3 in查询

-- IN查询
-- 查询7499,7566,7782
select * from emp where empno in(7499,7566,7782);
-- 查询除了这三
select * from emp where empno not in(7499,7566,7782);
-- 如果表中没有这个编号,那么只查询其他的
select * from emp where empno in(7499,7566,7782,8888);

3.4 like模糊查询

-- 模糊查询like,%表示任意字符,包括空
-- 查询员工姓名最后一个字是N的信息
select * from emp where ename like \'%N\';
-- 查询员工姓名第一个字是M的信息
select * from emp where ename like \'M%\';
-- 查询员工姓名中带M的员工信息
select * from emp where ename like\'%M%\';
-- 下划线_表示任意一个字符
select * from emp where ename like \'_M%\';
-- 如果有特殊字符需要用\\来转义
select * from emp where ename like \'%\\%%\';

4、查询结果排序

-- 按薪资排序(默认升序)
select * from emp order by sal;
-- 看每个job的sal排序
select * from emp order by job,sal;
-- 按列进行排序(示例第一列)
select ename,sal from emp order by 1;
-- 升序
select * from emp order by sal asc;
-- 降序
select * from emp order by sal desc;
-- job降序,sal升序
select * from emp order by job desc,sal asc;

5、分页排序

-- 每次查询前n行(示例前4行)
select * from emp limit 4;
-- 分别查询第N页,每页显示M条
select * from emp limit 0,3;
select * from emp limit 3,3;
select * from emp limit 6,3;
select * from emp limit (n-1)*m,m;

使用JDBCTemplate执行DQL/DML语句

package cn.itcast.datasource.jdbctemplate;

import cn.itcast.domain.User;
import cn.itcast.utils.JDBCUtils;

import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
* @author newcityman
* @date 2019/8/17 - 21:05
*/
public class JdbcTemplateDemo02
/*
* 根据id号,修改user对象
* */
// 获取JdbcTemplate对象
private JdbcTemplate temp = new JdbcTemplate(JDBCUtils.getDataSource());

@Test
public void test01()
// 定义sql
String sql = "update user set name=?,email=?,tel=? where id=?";
// 执行sql语句
int i = temp.update(sql, "light", "23235@qq.com", "13770578331", 3);
// 判断执行结果
if (i > 0)
System.out.println("数据修改成功");
else
System.out.println("数据修改失败");



/*
* 添加一条记录
* */
@Test
public void test02()
// 定义sql
String sql = "insert into user(id,name,email,tel) values(null,?,?,?)";
// 执行sql语句
int i = temp.update(sql, "小猪", "3254@qq.com", "177025874");
// 判断执行结果
if (i > 0)
System.out.println("数据添加成功");
else
System.out.println("数据添加失败");



/*
* 删除id=7的记录
* */

@Test
public void test03()
// 定义sql语句
String sql = "delete from user where id=?";
// 执行sql语句
int i = temp.update(sql, 7);
// 判断执行结果
if (i > 0)
System.out.println("数据删除成功");
else
System.out.println("数据删除失败");



/*
* 查询指定id的记录,并将其封装为Map集合
* */
@Test
public void test04()
// 定义sql
String sql="select id,name,email,tel from user where id=?";
Map<String, Object> map = temp.queryForMap(sql, 3);
System.out.println(map);


/*
* 查询所有记录,并将其封装为list集合
* */
@Test
public void test05()
String sql="select * from user";
List<Map<String, Object>> list = temp.queryForList(sql);
for (Map<String, Object> obj : list)
System.out.println(obj);



/*
* 查询所有记录,并将其封装为emp对象的集合
* */
@Test
public void test06()
String sql ="select id ,name ,email ,tel from user ";

List<User> list = temp.query(sql, new RowMapper<User>()
@Override
public User mapRow(ResultSet rs, int i) throws SQLException
User user = new User();
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
String tel = rs.getString("tel");

user.setId(id);
user.setName(name);
user.setEmail(email);
user.setTel(tel);

return user;


);
for (User user : list)
System.out.println(user);




/*
* 查询所有记录,并将其封装为emp对象的集合
* */
@Test
public void test06_2()
String sql ="select id ,name ,email ,tel from user ";
List<User> list = temp.query(sql, new BeanPropertyRowMapper<User>(User.class));

for (User user : list)
System.out.println(user);



/*
* 查询所有记录数
* */
@Test
public void test07()
String sql ="select count(id) from user";
Long count = temp.queryForObject(sql, Long.class);
System.out.println(count);



以上是关于DQL语句 -----简单select查询的主要内容,如果未能解决你的问题,请参考以下文章

DQL 语句在使用 Zend Framework 和 Doctrine 的应用程序中的位置

dljd_(007_008)_jdbc执行DQL/DML/DDL语句

Hive学习——DDL&DML&DQL语句

Hive学习——DDL&DML&DQL语句

什么是DQL,DML,DDL,DCL

MySQL数据库SQL2——DML—DQL