SELECT employees.name, departments.name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.id;
这个查询返回每个员工及其所在的部门名称。
2. 左外连接 (LEFT JOIN)
左外连接返回左表中的所有行,即使在右表中没有匹配的行。未匹配的右表列会包含NULL。示例:
代码语言:javascript
复制
SELECT employees.name, departments.name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;
这个查询返回所有员工及其部门名称,包括那些没有分配部门的员工。
3. 右外连接 (RIGHT JOIN)
右外连接返回右表中的所有行,即使左表中没有匹配的行。未匹配的左表列会包含NULL。示例:
代码语言:javascript
复制
SELECT employees.name, departments.name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.id;
这个查询返回所有部门及其员工,包括那些没有分配员工的部门。
4. 全外连接 (FULL JOIN)
全外连接返回两个表中所有行,包括非匹配行,在MySQL中,FULL JOIN 需要使用 UNION 来实现,因为 MySQL 不直接支持 FULL JOIN。示例:
代码语言:javascript
复制
SELECT employees.name, departments.name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id
UNION
SELECT employees.name, departments.name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.id;
这个查询返回所有员工和所有部门,包括没有匹配行的记录。
mysql中的一些基本函数,你知道哪些?
一、字符串函数
CONCAT(str1, str2, ...)
连接多个字符串,返回一个合并后的字符串。
代码语言:javascript
复制
SELECT CONCAT('Hello', ' ', 'World') AS Greeting;
LENGTH(str)
返回字符串的长度(字符数)。
代码语言:javascript
复制
SELECT LENGTH('Hello') AS StringLength;
SUBSTRING(str, pos, len)
从指定位置开始,截取指定长度的子字符串。
代码语言:javascript
复制
SELECT SUBSTRING('Hello World', 1, 5) AS SubStr;
REPLACE(str, from_str, to_str)
将字符串中的某部分替换为另一个字符串。
代码语言:javascript
复制
SELECT REPLACE('Hello World', 'World', 'MySQL') AS ReplacedStr;
二、数值函数
代码语言:javascript
复制
SELECT FLOOR(123.456) AS FloorValue;
ABS(num)
返回数字的绝对值。
代码语言:javascript
复制
SELECT ABS(-10) AS AbsoluteValue;
POWER(num, exponent)
返回指定数字的指定幂次方。
代码语言:javascript
复制
SELECT POWER(2, 3) AS PowerValue;
三、日期和时间函数
NOW()
返回当前日期和时间。
代码语言:javascript
复制
SELECT NOW() AS CurrentDateTime;
CURDATE()
返回当前日期。
代码语言:javascript
复制
SELECT CURDATE() AS CurrentDate;
四、聚合函数
COUNT(column)
计算指定列中的非NULL值的个数。
代码语言:javascript
复制
SELECT COUNT(*) AS RowCount FROM my_table;
SUM(column)
计算指定列的总和。
代码语言:javascript
复制
SELECT SUM(price) AS TotalPrice FROM orders;
AVG(column)
计算指定列的平均值。
代码语言:javascript
复制
SELECT AVG(price) AS AveragePrice FROM orders;
MAX(column)
返回指定列的最大值。
代码语言:javascript
复制
SELECT MAX(price) AS MaxPrice FROM orders;
MIN(column)
返回指定列的最小值。
代码语言:javascript
复制
SELECT MIN(price) AS MinPrice FROM orders;
如果项目中要用到原生的mybatis去查询,该怎样写?
步骤概述:
配置MyBatis: 在项目中配置MyBatis的数据源、SQL映射文件等。
创建实体类: 创建用于映射数据库表的实体类。
编写SQL映射文件: 创建XML文件,定义SQL语句和映射关系。
编写DAO接口: 创建DAO接口,定义数据库操作的方法。
编写具体的SQL查询语句: 在DAO接口中定义查询方法,并在XML文件中编写对应的SQL语句。
调用查询方法: 在服务层或控制层调用DAO接口中的方法进行查询。
详细步骤:
配置MyBatis: 在配置文件中配置数据源、MyBatis的Mapper文件位置等信息。
创建实体类: 创建与数据库表对应的实体类,字段名和类型需与数据库表保持一致。
代码语言:javascript
复制
public class User {
private Long id;
private String username;
private String email;
// Getters and setters
}
编写SQL映射文件: 在resources目录下创建XML文件,定义SQL语句和映射关系。
代码语言:javascript
复制
<!-- userMapper.xml -->
<mapper namespace="com.example.dao.UserMapper">
<select id="selectUserById" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
编写DAO接口: 创建DAO接口,定义查询方法。
代码语言:javascript
复制
public interface UserMapper {
User selectUserById(Long id);
}
编写具体的SQL查询语句: 在XML文件中编写对应的SQL语句。
调用查询方法: 在服务层或控制层中调用DAO接口中的方法进行查询。
代码语言:javascript
复制
// 在Service层中调用
User user = userMapper.selectUserById(1);
Spring框架中的IoC(Inverse of Control,控制反转)是一种设计原则,它的基本思想是将程序的控制权交给框架,由框架负责控制对象的创建和管理,而不是由程序员手动管理对象之间的依赖关系。IoC容器是实现IoC的核心,Spring的IoC容器负责创建对象、注入对象之间的依赖关系,以及管理对象的生命周期。