数据库基础知识

数据库

数据库概述:

概念:DBS(DB和DBMS)DB(Database的缩写)、DBMS(Database Manager System 的缩写)。两者共同构成了 DBS(Database System)。即:DBS(数据库系统) 包含 DB(数据库) 和 DBMS(数据库管理系统)。

简单的说:数据库管理系统是数据库系统的核心,是管理数据库的软件。常见的数据管理系统软件有:Oracle、MySql、Sql Server、SYBASE、informix、DB2等。

关系型数据库:(类似 excel 表格存储数据 )

​ 概述:是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据, 同时也是一个被组织成一组拥有正式描述性的表格 。

  1. 关系:关系数据库的表采用二维表格来存储数据
    是一种按行与列排列的具有相关信息的逻辑组,它类似于Excle工作表。

  2. 属性(字段)

    数据表中的每一列称为一个字段,表是由其包含的各种字段定义的,每个字段描述了它所含有的数据的意义 。

  3. 元组(记录)

    表中的一行即为一个元组,或称为一条记录。


SQL概述

结构化查询语言(Structured Query Language) 即 S-Q-L 发音

高度概括:结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

SQL分类

SQL 分为三种类型:

  1. DDL(数据定义语言(Data Definition Language),开发前的设计):主要指数据对象的创建(表、用户);(主要学习的内容)
  2. DML(数据操作语言(Data Manipulation Language),开发中使用部分):主要指数据库的查询和更新操作;(主要学习的内容)
  3. DCL(数据库控制语言(Data Control Language),系统人员工作):主要是进行权限管理操作(需要结合用户来观察)。此部分由DBA(数据库管理员)负责。

sql基本命令

1: 使用sqlplus 进行 sql命令操作

2:从 cmd 输入sql命名 还是需要切换到 sqsplus

用户登录命令: ( 4个用户)

1.超级用户: sys / 1234

2.管理员用户: system/ manager
3.通用户: scott /tiger
4.大数据用户: sh/sh

登录方式: 用户名和密码

 system/ manager
 scott /tiger

用户切换:

  普通用户: 
       conn scott/tiger   
  如果切换管理员用户: 
       conn sys/1234 as sysdba ;  
  管理员的切换可以简写: 
      conn / as sysdba;

查看用户:

   show user;

用户上锁解锁:

上锁 : 
        1 切换管理用户  conn / as sysdba; 
        2 上锁  : alter user scott account lock; 
        3 切换普通用户  conn scott /tiger   系统提示 acott account lock 上锁了
解锁: 
     1 切换管理用户   conn / as sysdba; 
 	 2 解锁 		   alter user scott account unlock;
     3 切换普通用户	conn scott /tiger (解锁 后 可以登录 )  

修改用户名: 必须是管理员用户才可以修改

 password 用户; 
 password scott; 输入对应的用户名和密码
    1.切换用户:  conn / as sysdba; 
    2.设置用户密码:  password scott;
    3.密码设置 : xxxx (没有显示密码)
    4.密码设置2:xxxx  (不显示密码)
    5.切换用   conn scott/新密码 

**屏幕清理: **

     host cls;

解决 设置 格式参数:

     set pagesize 30  一页显示多少条数据 
     set linesize 200 一行显示多少字节数据 

数据的视图操作工具:

     PLSQL( oracle 视图工具 油漆桶)
     SQLyog ,Navicat (mysql比较好用的视图工具)
     DataDriG  

PLSQL的基本设置:

  sql窗口  书写sql代码     命令窗口  和我们的sqlplus窗口类似 

视图工具 对象 选择 scott用户 :
myobject
tables 表
scott用户 默认有四张 数据表 (学习mysql使用)
1 .选择表 可以查询数据 (表有锁图标 不能修改数据 )
2 .编辑数据 可以修改数据 (编辑数据后 保存数据 / 提交数据 到数据库)
3 .编辑表 就是设置 表的结构

用户管理:

一.创建用户:

语法: create user 用户名 identified by 密码;

创建用户: 
       create user root identified by root;
       用户切换 登录  (不能登录 没有权限)

二.用户授权:

概述: 用户 权限 角色

1.角色: 角色是为了更好地授权 方便管理权限 ( 普通雇员 , 经理 ,副总 ,CEO)

2.权限: 规定哪些能干 哪些不能干 (connect 连接的权限 resource 资源的权限)

