数据库基础day01

今天买了本数据库的书,以SQL为主,把数据库了解下,记录下总结。
P.S. 今天真的累啊!!!最近在考驾照,今天去模拟了,累瘫~

1、SQL数据基本类型
char(n) #固定长度的字符串
varchar(n) #可变长度的字符串,(推荐)
int #整型
smallint #小整数类型(不太懂)
numeric(p,d) #定点数,p是数据长度,d是小数点右边的位数
real, double precision #浮点数与双精度浮点数
float(n) #精度至少为n位的浮点数

#char(10)如果没存到10位,则会自动以空格补全到10位
#SQL提供 nvarchar 类型来存放使用Unicode的多语言数据,很多数据库直接用varchar存放UTF-8.

2、创建关系(表)
create table 表名1
------ (属性名1 域,
------ 属性名2 域 not null,\\not null为可选参数,说明不允许空值
------ primary key (属性名),\\主码
------ foreign key(属性名) references 表名2); \\外码,表以分号结尾

3、添加元组
insert into 表名
----- values(13,‘a’,‘b’);\值以属性的顺序分别加到该属性中去

4、删除元组
----- delete from 表名;\\从表名关系中删除所有元组,不删除该关系。
5、删除关系
drop table 表名;\\比delete from 表名 更强,删除该关系。

6、添加属性
alter table 表名 add 属性名 域;
7、删除属性
alter table 表名 drop 属性名;

查询
1、单关系查询
select 属性名
from 表名;
\\上述方法是不去除重复的,若强行去重复,要在select后加入关键词distinct
select distinct 属性名
from 表名;
若要显式指明不去除重复,加关键词all(用不上)
select all 属性名
from 表名;

在select属性的时候,可以在属性上运用算术运算符,运算对象可以是 常数 或者 元组的属性。例如

select ID,name, dept_name ,salary*1.1
from instructor;

返回工资的1.1倍
*注意,并不会导致该关系的改变。

\\where子句可以筛选满足特定谓词的元组。加在from下一行

select name
from instructor
where dept_name =‘Comp’ and salary >70000;

\\上述选出dept_name为comp并且工资大于7万的名字。
允许在where子句中使用逻辑连词 and、or、not 和比较运算符>,>=, < ,<= 和<>.

2、多关系查询
可以从不同的关系中筛选有共同属性的所需要的值。例如:
\\name,instructor,dept_name在instructor关系中
\\dept_name ,building在 department关系中

select name, instructor , dept_name , building
from instructor ,department
where instructor.dept_name = department.dept_name

当dept_name 在两个关系中都存在时,要用 关系名.属性名 进行区分,
因为name和building只在一个关系中出现,就可以直接用不用加关系名前缀。

3、笛卡尔积
若关系a中属性为(A,B,C)关系b中属性为(1,2,3)
那么a和b的笛卡尔积为(A1,A2,A3,B1,B2,B3)

猜你喜欢

转载自blog.csdn.net/weixin_43782979/article/details/86602344
今日推荐