0
点赞
收藏
分享

微信扫一扫

Oracle中按天、周、月、季、年统计数据

weednoah 2023-04-28 阅读 107
数据库

目录

前言 

数据库

数据库的建立

数据库的使用

数据库的查看

数据库的删除

模式

查看所有的模式

模式和数据库之间的关系

​编辑建立模式

删除模式

数据类型

查看一个数据库下面的所有表(必须进入要查看的数据库)

创建基本表

查看表结构(查看表建立的字段)

修改表结构(修改已经建立好的表)

视图

视图的作用

视图的保存的方式

建立一个视图

查看所有的视图

查询视图

删除视图

索引

建立索引的目的

索引的建立

索引的删除


前言 


数据库

我们要存放数据也好,创建模式、表、视图、索引也罢,都是在创建数据库的基础上进行的,也就是说,最初的最初,我们要先建立一个数据库,再在数据库里面建立模式、表、试图、索引等。

我们在【MySQL自学之路】第2天里面就已经进行过数据库的创建、使用,不过我们当时并没有详细说明。

数据库的建立

SQL语句:

create database sqlstudy;

注:创建一个名字为sqlstudy的数据库。如果已经创建,则不会再创建,并抛出已存在错误。

数据库的使用

SQL语句:

use sqlstudy;

注:我们一次只能在一个数据库里面操作,我们想要修改哪个数据库的数据,就要先进入(使用)哪个数据库。

数据库的查看

SQL语句:

show databases;

注:查看已经创建的所有数据库。 

数据库的删除

SQL语句:

drop database sqlstudy;

模式

相比肯定会有自学MySQL的小伙伴吧,大家一般在用的时候是不是创建完数据库就直接建立表结构了?其实在建立数据库之后,还有一个层级叫做模式,只不过其可以作为数据库和表之间的一个过渡,所以好多教程或者文章并没有涉及。

注:以下内容为MySQL中使用方法,可以和其他的数据库管理系统有所出入。

查看所有的模式

SQL语句:

SELECT * FROM information_schema.schemata;

模式和数据库之间的关系

一个数据库可以建立多个模式。

在MySQL当中,建立数据库的时候默认会把其作为一个模式,并基于这个模式进行表操作。同样,建立模式的时候默认把其作为一个数据库。

例如:

(1)先建立一个数据库:temp

create database temp;

(2)查看所有的模式:

建立模式

SQL语句:

create schema hahaha;

其他数据库也可以:

删除模式

SQL语句:

级联删除(删除该模式以及该模式下的所有表、试图等)

drop schema <模式名> cascade;

限制删除(如果该模式下有已经创建的表、试图等,则拒绝删除) 

drop schema <模式名> restrict;

默认:

级联删除

drop schema <模式名>;

注:其实在MySQL当中,数据库和模式并没有严格的区分,可以看作是一个东西。但是在其他数据库里面会有显著的区别。


假如说我们不关注模式,一个数据库下面可以存放多张表,而表就是存储数据的地方。

数据类型

表里面之间存放数据,我们需要指定字段对应的数据类型。

常用的数据类型(参考材料《数据库系统概论》):

数据类型
数据类型含义
char(n),  character(n)

长度为n的定长字符串

varchar(n),  charactervarying(n)最大长度为n的变长字符串
clob字符串大对象
blob二进制大对象
int,integer长整数(4字节)
smallint短整数(2字节)
bigint大整数(8字节)
numeric(p,d), decimal(p,d),dec(p,d)定点数。由p位数字组成,小数点后有d位数字
float(n)可选精度浮点数,精度至少为n位数字
boolean逻辑布尔量
date日期,包含年、月、日【yyyy-mm-dd】
time时间,包含时、分、秒【hh:mm:ss】
timestamp时间戳
real取决于机器精度的单精度浮点数
double precision取决于机器精度的双精度浮点数

查看一个数据库下面的所有表(必须进入要查看的数据库)

SQL语句:

# 使用temp数据库
use temp;
# 查看数据库下面的表
show tables;

创建基本表

SQL语句:

create table <table_name>(
<列名> <数据类型> [列级完整性约束],
...
[,表级完整性约束]
);

例如:(表名:student_table, 属性:学号(主键,非空)、姓名(非空)、年龄(非空))

create table student_table(
sno char(20) not null primary key,
name char(20) not null,
age int not null
);

常见的完整性约束:

  • primary key
  • foreign key() reference ...

查看表结构(查看表建立的字段)

SQL语句:

desc <表名>;

修改表结构(修改已经建立好的表)

注:修改表结构不是修改数据,是修改列定义、约束等。

SQL语句:(包含增加、修改、删除)

# 添加一列(家庭地址)
alter table student_table 
add column home char(30);
# 修改列属性(学号由字符串改为可变字符串)
alter table student_table 
modify column sno varchar(20);
# 显示当前表的状态
desc student_table;
# 删除一列(家庭地址)
alter table student_table 
drop column home;
# 显示当前表的状态
desc student_table;


视图

视图的作用

视图可以连接一个或多个表的不同字段,并设置新的约束和关系,可以有效的保护数据,方便对关键数据的查看。

视图的保存的方式

视图在内存中其实保存的是sql语句,并没有保存数据,也就是视图里面的数据可以随着建立视图使用表的数据变化而变化。

建立一个视图

SQL语句:

# 假如说我们没有删除上面建立的地址列
create view address
as
select name, home
from student_table;

查看所有的视图

SQL语句:

show tables;

查询视图

从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,这一过程称为视图消解。

SQL语句:

select *
from address;

删除视图

SQL语句:

drop view address cascade;

注:cascade是级联删除,帮助你把该视图和由他导出的所有视图一起删除。


索引

建立索引的目的

当表的数据量比较大的时候,查询操作会比较费时。建立索引是加快查询速度的有效手段。

索引虽然能加快数据库的查询,但需要占据一定的存储空间,当基本表更新的时候,索引要进行维护,这些都会增加数据库的负担,因此要根据实际应用的需要有选择的建立索引。

索引的建立

SQL语句:

create [unique] index <index_name>
on
<表名>(<列名> <次序>, <列名> <次序>);

# unique:索引的每一个索引值只对应唯一的数据记录
# 次序:desc 降序;asc 升序(默认)。

索引的删除

SQL语句:

drop index <index_name>;

修改索引(只能重命名)

SQL语句:

alter index <old_index_name> rename to <new_index_name>;
举报

相关推荐

0 条评论