授权语法: 必须是管理员才可以授权
grant 权限 to 用户;

 给root 用户授权 connect (连接的权限)
       grant connect to root;    
       connect 这个权限只能连接数据库  
 给root用户授权 resource 权限
 	   1. 切换到管理员用户   conn / as sysdba; 
       2. 授权 grant resource to root;
       3. 切换到 root 用户  conn  root/root 
       4. 创建表: create table t_stu(xxx); 

三.回收角色:把之前的角色 清理掉

语法:revoke 权限 from 用户名;

     1.切换到管理员用户: conn / as sysdba;
     2.回收授权  :  revoke connect from root; 
     3. root登录  会报错误

四.修改密码: 管理员可以修改用户密码:

语法: alter user 用户名 identified by 密码;

 alter user root identified by root;

五.用户删除:

语法:drop user 用户名 [cascade];

语法:cascade 联级删除 ( 把删除的用户 产生的关联数据都删除)

表的操作:

一.创建一张表:
    语法: 
    create 创建     tablecreate table 表名(
    字段1 数据类型(数据长度),
    字段2 数据类型(数据长度),
    字段3 数据类型(数据长度)
    ....
    
 );
   创建一张表:
   create table t_stu(
      sid number(3),
      sname varchar2(10)
   );
   
    create table t_stu  创建一张表 命名t_stu; 
    sid 是表的字段 , number数据类型 长度为3 
    sname是表的字段 ,varchar2 数据类型  长度为10 
   
   注意事项: 
      1. oracle 中sql语句是不区分大小写   如果是小写 oracle 数据库把把小写转成大写 
      2. 如果表已存在  就不能重写创建 
      3. 每个字段都是用逗号隔开 最后一个字段 不用逗号隔开 
      4. 表的命名规范 见名知意 一般命名为 t_表名,
二. 删除表:

语法:drop table 表名;

    删除表 
    drop table t_stu; 
三.表添加一个字段:

语法: alter table 表名 add 字段 字段类型;

    创建表: 
     create table t_stu(
      sid number(3),
      sname varchar2(10)
    );
     添加字段 : 
     alter table t_stu add sage number(2);
四.修改字段类型 :

语法: alter table 表名 modify 字段 新的字段类型;

alter table t_stu modify sage varchar2(2);
五.修改字段名称:

语法: alter table 表名 rename column 旧字段 to 新字段;

 alter table t_stu rename column sage to age;
六.删除表的字段 :

语法: alter table 表名 drop column 字段名;

 alter table t_stu drop column age;
七.注解: (解释 )
  1. 表的注解

语法:comment on table 表名 is ‘注解内容’

	comment on table t_stu is '学生表';
  1. 字段注解

语法:comment on column 表名.字段 is ‘解释内容’;

     comment on column  t_stu.sid is '学生id';
     comment on column t_stu.sname is '学生名字';

数据类型数据类型:

一. 字符型数据类型

1.char 字符型[长度固定]
能够存储2000个字节
系统会分配固定的空间 不会因为数据大小的改变进行 空间的调整 节约了计算空间的时间 提高了效率

2.varchar2 字符型[可变长度]
能够存储4000个字节
相比char 而言 内存利用更高 会随着数据大小进行 长度的动态分配

3.long 字符型[大型的字符串]
能够存储最大长度是2G 文本

      create  table testChar(
          text1 char(4),
          text2 varchar2(4),
          text3 long,
          text4 varchar2
      );    
      注意: 
         char 可以有默认长度  1 个 
         varchar2 必须要给长度  
二.数据类型

number 数据值类型 可以表示我们的小数 整

1.根式: number[p(,s)] p是 整数 s 小数进度

2.number 表示默认的整数 长度 32 最高进度38位

3.number(3) 表示整数的长度是 3

4.number(5,2) 整数是 5个 长度 小数 2个 , 如果 不够2位 补 0 (如果从超过 2位 四舍五入 保留 2位)

      create table testNum(
         id1 number,   -- 默认长度 
         id2 number(5),  -- 5个长度
         id3 number(5,2)  -- 3个整数  2小数 
      );  
三.date 日期类型数据

1.date 日期 精确到秒 2019/11/25:14:21:23

