CREATE TABLE IF NOT EXISTS employee (
emp_id SERIAL PRIMARY KEY, -- AUTO_INCREMENT integer, as primary key
emp_name VARCHAR(50) NOT NULL,
emp_salary NUMERIC(9,2) NOT NULL
);
// 创建新表(SQL)
\d employee
Table "public.employee"
Column | Type | Modifiers
------------+-----------------------+-----------------------------------------------------------
emp_id | integer | not null default nextval('employee_emp_id_seq'::regclass)
emp_name | character varying(50) | not null
emp_salar | numeric(9,2) | not null
Indexes:
"employee_pkey" PRIMARY KEY, btree (emp_id)
// 显示表(psql)
INSERT INTO employee (emp_name, emp_salary) VALUES
('John', 5000),
('Jack', 4568.0),
('Robert',7500.50);
// 将记录插入表中(SQL)
select * from employee where emp_salary >= 5000;
emp_id | emp_name | emp_salary
--------+----------+------------
1 | John | 5000.00
3 | Robert | 7500.50
(2 rows)
// 根据筛选条件选择数据(例如 emp_salary >= 5000)(SQL)
BEGIN;
update employee set emp_salary = 6000 where emp_name = 'John';
COMMIT;
// 根据条件更新记录(例如 更新员工 'John' 的 emp_salary)(SQL)
除非发出提交命令,否则记录不会提交到数据库中。如果发出回滚命令而不是提交命令,更新也可以撤消。
alter table employee add column dept_id integer;
ALTER TABLE
// 更改表以添加新列(例如 在 employee 表中添加 dept_id)(SQL)
alter table employee drop column dept_id;
ALTER TABLE
// 更改表以删除列(例如 从 employee 表中删除 dept_id)(SQL)
truncate only employee;
TRUNCATE TABLE
// 截断 employee 表(SQL)
截断表是删除表中记录的快速方法,因为它不需要扫描表。截断是数据库中未记录的活动。截断表也比删除表并重新创建它容易得多。
使用 "ONLY" 关键字是安全的,这样你就不会意外地截断依赖/子表。
truncate only tableA, tableB;
TRUNCATE TABLE
// 同时截断多个表(SQL)
BEGIN;
delete from employee where emp_id = 2;
select * from employee where emp_id = 2;
emp_id | emp_name | emp_ssn | emp_salary | emp_dept_id
--------+----------+---------+------------+-------------
(0 rows)
ROLLBACK;
select * from employee where emp_id = 2;
emp_id | emp_name | emp_ssn | emp_salary | emp_dept_id
--------+----------+---------+------------+-------------
2 | Rohit | 1234 | 5000.00 | 1
(1 row)
// 根据筛选条件从 employee 中删除(emp_id = 1)& 然后回滚事务(SQL)
PREPARE myplan (int) AS SELECT * FROM employee where emp_id = $1;
// 创建参数化语句并在服务器上存储查询访问计划(SQL)
EXECUTE myplan(2);
emp_id | emp_name | emp_ssn | emp_salary | emp_dept_id
--------+----------+---------+------------+-------------
2 | Rohit | 1234 | 5000.00 | 1
(1 row)
// 根据存储的访问计划执行查询,为参数提供值(例如 $1=2)(SQL)
参数化语句是编写查询的有效方法,无论提供运行时值如何,这些查询都使用相同的访问计划。像 Java 这样的应用程序使用 JDBC API 来创建这样的参数化语句
Int emp_id = 2;
con = getDBConnection(); // get database connection
PreparedStatement pstmt = con.prepareStatement("select * from employee where emp_id = ?"); // prepare parameterized statement
pstmt.setInt(1, emp_id); // provide runtime value
pstmt.execute(); // execute query