> 文章列表 > 数据库学习笔记-----SQL查询语句和代码演示

数据库学习笔记-----SQL查询语句和代码演示

数据库学习笔记-----SQL查询语句和代码演示

SQL不区分大小写,本文是邹兆年老师的课件和课堂的部分内容总结,部分比较细的内容请看课件

Db笔记(1).pdf

SQL的数据定义

数据

数值型:

  • 整型:INT/SMALLINT/BIGINT        4个字节/两个字节/八个字节
  • 浮点型:NUMERIC/DECIMAL(p,s):定点数,p位有效数字,小数点后s位                                比如numberic(3,1)可以精确储存44.5,但是不可以储存444.5或者33.2这样的数字
  • FLOAT(n):浮点数,精度至少为n位数字
  • REAL同FLOAT但是精度由DBMS决定
  • DOUBLE PERCISION  

布尔类型

  • BOOLEAN 真值是TRUE/FALSE

字符串类型

  • CHAR(n):定长字符串,长度为n,比如身份证号,一块一块存储比较方便
  • VARCHAR(n)变长字符串:最大长度为n,省内存
  • CLOB:超长字符串

枚举型和集合型

用户完整性 

 创建关系模式

创建表就得先创建数据库

下载postgre:不同的电脑操作不同可能会不好使

sudo apt-get update
sudo apt-get install postgresql postgresql-client

创建完毕后系统会创建一个postgre用户,感觉是服务器的用户所以本地找不到服务器的文件夹

sudo -i -u postgres 
psql

这样就进入到了posgre中

create database 卑鄙的我;

退出postgres

\\q 注意没有分号

包括:关系名、属性名、属性类型、主键、外键、完整性约束等:

CREATE TABLE Student{
##关系名和属性#Sno CHAR(6);        *Sno CHAR PRIMARY KEY;//这种方法只能定义含有一种属性关系Sname VARCHAR(10);Ssex CHAR;Sage INT;Sdept VARCHAR(20);
##声明主键和外键#PRAMARY KEY (Sno)  ///如果是双关系就PRMARY KEY(Sno,Sname);PRAMARY KEY (Sno,Cno);FORERGN KEY (Sno) REFERENCES Student(Sno)
};

{Sno,Cno}是SC的主键,Sno是SC的外键,参照Student关系的主键Sno,回忆外键

F的取值必须来源于R 

 操作演示1

查看所有的数据库

\\l 查看所有的数据库

 查看创建的表

查看属性

select * from student;

select Ssex from student;

 select sno, sname from student where sdept = 'CS';

 

select sno, sname from student where sdept in ('CS', 'Math');

去重

select distinct Ssex from student;

 返回大写的值/怎么不改变属性返回大写的值

select sno, upper(sname) from student;

 

 select sno, upper(sname) as SNAME from student;

 模糊查询

查询E开头的人物;

 select sno, sname from student where sname like 'E%';

查询E开头,占两个字节的人物

select sno, sname from student where sname like 'E_';

select sno, sname from student where sname like 'E___';

操作演示 -------常见的错误提示

ERROR:  duplicate key value violates unique constraint "student_pkey"
DETAIL:  Key (sno)=(CS-001) already exists.
违反主键中元素的唯一性原则

ERROR:  null value in column "sno" of relation "student" violates not-null constraint
DETAIL:  Failing row contains (null, ABC, null, null, null).
违反主键不能为空的原则

ERROR:  new row for relation "student" violates check constraint "student_sage_check"
DETAIL:  Failing row contains (CS-005, ABC, null, -1, null).
找不到参考的值

 操作演示2:

区分is & =

空是一个不确定的值不等用=只能用is

 

上课

 *窗口函数

窗口函数并不是分组,具体查询DBMS手册

 多关系查询

笛卡尔积

SELECT Student.Sno, Sname, Cno, Grade
FROM Student, SC
WHERE Student.Sno = SC.Sno;explain加等于执行过程