一、几种常见数据库介绍
-
SQL
:Structured Query Language
- 用于机构化的查询和操作数据
- 适用于关系型数据库管理系统
- 隐藏了如何访问某一条数据的细节
- 有一套标准/协议来描述SQL语言
- 后端必会,后端生涯的基石
-
NoSQL
:- 并不是 SQL 的反面,而是各有不同
- 为了解决特定环境下的问题出现
- eg: MongoDB redis memocache
-
关系型数据库
- 预先定义的数据结构
- 易于关联的数据
- 高效的跨表查询
- Oracle/mySQL/postgreSQL
-
PostgreSQL
- 完全开源免费
- 基于分布式数据库设计
- 良好的社区环境
- 充分验证
二、PostgreSQL 安装和使用
1、安装 brew
2、安装 postgresql
-
brew install postgresql
: 安装包 mkdir demo & cd demo
-
initdb ./
:初始化数据库 -
pg_ctl -D ./ -l ./pg.log start
:启动数据库,其中./pg.log
可自定义,为日志输出位置。如果日志已经创建,可通过pg_ctl -D ./ start
启动数据库,启动完成后,再连接数据库psql pg_playground
-
pg_ctl --help
:可通过这个指令查看pg_ctl
有哪些指令 -
createuser -s username
: 创建一个无密码用户 -
createdb --owner=username pg_palyground
:创建数据库pg_playground
并关联所有者 -
psql pg_playground
: 连接数据库 -
SELECT version();
查询数据库版本 -
\q
:关闭连接 - 创建数据库:
// 连接数据库后,即可创建数据库
CREATE TABLE test_table_1 ( // 敲到左括号,可回车
string_test_1 varchar(32), // 不同字段可用 `,` 分隔
number_test_2 int // 字段名 + 数据类型
); // 最后一行为 `);`
关于数字类型,char
和 varchar
的区别在于第二个为动态字符,括号内数字表示最大长度,如果为 char
,则表示只能使用长度为 32 的字符。
3、常用数据类型有:
char
varchar
-
SMALLINT/INT/BIGINT/DECIMAL
:分别对应 2 / 4 字节整型数字 TEXT
-
NUMERIC
:浮点数 -
DOUBLE PRECISION
:双精度浮点数 BYTEA
DATE
INTERVAL
BOOLEAN
-
ENUM
: 枚举类型,举例说明:
CREATE TYPE mode AS ENUM('mode_1', 'mode_2', 'mode_3');
CREATE TABLE test_table_3 (
mode_test_3 mode
);
此时,表中 mode_test_3 只能取 mode 中的某一个值
4、SQL 常用语句:
-
SELECT * FROM test_table_1;
:在终端输出表test_table_1
的表结构
5、操作表
-
ALTER TABLE test_table_3 ADD COLUMN new_uuid UUID;
: 为表新增一列,可通过SELECT * FROM test_table_3
查询表的前后差异 -
ALTER TABLE test_table_1 ALTER COLUMN string_test_1 TYPE char(32);
:将 test_table_1 中 string_test_1 的类型改为 char -
DROP TABLE test_table_3;
:删除表 - 建表时添加主键约束:
CREATE TABLE test_table_4 (
id INT PRIMARY KEY
);
主键约束的意思是,在向表中插入数据的时候,要保证此字段既是全表唯一且不能为空。
三、PostgreSQL 对表进行增删改查
- 命令查询:在启动 postgreSQL 并连接数据库后,可输入
\h
查看对表进行操作的一些命令 -
\d
: 查看当前数据库下有哪些表 -
\d test_table_1
:查询表的详细信息
eg: 新建一张表,包含 name 和 age, name 不为空,且长度大于4小于16,age 为整型,可不传,默认值为 18:
CREATE TABLE users(
name TEXT NOT NULL CHECK(CHAR_LENGTH(name) > 4 && CHAR_LENGTH(name) < 15),
age INT CHECK(age >= 0) DEFAULT 18
);
创建完成后,可通过 \d users
查看表的信息。
- 插入数据:
INSERT INTO users (name, age) VALUES ('your name', 20);
。可通过SELECT * FROM users;
查询表内数据。此处*
如果代表返回的表内字段,users
表可指定name
或者age
,select 多个可使用,
分隔。 - 根据条件查询表:
SELECT * FROM users WHERE age = 20;
- 删除表中的数据:
DELECT FROM users;
,此指令会删除表中所有的数据。慎用。 - 根据条件删除数据:
DELETE FROM users WHERE age = 18;
。删除 age = 18 的所有数据。 - 更新数据信息:
UPDATE users SET age = 88 WHERE name = 'summer';
网友评论