文章目录
更为详细的操作说明请查看 postgresql的中文文档
为了提高对数据库操作的熟练度,本文是在shell中利用sql语句进行数据库操作,首先打开SQL Shell,进行数据库登录。
1. 数据库的基本操作
输入 help
可以获取帮助信息
输入 \?
可以获取命令列表
输入 \l
可以获取数据库列表
想要进入某个特定的数据库,可以输入命令行 \c 数据库名
想要创建一个新的数据库,可以输入命令 create database 数据库名;
,命令不区分大小写
想要删除数据库,可以调用命令 drop database 数据库名;
,危险操作建议进行前三思!!!
2. 数据表的基本操作
为了练习对数据表的操作,利用 create database test
新建了一个test数据库,再利用 \c test
命令进入该数据库。
可以利用 \d
命令查询该数据库中的所有的数据表,因为数据库是新建的,所以没有找到数据表。
利用 create table table_name( Column_name data_type constrains);
命令创建数据表,可以利用 \d table_name
来查询该数据表的详细信息。
相同的,我们利用drop命令进行删除操作, drop table table_name;
删除数据表
3. 数据的查询
为了更好地进行数据查询,我们先利用 mockaroo 生成存有大量数据的数据表。
sql文件的内容大致如下:
生成的sql文件中只有insert语句,需要自己将create语句写入sql文件中
create table MOCK_DATA (
id bigserial not null primary key,
first_name VARCHAR(50) not null,
last_name VARCHAR(50) not null,
email VARCHAR(50),
gender VARCHAR(50) not null,
birthday DATE not null
);
将sql文件导入数据库中,导入sql文件的语法为 \i '文件所在地址'
3.1 基础的 select 语句
利用 select column_name from table_name
进行数据查询,column_name可多个,也可以用 *
查询所有数据。
3.2 order by 和 distinct
- order by 排序:
select (column_name ...)/* from table_name order by (column_name ...) asc/desc;
exp:
假如我想让数据按照 last_name 的升序进行排序,可以输入命令行select * from mock_data order by last_name asc;
asc可以省略不写,默认是升序。
想让数据按照 last_name 的升序进行排序,可以输入命令行select * from mock_data order by last_name desc;
- distinct 去重:
select distinct (column_name ...)/* from table_name;
exp:
想要根据生日去重,可以输入语句select distinct (birthday) from mock_data;
去重后条数变为930条(原1000条)
3.3 where、and、or
-
where
- 对查询范围进行限制
select column_name from table_name where 限制范围
-
and
- 如果多个条件需要同时满足时,就需要使用 and 将限制范围连接起来
select column_name from table_name where 限制范围1 and 限制范围2 and ...
-
or
-
如果存在多个条件但只需要满足一个时,就需要使用 or 将限制范围连接起来
select column_name from table_name where 限制范围1 or 限制范围2 or ...
3.4 comparison、limit、offset
-
comparison
- 就是利用select语句得出比较结果
-
limit
- 限制数据库显示的行数
select * from table_name limit 行数;
-
offset
- 从 行1 后开始打印 行数2 个行
select * from table_name offset 行1 limit 行数2 ;
3.5 in、between、like
- in
- in操作符允许在where子句中规定多个值。
select column_name/* from table_name where 限制范围 in ('字段内容')
- between
- between操作符在where子句中使用,可以选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
select column_name/* from table_name where 限制范围 between 范围1 and 范围2;
- like
- 类似Ctrl+F,寻找含有特定关键字的数据
select column_name/* from table_name where 限制范围 like 字段;
3.6 group、having
分组
- group by
select column_name/* from table_name group by group_name;
- group by having
select column_name/* from table_name group by group_name having 限制条件;
4. 数据的插入
数据的插入需要使用insert语句,具体语法为 insert into table_name(column_name,....) values ('column_name;,.....);
5. 数据的删除
使用delete语句进行数据的删除,具体语法为 delete from table_name where 删除条件
不推荐硬删除,一般会添加字段标记为已删除。