pgsql @>
CREATE TABLE numbers (
smallint_col smallint,
integer_col integer,
bigint_col bigint,
real_col real,
double_col double precision
);
INSERT INTO numbers VALUES (10, 100, 1000, 3.14, 3.14159);
SELECT * FROM numbers;
代码运行结果:
smallint_col | integer_col | bigint_col | real_col | double_col
--------------+-------------+------------+----------+-------------
10 | 100 | 1000 | 3.14 | 3.14159
2.2 字符类型
PGSQL支持多种字符类型,包括定长和变长字符类型。定长字符类型包括char
和character
,用于存储固定长度的字符串。变长字符类型包括varchar
,用于存储可变长度的字符串。
示例代码:
CREATE TABLE users (
id serial PRIMARY KEY,
name varchar(50),
email varchar(100)
);
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
SELECT * FROM users;
代码运行结果:
id | name | email
----+-------+--------------------
1 | Alice | alice@example.com
2.3 日期类型
PGSQL提供了多种日期和时间类型,包括date
、time
、timestamp
等。可以用于存储日期、时间和日期时间的值。
示例代码:
CREATE TABLE events (
id serial PRIMARY KEY,
event_name varchar(100),
event_date date,
event_time time,
event_datetime timestamp
);
INSERT INTO events (event_name, event_date, event_time, event_datetime)
VALUES ('Meeting', '2022-01-01', '14:00:00', '2022-01-01 14:00:00');
SELECT * FROM events;
代码运行结果:
id | event_name | event_date | event_time | event_datetime
----+------------+-------------+------------+---------------------
1 | Meeting | 2022-01-01 | 14:00:00 | 2022-01-01 14:00:00
2.4 布尔类型
PGSQL提供了boolean
类型,用于存储逻辑值。可以表示True
或False
。
示例代码:
CREATE TABLE tasks (
id serial PRIMARY KEY,
task_name varchar(100),
completed boolean
);
INSERT INTO tasks (task_name, completed) VALUES ('Task 1', False);
SELECT * FROM tasks;
代码运行结果:
id | task_name | completed
----+-----------+-----------
1 | Task 1 | f
2.5 数组类型
PGSQL支持数组类型,可以在一个字段中存储多个值。数组可以包含任意类型的元素,例如整数、字符、日期等。
示例代码:
CREATE TABLE books (
id serial PRIMARY KEY,
book_title varchar(100),
authors text[]
);
INSERT INTO books (book_title, authors) VALUES ('Book 1', '{"Author 1", "Author 2"}');
SELECT * FROM books;
代码运行结果:
id | book_title | authors
----+------------+------------------
1 | Book 1 | {Author 1,Author 2}
3. 表操作
PGSQL通过CREATE TABLE
语句创建表,通过INSERT INTO
语句插入数据,通过SELECT
语句查询数据。除此之外,还提供了其他表操作语句,如ALTER TABLE
用于修改表结构,DROP TABLE
用于删除表等。
3.1 创建表
使用CREATE TABLE
语句创建表,可以指定表名、字段名、字段类型、约束等。以下示例创建了一个名为students
的表,包含id
、name
和age
字段。
示例代码:
CREATE TABLE students (
id serial PRIMARY KEY,
name varchar(100),
age integer
);
3.2 插入数据
使用INSERT INTO
语句向表中插入数据。可以一次插入一行或多行数据。
示例代码:
INSERT INTO students (name, age) VALUES ('Alice', 20);
INSERT INTO students (name, age) VALUES ('Bob', 22), ('Charlie', 25);
3.3 查询数据
使用SELECT
语句查询数据,可以通过WHERE
子句进行条件过滤,通过ORDER BY
子句进行排序。
示例代码:
SELECT * FROM students;
SELECT * FROM students WHERE age > 20;
SELECT * FROM students ORDER BY age DESC;
3.4 修改表结构
使用ALTER TABLE
语句修改表结构,可以添加、修改或删除字段,还可以添加约束等。
示例代码:
ALTER TABLE students ADD COLUMN gender varchar(10);
ALTER TABLE students ALTER COLUMN age SET DEFAULT 18;
ALTER TABLE students DROP COLUMN gender;
3.5 删除表
使用DROP TABLE
语句删除表和表中的数据。
示例代码:
DROP TABLE students;
4. 查询
PGSQL提供了强大而灵活的查询功能,可以通过SELECT
语句对表中的数据进行查询、过滤、排序和聚合。
4.1 基本查询
使用SELECT
语句查询数据,可以指定要查询的字段,可以使用WHERE
子句过滤数据。
示例代码:
SELECT id, name, age FROM students;
SELECT * FROM students WHERE age > 20;
4.2 聚合查询
使用GROUP BY
语句对数据进行分组,可以使用聚合函数如COUNT
、SUM
、AVG
对每个分组进行计算。
示例代码:
SELECT age, COUNT(*) AS count FROM students GROUP BY age;
SELECT age, AVG(score) AS average FROM students GROUP BY age;
4.3 连接查询
使用JOIN
语句将多个表连接起来进行查询,可以通过INNER JOIN
、LEFT JOIN
、RIGHT JOIN
等方式进行连接。
示例代码:
SELECT students.name, courses.course_name
FROM students
JOIN enrollments ON students.id = enrollments.student_id
JOIN courses ON enrollments.course_id = courses.id;
4.4 子查询
可以在查询语句中嵌套子查询,用于在内部查询中使用外部查询的结果。
示例代码:
SELECT name, age
FROM students
WHERE age > (SELECT AVG(age) FROM students);
5. 事务
PGSQL支持事务,可以保证一系列数据库操作的原子性、一致性、隔离性和持久性。可以使用BEGIN
、COMMIT
和ROLLBACK
语句管理事务。
5.1 开始事务
使用BEGIN
语句开始一个新的事务。
示例代码:
BEGIN;
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO events (event_name, event_date) VALUES ('Meeting', '2022-01-01');
5.2 提交事务
使用COMMIT
语句提交事务,将事务中的操作永久保存到数据库。
示例代码:
COMMIT;
5.3 回滚事务
使用ROLLBACK
语句回滚事务,将事务中的操作撤销,恢复到事务开始前的状态。
示例代码:
ROLLBACK;
6. 索引
PGSQL支持多种索引类型,包括B树索引、哈希索引、全文索引等。索引可以提高查询的性能,加快数据的检索速度。
6.1 创建索引
使用CREATE INDEX
语句创建索引,可以指定要创建索引的表和字段。
示例代码:
CREATE INDEX idx_students_name ON students (name);
CREATE INDEX idx_students_age ON students (age);
6.2 使用索引
使用索引可以加速查询,可以在WHERE
子句中使用索引字段。
示例代码:
SELECT * FROM students WHERE name = 'Alice';
SELECT * FROM students WHERE age > 20;
6.3 删除索引
使用DROP INDEX
语句删除索引。
示例代码:
DROP INDEX idx_students_name;
DROP INDEX idx_students_age;
7. 结语
本文简要介绍了PGSQL的基本知识和常见用法,涵盖了数据类型、表操作、查询、事务和索引等方面。PGSQL作为一个功能强大的数据库管理系统,具有广泛的应用场景和丰富的功能,可以满足各种复杂的数据库需求。
通过掌握PGSQL的基础知识和灵活运用,开发者可以高效地管理和操作关系型数据库,提升开发效率和系统性能。