
数据库编程和设计
文章平均质量分 52
任何企业级项目都离不开数据库,数据库知识是程序员的必备技能。本专栏重点讲解数据库设计思想、SQL语言。同时,将JAVA如何操作数据库的技术也引入,讲解了JDBC和Mybatis框架
地球村公民
这个作者很懒,什么都没留下…
展开
-
Java MyBatis框架:(十二)注解开发
注解开发1.注解开发2.MyBatis 中常用的注解1.CRUD 注解2.其他注解1.注解开发注解是用于描述代码的代码. 例如: @Test(用于描述方法 进行 junit 测试), @Override(用于描述方法的重写), @Param(用于描述属性的名称)注解的使用风格: @xxx(属性), 使用前必须先导包使用注解一般用于简化配置文件. 但是, 注解有时候也不是很友好(有时候反而更麻烦), 例如动态 SQL关于注解的属性:属性的设定方式是: 属性名=属性值关于属性值的类型基本类型和原创 2020-05-26 11:24:29 · 298 阅读 · 0 评论 -
Java MyBatis框架:(十一)多表关联查询-5200字匠心出品
多表关联查询1.业务装配方式1.实体类2.mapper 层3.service 层4.测试代码2.单个对象_N+1方式实现1.实体类2.mapper 层3.service 层3.单个对象_关联方式实现1.mapper层4.集合对象_N+1方式实现1.实体类2.mapper 层3.service 层5.集合对象_关联方式实现6.Auto-Mapping配合别名实现1.业务装配方式mapper 层只做单表查询操作, 在 service 层进行手动装配, 实现关联查询的结果.1.实体类创建班级类(Clazz原创 2020-05-26 11:07:59 · 373 阅读 · 3 评论 -
Java MyBatis框架:(十)解决列名和属性名不一致问题
解决列名和属性名不一致问题1.列别名2.使用< resultMap >如果查询时使用 resultType 属性, 表示采用 MyBatis 的 Auto-Mapping(自动映射)机制, 即相同的列名和属性名会自动匹配. 因此, 当数据库表的列名和类的属性名不一致时, 会导致查不到数据. 解决该问题可以有两种方式:1.列别名查询时, 可以通过列别名的方式将列名和属性名保持一致, 继续使用自动映射, 从而解决该问题. 但是较为麻烦<select id="selAll" result原创 2020-05-26 10:33:20 · 410 阅读 · 0 评论 -
Java MyBatis框架:(九)MyBatis 的缓存机制
MyBatis 的缓存机制1.MyBatis 的缓存机制2.一级缓存3.二级缓存1.MyBatis 的缓存机制缓存用于提高查询的效率.MyBatis 的缓存是使用 SQL 标签的ID 作为缓存的唯一标识的. 执行相同的标签可以使用缓存. 不同的标签不能使用缓存MyBatis 中有两种缓存机制2.一级缓存默认开启. 线程级别的缓存, SqlSession 的缓存在一个 SqlSession 生命周期中有效. SqlSession 关闭, 缓存清空3.二级缓存进程级别的缓存, Sql原创 2020-05-26 10:24:16 · 246 阅读 · 0 评论 -
Java MyBatis框架:(八)动态 SQL
动态 SQL1.动态 SQL2.< if >3.< where >4.< choose >< when >< otherwise >5.< set >6.< trim >7.< bind >8.< foreach >9.< sql >< include >1.动态 SQL根据条件的不同, SQL 语句也会随之动态的改变. MyBatis 中, 提供了一组标签用于实现动态 S原创 2020-05-26 10:21:49 · 250 阅读 · 0 评论 -
Java MyBatis框架:(七)接口绑定方案
接口绑定方案1.接口绑定方案2.实现方式1.定义接口2.编写对应接口的映射文件3.在核心配置文件中扫描接口4.应用3.通过接口绑定解决多参数的传递1.方式一2.方式二1.接口绑定方案MyBatis 中, 提供了一套接口绑定方案. 程序员可以提供一个接口, 然后提供对应接口的一个 mapper.xml 文件 . MyBatis 会自动将接口和 xml 文件进行绑定. 实际上就是 MyBatis 会根据接口和对应的 xml 文件创建接口的实现类. 换言之, 就是可以得到接口类型的对象, 方便方法的调用2.原创 2020-05-26 10:01:08 · 471 阅读 · 0 评论 -
Java MyBatis框架:(六)事务管理与增删改
事务管理与增删改1.事务(Transaction)2.简单提取工具类3.新增(insert)4.修改(update)5.删除(delete)1.事务(Transaction)事务是数据库操作的最小单元, 有 ACID 的特性. 应该保证一个事务的的 SQL 语句要么同时成功, 要么都不成功MyBatis中配置了事务管理器, type属性设置为JDBC. 表示 MyBatis 采用和原生 JDBC 相同的事务管理机制在 MyBatis 执行的开始时, 将自动提交功能关闭了. 所以, 在执行 DML原创 2020-05-26 09:35:01 · 635 阅读 · 0 评论 -
Java MyBatis框架:(五)配置parameterType属性进行参数的传递
配置parameterType属性进行参数的传递1.带参数的查询2.一个参数的查询3.多个参数的查询1.封装为对象2.封装为 Map本次使用的Mapper<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace:原创 2020-05-16 10:45:01 · 1035 阅读 · 2 评论 -
Java MyBatis框架:(四)properties标签实现软编码和typeAliases标签配置别名
properties标签实现软编码和typeAliases标签配置别名1.标签1.功能2.使用方式2.标签1.功能2.使用方式3.MyBatis 的内建别名1.标签1.功能用于加载外部的 properties 文件<!-- properties加载外部文件 --> <properties resource="db.properties" />2.使用方式获取 properties 文件中数据时, 要通过${}的方式获取jdbc.driver =com.mysql.j原创 2020-05-16 10:25:48 · 344 阅读 · 0 评论 -
Java MyBatis框架:(三)LOG4J的使用以及MyBatis 对 log4j 的支持
LOG4J的使用以及MyBatis 对 log4j 的支持1.log4j 简介2.日志级别3.log4j 的使用1.导包2.配置文件3.日志的输出格式4.测试4.MyBatis 对 log4j 的支持1.通过开启 log4j 的支持1.log4j 简介log4j 是 Apache 提供的一款记录日志的工具log4j既可以将日志信息打印在控制台, 也可以打印输出到一个日志文件中log4j 可以定制日志的输出格式log4j 可以定制日志级别2.日志级别级别含义FATAL致原创 2020-05-16 10:11:07 · 328 阅读 · 0 评论 -
Java MyBatis框架:(二)MyBatis 中常用的三个查询方法
MyBatis 中常用的三个查询方法1.selectList2.selectOne3.selectMapMapper层总代码:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace: 命名空间, 可以随意定义,原创 2020-05-16 09:47:34 · 487 阅读 · 0 评论 -
Java MyBatis框架:(一)MyBatis简介及简单项目框架搭建
MyBatis简介及简单项目框架搭建1.什么是框架2.MyBatis 框架简介3.MyBatis 环境搭建 jar 包详解1.MyBatis 核心 jar2.MyBatis 依赖的 jar3.驱动 jar3.MyBatis 核心配置文件1.要求2.dtd3.配置文件内容4.Mapper 映射文件5.编写测试代码1.什么是框架框架是偷懒的程序员将代码进行封装, 之后进行重复使用的过程.框架其实是一个半成品, 以连接数据库为例, 连接数据库使用的驱动, url, 用户名, 密码必须告知框架程序员在使用原创 2020-05-16 09:32:37 · 473 阅读 · 0 评论 -
Java JDBC技术:(七)动态查询与应用程序分层
动态查询与应用程序分层1.动态查询2.应用程序分层1.什么是应用程序分层2.分层优点3.三层结构1.动态查询动态查询:根据用户给定的条件来决定执行什么样的查询。import java.sql.*;import java.util.ArrayList;import java.util.List;public class Text{ public static void main(String[] args) { Text t=new Text(); Pe原创 2020-05-15 11:21:39 · 345 阅读 · 0 评论 -
Java JDBC技术:(六)SQL 注入与PreparedStatement 对象的使用-5000字匠心出品
SQL 注入与PreparedStatement 对象的使用1.什么是 SQL 注入2.SQL 注入案例3.PreparedStatement 对象的使用1.PreparedStatement 特点2.通过 PreparedStatement 对象向表中插入数据4.PreparedStatement 的预编译能力1.什么是预编译1.SQL 语句的执行步骤2.解析过程2.预编译方式1.依赖数据库驱动完成预编译2.依赖数据库服务器完成预编译5.通过 PreparedStatement 对象完成数据的更新6.通过原创 2020-05-15 11:08:24 · 581 阅读 · 0 评论 -
Java JDBC技术:(五)通过 Statement 对象查询数据与实现逻辑分页
通过 Statement 对象查询数据与实现逻辑分页1.通过 Statement 对象查询数据2.ResultSet 讲解3.通过 ResultSet 实现逻辑分页1.通过 Statement 对象查询数据import java.sql.*;public class Text{ public static void main(String[] args) throws SQLException, ClassNotFoundException { Text t=new Text原创 2020-05-15 10:21:08 · 658 阅读 · 0 评论 -
Java JDBC技术:(四)封装 JDBC 工具类
封装 JDBC 工具类1.工具类本体2.properties文件1.工具类本体import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ResourceBundle;/** * jdbc工具类 * @author Administrato原创 2020-05-15 10:08:37 · 187 阅读 · 0 评论 -
Java JDBC技术:(三)通过 Statement 向表中插入数据与修改数据
通过 Statement 向表中插入数据与修改数据1.下载数据库驱动1.MySQL 驱动2.Oracle 驱动2.创建项目添加驱动3.通过 Statement 向表中插入数据4.通过 Statement 对象修改表中的数据1.下载数据库驱动1.MySQL 驱动驱动下载地址2.Oracle 驱动数据库安装目录\oracle\product\11.2.0\dbhome_1\jdbc\lib2.创建项目添加驱动创建一个正常的项目我相信我不用说了吧… 手动滑稽添加jar包的话我之前有说链接在下面原创 2020-05-15 10:03:45 · 2314 阅读 · 0 评论 -
Java JDBC技术:(二)JDBC3.0 标准中常用接口与类
JDBC3.0 标准中常用接口与类1.Driver 接口2.DriverManager 类1.常用方法2.JDBC URL3.Connection 接口1.常用方法4.Statement 接口1.常用方法5.PreparedStatement 接口1.常用方法6.ResultSet 接口1.常用方法2.ResultSet 对结果集进行滚动的方法7.CallableStatement 接口1.Driver 接口Driver 接口的作用是来定义数据库驱动对象应该具备的一些能力。比如与数据库建立连接的方法的定原创 2020-05-15 08:56:56 · 465 阅读 · 0 评论 -
Java JDBC技术:(一)JDBC 简介
JDBC 简介1.什么是 JDBC2.什么是数据库驱动程序3.程序操作数据库流程1.什么是 JDBCJDBC(Java DataBase Connectivity)java 数据库连接是 JavaEE 平台下的技术规范定义了在 Java 语言中连接数据,执行 SQL 语句的标准可以为多种关系数据库提供统一访问2.什么是数据库驱动程序数据库厂商对 JDBC 规范的具体实现不同数据产品的数据库驱动名字有差异在程序中需要依赖数据库驱动来完成对数据库的操作3.程序操作数据库流程..原创 2020-05-15 07:55:22 · 279 阅读 · 2 评论 -
Java MySQL数据库的使用:(八)MySQL 数据库存储引擎介绍
MySQL 数据库存储引擎介绍1.查看 MySQL 数据库中的数据库存储引擎2.MySQL 数据库引擎介绍1.ISAM(Indexed Sequential Access Method)2.MyISAM3.InnoDB3.修改数据库级引擎4.修改表级存储引擎5.查询表的存储引擎1.查看 MySQL 数据库中的数据库存储引擎SHOW ENGINES2.MySQL 数据库引擎介绍1.ISAM(Indexed Sequential Access Method)ISAM 是一个定义明确且历经时间考验原创 2020-05-14 14:28:30 · 785 阅读 · 0 评论 -
Java MySQL数据库的使用:(七)MySQL 中的执行计划
MySQL 中的执行计划1.MySQL 执行计划2.MySQL 整个查询执行过程3.启动执行计划4.EXPLAIN 列的解释1.ID2.select_type3.table4.type5.possible_keys6.Key7.key_len8.ref9.rows10.Fitered11.extra1.MySQL 执行计划在 MySQL 中可以通过 explain 关键字模拟优化器执行 SQL 语句,从而知道 MySQL 是如何处理 SQL 语句的2.MySQL 整个查询执行过程客户端向 MySQ原创 2020-05-14 14:18:01 · 536 阅读 · 0 评论 -
Java MySQL数据库的使用:(六)MySQL 分页查询
MySQL 分页查询1.LIMIT 子句2.LIMIT OFFSET 子句MySQL 分页查询原则在 MySQL 数据库中使用 LIMIT 子句进行分页查询MySQL 分页中开始位置为 0分页子句在查询语句的最后侧1.LIMIT 子句SELECT 投影列 FROM 表名 WHERE 条件 ORDER BY LIMIT 开始位置,查询数量查询雇员表中所有数据按 id 排序,实现分页查询,每次返回两条结果。select * from employees order by employees原创 2020-05-14 11:31:26 · 432 阅读 · 0 评论 -
Java MySQL数据库的使用:(五)MySQL 中的其他对象-5100字匠心出品
MySQL 中的其他对象1.索引1.MySQL 中的索引类型2.普通索引1.直接创建索引2.修改表添加索引3.创建表时指定索引列4.删除索引3.唯一索引1.创建唯一索引2.修改表添加唯一索引3.创建表时指定唯一索引4.主键索引1.修改表添加主键索引2.创建表时指定主键索引5.组合索引1.最左前缀原则2.修改添加组合索引3.创建表时创建组合索引6.全文索引1.修改添加全文索引2.创建表时创建全文索引3.删除全文索引7.使用全文索引1.全文解析器2.使用全文索引3.更换全文解析器2.MySQL 中的用户管理1.原创 2020-05-14 11:25:36 · 172 阅读 · 0 评论 -
Java MySQL数据库的使用:(四)MySQL 最全查询数据方式-8000字匠心出品
MySQL 查询数据1.MySQL 的基本查询1.MySQL 的列选择2.MySQL 的行选择3.SELECT 语句中的算术表达式4.MySQL 中定义空值5.MySQL 中的列别名6.MySQL 中的连字符7.MySQL 中去除重复2.约束和排序数据1.MySQL 中的比较条件1.比较运算符2.模糊查询3.逻辑运算符4.范围查询5.空值判断2.使用 ORDER BY 排序3.MySQL 中常见的单行函数1.大小写控制函数2.字符处理3.数字函数4.日期函数5.转换函数6.通用函数4.多表连接查询1.等值连原创 2020-05-14 10:45:40 · 1079 阅读 · 0 评论 -
Java MySQL数据库的使用:(三)MySQL中的约束_DML_事务以及修改表-5000字匠心出品
MySQL中的约束_DML_事务以及修改表1.修改表1.使用 DDL 语句修改表名2.使用 DDL 修改列名3.使用 DDL 语句修改列类型4.使用 DDL 语句添加列5.使用 DDL 语句删除列2.MySQL 中的约束1.约束类型2.创建表时添加约束3.修改表实现约束的添加与删除1.主键约束1.添加主键约束2.删除主键约束2.非空约束1.添加非空约束2.删除非空约束3.唯一约束1.添加唯一约束2.删除唯一约束4.外键约束1.添加外键约束2.删除外键约束3.MySQL 中的 DML 操作1.添加数据(INS原创 2020-05-14 09:53:21 · 433 阅读 · 0 评论 -
Java MySQL数据库的使用:(二)MySQL数据库与表的创建删除以及数据类型
操作 MySQL1.创建与删除数据库1.创建数据库1.使用命令创建数据库2.使用 Navicat 创建数据库2.删除数据库1.使用命令删除数据库2.使用 Navicat 工具删除数据库2.选择数据库3.MySQL 中的数据类型1.数值类型2.浮点型3.字符串型1.char 和 varchar1.创建与删除数据库1.创建数据库1.使用命令创建数据库CREATE DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码;2.使用 Navicat 创建数据库2.删除数据库原创 2020-05-14 09:05:27 · 392 阅读 · 0 评论 -
Java MySQL数据库的使用:(一)MySQL 简介
MySQL 简介1.什么是 MySQL2.MySQL 特点3.MySQL 版本说明4.卸载 MySQL5.MySQL 自带的客户端端工具6.第三方客户端工具 Navicat7.MySQL 与 Oracle 的区别1.什么是 MySQLMySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。2.MySQL 特点原创 2020-05-13 11:32:18 · 1102 阅读 · 0 评论 -
Java SQL 语言:(十六)rowid和rownum分页查询
rowid和rownum分页查询1.rowid2.rownum1.通过rownum进行TOP-N查询2.通过rownum进行分页查询1.rowidrowid在记录创建时生成,而且是不变,直接指向硬件上的存储位置通过rowid查询是效率最高的, 但是rowid是由Oracle维护的, 人力无法做到2.rownumrownum是一个伪列, 查询的时候除非特别指定,否则不会显示. 表示行号, 常用于控制查询返回的行数.1.通过rownum进行TOP-N查询当rownum和order by一起使用原创 2020-05-13 11:22:32 · 710 阅读 · 0 评论 -
Java SQL 语言:(十五)事务(Transaction)
事务1.事务的特性(ACID)2.事务的提交和回滚事务(Transaction)是一个操作序列。这些操作要么都做, 要么都不做, 是一个不可分割的工作单元, 是数据库环境中的最小工作单元。1.事务的特性(ACID)Atomicity(原子性)原子性是指事务包含的所有操作要么全部成功, 要么全部失败回滚, 因此事务的操作如果成功就必须要完全应用到数据库, 如果操作失败则不能对数据库有任何影响.Consistency(一致性)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态, 也就原创 2020-05-13 11:20:41 · 474 阅读 · 0 评论 -
Java SQL 语言:(十四)视图(view)
视图1.创建视图2.只读视图3.视图的作用4.删除视图视图是从若干基本表和(或)其他视图构造出来的表. 视图中并不会存放数据, 只会存放视图的定义语句. 在用户使用视图时, 才去动态检索数据.1.创建视图语法create [or replace] view 视图名 as (查询) [with read only]创建简单视图create or replace view v_student as (select * from student);可以对视图进行DQL和DML操作-原创 2020-05-13 11:16:38 · 674 阅读 · 0 评论 -
Java SQL 语言:(十三)索引(index)与序列(sequence)
序列与索引1.索引(index)1.索引的创建2.索引的使用3.索引的删除4.索引的优缺点2.序列(sequence)1.创建序列2.序列的使用3.删除序列1.索引(index)为了提高查询效率, 可以建立类似目录的数据库对象, 实现数据快速查询, 这就是索引(Index)1.索引的创建自动创建Oracle对primary key和unique约束的列, 会自动创建索引.手动创建对于不是primary key和unique约束的列, 如果经常会被查询或用于排序, 可以手动给其创建索引, 例如原创 2020-05-13 11:13:41 · 1245 阅读 · 0 评论 -
Java SQL 语言:(十二)表格的约束
表格的约束1.主键约束(primary key)2.非空约束(not null)3.唯一约束(unique)4.检查约束(check)5.外键约束(foreign key)6.外键中的删除问题7.在修改表格时添加约束constraints, 约束, 用于对表格的数据进行限制, 保证表格数据的完整性和一致性.语法:constraints 约束名 约束类型 (约束字段)1.主键约束(primary key)主键是用于唯一标识一条记录的字段, 必须保证既非空又唯一.一张表中, 只能有一个主键.在原创 2020-05-13 11:05:55 · 193 阅读 · 0 评论 -
Java SQL 语言:(十一)数据库表格
数据库表格1.Oracle中的数据类型1.字符类型2.数值类型3.日期时间类型4.lob类型2.创建表格3.修改表格1.添加字段2.修改字段的类型3.重命名字段4.删除字段5.重命名表格6.删除表格1.Oracle中的数据类型1.字符类型varchar2可变长度的字符串, 效率较低char不可变长度的字符串, 效率较高2.数值类型number, 既可以表示整数, 也可以表示浮点数3.日期时间类型date, 存放日期和时间timestamp, 比date更精确的日期时间类型4.原创 2020-05-13 10:59:41 · 254 阅读 · 0 评论 -
Java SQL 语言:(十)子查询
子查询1.单行子查询2.多行子查询3.相关子查询和不相关子查询4.子查询可以作为一张表格进行多表连接查询用于当一次查询的结果是另一次查询所需要的时候, 可以使用子查询1.单行子查询子查询的返回结果是单行数据.查询所有比“CLARK”工资高的员工的信息select * from emp where sal > (select sal from emp where ename='CLARK');查询工资高于平均工资的雇员名字和工资select ename, sal from emp原创 2020-05-13 10:55:04 · 470 阅读 · 0 评论 -
Java SQL 语言:(九)SQL99连接查询
SQL99连接查询1.cross join(交叉连接)2.natural join(自然连接)3.using子句4.on子句5.左外连接6.右外连接7.全外连接8.自连接9.SQL92多表连接查询1.笛卡尔积2.等值连接3.非等值连接4.左外连接5.右外连接6.自连接1.cross join(交叉连接)交叉连接会产生一个笛卡尔积select * from emp cross join dept;在笛卡尔积中, 有很多数据是无意义的, 所以需要消除, 可以通过where子句来消除select *原创 2020-05-13 10:26:04 · 245 阅读 · 0 评论 -
Java SQL 语言:(八)DML
DML1.新增(insert)2.修改(update)3.删除(delete)1.新增(insert)语法insert into 表名 [(列1, 列2, ...)] values (值1, 值2, ...);向temp2表格插入一条数据insert into temp2 (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (123, '小王', '学生', 11211, to_date('2018-8-8', 'yy原创 2020-05-13 09:54:44 · 209 阅读 · 0 评论 -
Java SQL 语言:(七)group by_having
group by_having1.分组查询2.带where的分组查询3.带having的分组查询4.select语句的执行顺序group by进行分组查询, group by子句可以将数据分为若干个组1.分组查询注意: 出现在SELECT子句中的字段,如果不是包含在多行函数中,那么该字段必须同时在GROUP BY子句中出现。统计每个部门的编号, 最高工资和最低工资select deptno, max(sal), min(sal) from emp group by deptno orde原创 2020-05-13 09:49:30 · 353 阅读 · 0 评论 -
Java SQL 语言:(六)字符函数_数值函数_日期函数_转换函数_通用函数_分组函数
字符函数_数值函数_日期函数_转换函数_通用函数_分组函数1.字符函数1.lower, upper, initcap2.length3.replace4.substr2.数值函数1.ceil2.floor3.round4.trunc3.日期函数1.sysdate2.months_between3.add_months4.last_day5.next_day4.转换函数1.to_number2. to_date3.to_char5.通用函数1.nvl2.nvl23.decode6.分组函数(聚组函数)1.su原创 2020-05-13 09:02:58 · 153 阅读 · 0 评论 -
Java SQL 语言:(五)where子句_等值条件和非等值条件_模糊查询_is null_优先级
where子句_等值条件和非等值条件_模糊查询_is null_优先级1.等值条件2.非等值条件3.模糊查询4.IS NULL5.2.and和or的优先级1.等值条件查询10部门所有员工的信息select * from emp where deptno=10;查询JAKE的详细信息字符串必须加单引号, 而且大小写敏感select * from emp where ename='JAKE';查询在1982-01-23入职的员工信息日期必须用单引号括起来;日期格式必须是: DD-原创 2020-05-13 08:42:53 · 868 阅读 · 0 评论 -
Java SQL 语言:(四)distinct子句_字符串连接符_order by
distinct子句_字符串连接符_order by1.distinct2.字符串连接符 ||3.3.order by子句1.distinct用于去除重复行信息查询所有的职位信息select distinct job from emp;查询所有员工的姓名和职位distinct只能去除重复行, distinct的作用范围是它后面的所有列select distinct ename, job from emp;2.字符串连接符 ||Oracle中, 用单引号表示字符串查询所有员工原创 2020-05-13 08:28:39 · 436 阅读 · 0 评论