2021/10/10
前几天打卡牛客网刷题,发现自己还是基础不行,还得再学,今天开始学习《SQL基础教程》这本书,打牢基础,好好刷题,加油!
在官网上下载postgresql13 按照书上的操作一步一步安装,修改配置。
打开SQL Shell(psql)
前四行直接回车即可,第五行输入设置的密码,显示 postgres=# 说明登录成功 。
创建数据库mydb:
create database mydb;
输入 \q 即可断开与postgres的连接
登录之后,输入 \c mydb 按下回车键即可连接数据库mydb
接下来书上讲了一些有关数据库的知识
DB:database 数据库
DBMS:database management system 数据库管理系统
RDBMS: relational database management system 关系数据库管理系统
SQL:structual query language 结构化查询语言
表的结构
数据库和表的关系:就是客户端通过sql语句向RDBMS服务器发送请求,RDBMS从数据库中取出数据并返回给客户端。
表:table 用来管理数据的二维表,一个数据库中可以有多个表。
字段: 表的列(垂直方向)称为字段,它代表了保存在表中的数据项目。
记录:表的行(水平方向)称为记录,它相当于一条数据。
关系数据库必须以行为单位进行数据读写。
行和列交汇的方格称为单元格。一个单元格中只 能输入一个数据 。
根据对 RDBMS 赋予的指令种类的不同,SQL 语句可以分为以下三类。
DDL(Data Defination Language 数据定义语言):
用来创建或删除存储数据用的数据库及数据库中表等对象。
包括:
CREATE:创建数据库和表等对象。
DROP:删除数据库和表等对象。
ALTER:修改数据库和表等对象。
DML(Data Manipulation Language 数据操作语言):
用来查询或者变更表中的数据。
包括:
SELECT:查询。
UPDATE:变更。
DELETE:删除。
INSERT:增加。
DCL(Data Control Language 数据控制语言):
用来确认或取消对数据库中的数据的变更,除此之外,还可以对 RDBMS 的用户是否有权限 操作数据库中的对象(数据库表等)进行设定。
包括:
COMMIT:确认对数据库中的数据进行变更。
ROLLBACK:取消对数据库中的数据进行变更。
GRANT:赋予用户操作权限。
REVOKE:取消用户的操作权限。
书写规范:
sql语句要以 ; 结尾。
sql语句不区分关键字大小写, 但插入到表中的数据是要区分大小写的。
SQL 语句的单词之间需使用半角空格或换行符来进行分隔。
在 SQL 语句中直接书写的字符串、日期或者数字等称为常数。
字符串用单引号 ' ' 括起来,日期也需要括起来,数字不需要
突然好奇创建的数据库会保存在哪里,就去查了一下。
在postgres的data目录下的base里,有很多数字命名的文件
在SQL Shell 中输入
select oid,datname from pg_database;
即可得到不同数据库对应的数字。
(6条消息) Postgres 数据存储位置_万里归来少年心-CSDN博客https://blog.csdn.net/liyazhen2011/article/details/88993728详情我是参考的这个博客。
今天先休息了。
2021/10/11
开始啦今天的学习,今天制定的计划还不够科学,又没完成呜呜,今天先好好学sql吧。
数据库名称、表名和列名等可以使用以下三种字符。
● 半角英文字母 ● 半角数字 ● 下划线(_)
名称必须以半角英文字母作为开头。
名称不能重复。
创建表,create table(
);
字符里面的空格不会忽略。
主键(primary key)就是可 以特定一行数据的列 。非空不可重复。
SQL Shell 用着太麻烦了,我开始用DataGrip了
说实话,DataGrip真得牛逼,只是你不会用而已~ - 知乎 (zhihu.com)c
参考了这篇文章的操作
创建表:create table
删除表:drop table
添加表的列:alter table 表名 add column 字段名 类型
删除表的某列:alter table 表名 drop column 字段名 类型;
向表中添加数据/记录:insert into 表名 values();
变更表名:alter table 表名 rename to 新的表名
跟着书上做了练习题。这些知识都得经常复习呀,不然就忘了。
给列设置别名查询时,中文别名需要用双引号""括起来
在select语句中使用distinct 可以删除重复行
distinct也会将多条null合并为一条
注意:distinct关键字只能用在第一个关列名前面。
带where的条件查询:where必须紧跟在from后面
目录
首先是postgreSQL的安装
数据库的基础知识
Postgres创建的数据库的位置
使用DataGrip
第二章查询基础
sql的注释书写方法:行注释 --
2.2算数运算符与比较运算符
2-3逻辑运算符
第三章 聚合与排序
3.1对表进行聚合查询
3.2 对表进行分组
3.3为聚合结果指定条件
3.4对查询结果进行排序
第三章练习题
多行注释 /* */
算数运算符:+ - * /
所有包含null的计算结果都是null,即使是null/0 结果也是null。
比较运算符:
字符串的比较
字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。
字符的比较,例如,章节“3-3” 肯定是在“2-1”之后的。
不能对null使用比较运算符
希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符
欧克,今天就先学到这里,要去休息了。
2021/10/13
昨天事情有点多就没有打卡,今天继续。
逻辑运算符包括:and not or
SQL中的逻辑运算包括对 真(true)、假(false)和不确定(unknown)进行运算的三值逻辑。
在查询条件当中添加not,not sale_price>=1000就相当于 sale_price<1000
即使不使用not也可以表示出相同的效果,所以在sql中不能滥用not
多个条件查询组合时,使用and或者or进行连接。
and运算符先于or运算符
例如:“商品种类为办公用品”并且 “登记日期是 2009 年 9 月 11 日或者 2009 年 9 月 20 日”
使用如下代码查询结果并不是想要的
AND运算符的优先级高于OR运算符。想要优先执行OR运算符时可以使用括号。
这样就对了。
通过创建真值表,反复进行逻辑运算,无论多复杂的条件都可以得到相应的结果。
SQL语言是三值逻辑的
不带not查询不出null,带not也查询不出null。