2.timestamp 时间戳 精确到 秒后面的 6 位

      create table testDate(
         time1 date,
         time2 timestamp
      ); 
      -- 插入一个 timestamp 这个时间格式   
      Insert into testDate(time2) values (to_timestamp('1990/07/17','yyyy/mm/dd 			  hh24:mi:ss'));
四.大数据类型

1.blob 存储大型二进制文件

2.clob 存储大型的字符文件

数据库中的约束:

一.非空约束 限定某个字段不能为null
      create table testNull(
        id number(3),
        name varchar2(20) not null
      );
      用户 在字段后面添加  not null 约束我们的 字段不能为null 值  
      如果 不能添加 这个条记录 
二.默认值的约束: 如果字段没有给值 给默认值
      create table  testDefaul(
         id number(10) not null, 
         name varchar2(20) default '老宋',
         age  number(2) default 18
      );
      使用 在 字段后面天添加 default xxx 给默认值就好
三.唯一约束 保证某个字段的具体值是唯一的
      create table testUnique( 
         id number(5) unique,
         name varchar2(20)
      );
      如果出现重复 数据不能添加成功 
      注意: 1 唯一性可以 为null  2个都为null 不算违背了 唯一性原则 一般使用
              unique 要加 not null 约束 
            2.一个字段可以添加多个约束  unique not null  
四.主键约束

1.主键类型 unique + not null

2.主键是自己设置的表示 某一条记录 唯一的约束 表示该字段必须唯一 而且不能重复

3.可以自动创建索引,提升查询的效率

        语法:  字段 primary key;    
          create table testPrimary(
             id number(3) primary key,  -- id 是唯一约束 
             name varchar2(20)
          ); 

如果把表创建完毕了 想再添加我们的 唯一约束 :

语法: alter table 表名 add constraint 标识符 primary key(字段名称);

         create table testPk(
            id number(3),
            name varchar2(20)
         );
         alter table testPk add constraint pk_id  primary key(id);
         
        联合主键: 多个字段联合其来成为主键
        注意事项: 
           1. 主键唯一性 一张表 只能有一个主键 
           2. 一张表可以有多个 unique not null 但只能有一个主键 
五.外键约束 :

外键: 把2张表进行关联 , 从表中重复出现,在主表中作为主键存在

      主表:  一方 
      create table t_class(
          cid number(3) primary key,
          cname varchar2(20)
       ); 
      
      从表:  多方 
      create table t_stu(
         -- 添加 主表的pk 字段
         tid number(3) primary key,
         sname varchar2(20), 
         cid number(3),
         -- 设置 外键 (从表和 主表进行关联) 
         constraint fk_stu_class foreign key (cid) references t_class(cid)
      );
      
     fk_stu_class 外键的标识符  外键取名 
     foreign key 定义外键 
     references  关联那个表的那个字段

创建表以后 如果设置外键(命令)

alter table t_stu add constraint fk_stu_class foreign key(classId) references t_class(cid);
 注意事项: 
 1. 外键可以在从表中重复出现 ,他在主表中是主键 
 2. 一张表可以有多个外键 
 3. 外键可以为null
 4. 外键的作用是关联多表,可以建立表之间的关系 (一对一  一对多 多对多)
 5.  删除主表时候 如果 从表有使用主表的数据 是不能删除的, 从表的数据可以直接删除 
     如果需要把删除 主表 (java班级 )  学生 在使用java班级的数据不能直接删除 
     (可以设置联级删除  java班级删除 会把java班学生也删除 )
 6.  2表关联了 先删除 从表 再删除主表 
     先删除从表 学生   在删除 班级 
 7.  外键是多表查询时 必要条件 
 8.  开发过程中 建议是 逻辑外键 (有逻辑关系 不用设置 外键关联)
六.check 约束 (了解)

check: 保证我们的字段 按照一定的格式在指定的范围 内存储

      create table t_person(
         sname varchar2(20),
         -- sage number(3) check(sage > 20)
         -- sage number(3)    check(sage between  20 and 30)
          sage number(3) check(sage in(18,19,20)) 
      );
      
      添加的 check 约束 
        check(sage > 20)  规定age > 20 
        check(sage between  20 and 30);  规定age 在 20 - 30 之间
        check(sage in(18,19,20))  规定age 必须在 18,19,20
      
       check 约束可以给字段加运算符 和一些关键字: 
       > < = 
       and or 
       in / not in 
       is null / is not null 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值