UESTC PostgreSQL数据库课程重难点分析
本文最后更新于:2 年前
由于已经有mysql的基础,PostgreSQL的中心会放在于Mysql不同的DBMS语法上,重点记录图形化界面PgAdmin的使用和一下不同的语法特点。
PgAdmin图形界面
整体结构
- 数据库的创建:
- 表,约束的相关查看方式:
表的索引,约束等相关信息在这里都可以看的。
- 创建表和修改表的时候,在图形化界面中大多都是采用属性相关的内容添加:
- SQL语句的执行:
表的创建
- 注意数据类型
MySQL中的varchar
和char
对应的就是这些
- 约束
所有的约束在这个里面定义嗷,可以加名字呀,编辑呀,删除呀。特点是,可以给SQL中的约束取名字,在创建和删除约束的时候会比较方便嗷!
- 约束后期添加也是可以的嗷
这个里面实际上就直接选择关联列就可以了
行动处:
可以定理级联更新和级联删除
定义完成后点击加号才有作用,完成后点击保存更改成功。
- 操作完成之后,刷新一下才有效果嗷!
PostgreSQL语法
- 在MySQL中应该也是一样的,我还没有测试,
create table STUDENT
和create table "STUDENT"
,前者忽略大小写,后者则不忽略,我猜想的结论是:只要没有括号,语句也好,名字也好,全部都是按小写处理执行的,但是打了双引号的我们则遵循字符串的本身的样式。
相同的语法:
create database name;
create table tableName( columnName dataType primary key, );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
- `select * from tableName;`
- `drop table tableName`
- `insert into Student(name) values('刘兔兔')`
- `delete from tableName where xxx`,如果不加where整张表删除
- `update student set email='xxx' where studentid =yyy;`
## 不同的语法:
### Alter语法:
- 这种语法在PostgreSQL中常用,对于表和表级约束操作往往是alter table , 对于列级约束操作alter table alter column...
- 对于数据库的操作,例如`alter database originalName rename to newName; `发现又一个问题改不了???
![image-20210320212939965](https://i.loli.net/2021/03/20/ImkrsCt9Z7HJ6Pp.png)
- `select pid from pg_stat_activity where DATNAME = 'test2';`命令行中用这个可以查询到链接test2的进程,有这个进程链接肯定是改不了的,先断开才能改嗷!
- 放弃了,那个是后台线程关不掉,算了不改了orz。
### 添加约束:
- check约束,这个是mysql中没有的:
```sql
CourseType varchar(10) null check(CourseType in('基础课',"专业课","选修")),添加表级约束:
1 |
|
以constraint为开头的关键字嗷!!!!后面接着是表级约束的名字!!!再后面根据约束的不同来指定不同的行(例如主键,外键等),若是外键,再向外指定连接的表和设定级联关系即可!!!
看的很清楚主键是表级约束,就算primary key没有写成表级约束而是跟在列的后面,它依然是表级约束嗷!!!
数据库表修改SQL语句:
- 要注意哈,在pgadmin右键点开database输入语句时,实际上已经选中了数据库了,后面才是对于表的操作。不管你在哪个表打开query的,本质上你还是在这个数据库这一级。
删除列:
添加列:
注意哈,这个添加列,没有column
!!!后面加上约束也不用constraint
,直接列名 类型 约束
按照顺序写就行了QAQ
删除表级约束:
添加表级约束:
更改表名:
更改列名:
注意一下,rename原列名to新列名,没有column!!!好像只有在丢掉列的时候才有列名???
- 和上面对比,一个是
rename to...
,另外一个是rename 列名 to ...
创建索引:
create index indexName on tableName columnName;
删除索引:
drop index indexName;
修改索引名字:
alter index indexName rename to newName
查询语句新结构:
select xxx,yyy,zzz into <newTableName> where ggg
;
可以把查询结果保存到一张新的表内!