前言

再水一篇,这篇文章中记录下开发中学习到关于数据库的知识点,随便记记,防止日后忘记

正文

  • 查询数据库中表和字段信息

    //以下sql基于oracle,mysql数据库不确定
    查询用户创建的表信息,包含表的各种数据,但没有表注释信息:SELECT * from user_tables;
    查询用户创建的表及对应的注释信息,但没有表的其他数据:SELECT * from user_tab_comments
    
    查询数据库表中各个数据库表,表注释,表对应的字段,字段注释
    select a.table_name,a.comments as table_comment,b.column_name,b.comments as column_comment 
    from user_tab_comments a,user_col_comments b 
    where a.table_name=b.table_name;
    
    下面这种,除了上面的数据,还能查到字段的其他数据,例如字段类型,字段的存储空间
    select a.table_name tab_name,c.comments tab_comment,a.column_name col_name,
    	a.comments col_comment,b.data_type field_type,b.data_length data_length
    from user_col_comments a
    JOIN user_tab_columns b on a.table_name=b.table_name and a.column_name=b.column_name
    JOIN user_tab_comments c on a.table_name=c.table_name;
    
    查询登录的当前用户:select * from user_users;
    查看当前用户拥有的角色和权限:select * from user_role_privs;
  • 对数据库模式的理解
    其实我也不太懂数据库模式,但我工作的时候使用navicat的时候有一个疑问,这个问题可能是和数据库模式有关

    我在使用navicat工具连接oracle数据库时,输入用户名和密码,很奇怪,用户名却是数据库表名
    一般像mysql不都是root,或者自己创建一个用户名吗,然后登陆后再创建数据库名,再建表,
    我想大概是组长自己设置这个用户名方便记忆的吧,然而却并不是,oracle中没有数据库的概念,
    只有模式的概念,和数据库其实算是一回事,在oracle中,创建一个模式就是创建一个数据库,而模式的创建
    是与用户绑定在一起的,也就是说,如果你想创建某个数据库,先要去创建这个数据库名称的用户,
    创建好用户后,相应的模式(也可称为数据库)就被创建好了。
    在mysql中,模式也可以被称为数据库,创建一个数据库也是创建一个模式,删除数据库只需要直接执行删除数据库语句即可
    在oracle中,模式也相当于数据库,不同的是,想删除一个模式,就需要删除这个模式对应的用户

    注意:当你使用navicat连接某个oracle数据库时,输入用户名和密码,这实际上就是连接这个用户名对应的数据库
    你可能会看到很多其他的数据库,你可以通过模式名.表名的方式去查看其他数据库的数据,
    但是其他数据库内部的数据是没办法查看的,详情请看下图:

    更多有关于模式的理解,请点击这里,数据库模式(schema)是什么?