PostgreSQL基本代码段

文章介绍了SQL中为表添加唯一索引、CASE用于排序的不同情况,以及如何使用DISTINCT去重。同时涵盖了Docker的基本操作,如查看容器、重启和执行命令在postgresql容器中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为字段添加唯一索引属性

//为单一字段添加唯一索引属性
ALTER TABLE table_name ADD UNIQUE column_name  

//为组合字段添加唯一索引属性
ALTER TABLE table_name ADD UNIQUE (column1, column2, ...)  

为字段赋新值然后排序(CASE)

SELECT
    film_id, title, rating
FROM
    film
ORDER BY CASE rating
    WHEN 'G' THEN 1
    WHEN 'PG' THEN 2
    WHEN 'PG-13' THEN 3
    WHEN 'R' THEN 4
    WHEN 'NC-17' THEN 5
END;

排序tips

// 默认NULL最大,使用NULLS FIRST改变排序规则
SELECT 'A' AS v
UNION ALL
SELECT 'B' AS v
UNION ALL
SELECT NULL AS v
UNION ALL
SELECT '0' AS v
UNION ALL
SELECT '1' AS v
ORDER BY v NULLS FIRST;

// ASC升序 DESC降序

DISTRINCT(取消返回中的重复值)

SELECT DISTINCT 返回一个没有重复行的结果集。
DISTINCT 后面可以指定一个列或者多个列,也可以用 *。
DISTINCT 将所有的 NULL 视为相等的,并只保留一个。
DISTINCT ON 子句用来返回每组重复值的第一个行。

SELECT
    DISTINCT rating
FROM
    film;



SELECT
    DISTINCT ON (rating) rating,
    film_id,
    title
FROM
    film
ORDER BY rating, film_id DESC;

docker实验

wsl //连接虚拟机 输入法给我推荐了“汪苏泷”
sudo su //开启账户权限
// 输入密码666666


docker ps -a //查看所有容器
// 找到postgresql的容器id或name
docker restart pg1 // 启动容器

docker exec -it pg1 psql -U postgres //进入容器开始操作postgresql

### 回答1: try { Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://localhost:5432/testdb"; Connection conn = DriverManager.getConnection(url, "postgres", "password"); Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM table_name"); while (rs.next()) { System.out.print("Column 1 returned "); System.out.println(rs.getString(1)); } rs.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } ### 回答2: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Main { public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { // 加载驱动程序 Class.forName("org.postgresql.Driver"); // 连接数据库 connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/database_name", "username", "password"); // 创建Statement对象 statement = connection.createStatement(); // 执行SQL查询语句 resultSet = statement.executeQuery("SELECT * FROM table_name"); // 处理查询结果 while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); int age = resultSet.getInt("age"); System.out.println("id: " + id + ", name: " + name + ", age: " + age); } } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } finally { try { // 关闭连接 if (resultSet != null) { resultSet.close(); } if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } 以上是一段用Java连接PostgreSQL数据库代码。首先,我们使用`Class.forName`方法加载PostgreSQL的驱动程序,然后通过`DriverManager.getConnection`方法连接到数据库,需传入数据库的URL、数据库的用户名和密码。接下来,我们创建`Statement`对象并使用`executeQuery`方法执行SQL查询语句,并将结果存储在`ResultSet`对象中。最后,我们通过`while`循环遍历查询结果,并根据需要获取每行记录的数据。最终,我们在控制台打印出查询结果。 需要注意的是,此代码示例仅用于连接和查询数据库,并未包含其他操作,如插入、更新和删除数据等。 ### 回答3: 以下是使用Java连接PostgreSQL数据库的示例代码: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class PostgreSQLConnection { public static void main(String[] args) { Connection connection = null; try { // 加载驱动程序 Class.forName("org.postgresql.Driver"); // 连接数据库 String url = "jdbc:postgresql://localhost:5432/mydatabase"; String user = "yourusername"; String password = "yourpassword"; connection = DriverManager.getConnection(url, user, password); // 连接成功后的操作 System.out.println("成功连接到数据库!"); // ... 在此处进行数据库操作 ... } catch (ClassNotFoundException e) { System.out.println("找不到数据库驱动程序!"); } catch (SQLException e) { System.out.println("连接数据库出错: " + e.getMessage()); } finally { // 关闭数据库连接 try { if (connection != null) { connection.close(); } } catch (SQLException e) { System.out.println("关闭数据库连接出错: " + e.getMessage()); } } } } ``` 注意:在使用上述代码前,需要先下载并添加合适的PostgreSQL JDBC驱动。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值