1 操作数据库对象
1.创建数据库对象:create database 数据库名;
create database db_test #数据库名
with ENCODING='utf-8' #编码为utf-8
OWNER=postgres #所有者
CONNECTION LIMIT=10; #限制连接数为10
2.修改数据库对象(其中的一些参数):alter database ...
(1)alter database db_test #修改数据库名称
rename to db_test1;
(2)alter database db_test1 #修改数据库连接数限制
with CONNECTION LIMIT = 100;
或 alter database db_test1 CONNECTION LIMIT 100;
3.删除数据库对象:drop database 数据库名;
2操作数据表对象
1.创建数据表对象:create table 表名 ...
create table student (
id int,
name varchar(30),
birthday data,
score numeric(5,2)
);
2.修改数据表对象:alter table 表名 ...
alter table student rename to student1; #修改表名。修改表名student为student1
alter table student1 rename id to bh; #修改字段名。修改表student1的字段id为bh
alter table student1 alter column name type varchar(40); #修改字段数据类型。修改name字段的数据类型为VARCHAR(40)
alter table student1 drop column birthday; #删除字段。删除字段birthday,同时会删除对应的信息
alter table student1 add column address varchar(200); #添加字段。添加address字段,类型为VARCHAR(200)
3.删除数据表对象:drop table 表名 ...
drop table student1; #删除数据表
drop table if exists student1; #只有数据表存在时才执行删除操作
3简单数据插入
create table student(
id int,
name varchar(30),
birthday date,
score numeric(5,2)
);
向单表中插入数据:insert into 表名 values (值1,值2,...) //值的顺序必须严格根据表的字段顺序
insert into student values (1, '张三', '1990-01-01', 3.85); //如果某个值不知道的话,一定要用null来填
向数据表中指定字段插入数据:insert into 表名 (字段1, 字段2, ...) values (值1, 值2, ...) //字段与值一一对应
insert into student (id, name, birthday) values (2, '李四', '1990-01-02'); //没插入的部分为null
insert into student (id,birthday , name) values (2, '1990-01-02', '李四' ); //字段和值的顺序随意,不过要一一对应
4批量插入数据
create table student(
id int,
name varchar(30),
birthday date,
score numeric(5,2)
);
使用insert语句批量向数据表中插入数据:insert into 表名 (属性名称) values (取值列表1), (取值列表2),...(取值列表n);
insert into student (id, name, birthday) values
(3, '张三1', '1990-02-01'),
(4, '张三2', '1990-02-02'),
(5, '张三3', '1990-02-03');
create table student_new(
id int,
name varchar(30),
birthday date,
score numeric(5,2)
);
使用select查询批量向数据表中插入数据:insert into 表名1 (属性名称) select (属性值) from 表名2 where (查询条件);
insert into student_new select * from student; //将student表中所有字段的内容插入到student_new中
delete from student_new; //删除表student_new中的内容
insert into student_new (id, name) select id, name from student; //将表student中的id,name的内容插入到表student_new中
5数据更新
create table student(
id int,
name varchar(30),
birthday date,
score numeric(5,2)
);
指定条件更新数据:update 表名 set 要更新的字段名 = 要更新的字段内容 where 要更新的哪一条数据;
update student set name = '李四1' where id = 2; //更新id=2的学生姓名为“李四1”
批量更新数据
update student set score = 0; //将student表中的学生学分全更新为0
将指定结果更新到对应字段
update student set score = 1.1+2.3 where id = 2; //更新的内容为指定的结果3.4
6 数据删除
create table student(
id int,
name varchar(30),
birthday date,
score numeric(5,2)
);
数据删除操作
delete from student where id = 4; //删除id=4的记录
delete from student where birthday between '1990-01-01' and '1990-02-01'; //删除生日在1990-01-01到1990-02-01的记录
delete from student; //清空表student
使用truncate清空数据表
truncate table student; //清空表student
delete与truncate的区别
| delete | truncate
执行速度 | 慢 | 快
可指定条件 | 可以 | 不可以
语句分类 | DML | DDL
可以回滚事务(将删除事务找回) | 可以 | 不可以
删除操作记录信息(用于数据恢复) | 记录 | 不记录
7 常用函数介绍
常用的数值函数
函数名称 函数作用
avg() 返回某列的平均值
count() 返回某列的行数
max() 返回某列的最大值 select max(e_salary) from employee;//查询雇员工资最大值
min() 返回某列的最小值 select min(e_salary) from employee;//查询雇员工资最小值
sum() 返回某列的值之和
常用的字符串函数
函数名称 函数作用
length(s) 计算字符串长度 select e_name,length(e_name) from employee;//查询雇员名称及其名称长度
concat(s1,s2,...) 字符串合并函数 select e_no, e_name, e_hireDate, concat(c_no, e_name, e_hireDate) from employee;
ltrim(s)/rtrim(s)/trim(s) 删除字符串空格函数
replace(s,s1,s2) 字符串替换函数
substring(s,n,len) 获取子串函数
常用的日期和时间函数
函数名称 函数作用
extract(type from d) 获取日期指定值函数 select e_no, e_name, e_hireDate, extract(year from e_hireDate), extract(month from e_hireDate), extract(day from e_hireDate) from employee;//将雇员的年,月,日进行拆分
current_date 获取当前日期函数 select current_date, current_time, now();
current_time 获取当前时间函数
now() 获取当前日期时间函数