精华内容
下载资源
问答
  • ORACLE的一个表空间对应多个用户

    千次阅读 2017-04-10 10:36:03
    首次对一个表空间分配用户,比如表空间为A,用户为USER01,赋予该用户dba权限,之后想在新建一个只有查询权限的用户USER02,做法如下: 使用USER01用户创建一个新用户USER02,只赋予CONNECT权限。 使用该用户...
    首次对一个表空间分配用户,比如表空间为A,用户为USER01,赋予该用户dba权限,之后想在新建一个只有查询权限的用户USER02,做法如下:
    使用USER01用户创建一个新用户USER02,只赋予CONNECT权限。
    使用该用户查询语句为SELECT * from A.TAB; 其中tab为表空间A的某个表名。
    如果使用用户USER01只需这样查询SELECT * from TAB;
    展开全文
  • MySQL视图的应用之创建视图视图也称虚表,包括执行某个查询返回的一组记录。视图可以简化获取数据的方法,并通过别名来实现抽象查询。为了简化查询,在实际项目开发过程中,通常可以采用为数据库中的某个表建立视图...

    MySQL视图的应用之创建视图

    视图也称虚表,包括执行某个查询返回的一组记录。视图可以简化获取数据的方法,并通过别名来实现抽象查询。

    为了简化查询,在实际项目开发过程中,通常可以采用为数据库中的某个表建立视图的方式。在建立的视图中只有开发人员所关心的字段。分别在输入框中输入登录用户的用户名和密码,单击“进入”按钮后,如果用户输入错误的用户名或密码,则给出错误提示,反之如果输入的用户名和密码正确,则提示成功登录。

    相关mysql视频教程推荐:《mysql教程》

    技术要点

    MySQL中创建视图可以通过create view语句来实现,具体创建格式如下:$create [ or deplace] [algorithm={merge | temptable | undefined}] view view_name[( column_list)] as select_statement [with [cascaded | local] check option]

    algorithm={merge | temptable | undefined}属性用于优化MySQL视图的执行,该属性有3个可用的设置。下面将介绍这3个设置的使用方法。

    merge:该参数使MySQL执行视图时传入的任何子句合并到视图的查询定义中。

    temptable:如果视图低层表中的数据有变化,这些变化将在下次通过表时立即反映出来。

    undefined:当查询结果和视图结果为一一对应关系时,MySQL将algorithm设定为temptable。

    view_name:新建视图的名称。

    select_statement:SQL查询语句用于限定虚表的内容。

    mysql创建视图实现过程

    由于本实例采用视图建立了虚表,所以应首先在“命令提示符”下建立视图,就可以在命令提示符下建立视图。创建视图的代码如下:create view chkadmin as select username, password from user

    在“命令提示符”中创建视图如下:

    44bd7e5ad1e1c32fd4d87f3627916d68.png

    创建完视图chkadmin后,该视图中只含有username和password 两个字段,这样会给密码验证工作带来很大的方便。

    然后我们创建用户输入登录界面,在连接数据库,判断用户是否单击了“进入”按钮,如果是则通过视图chkadmin对用户身份进行验证。该过程代码如下:

    用户名:

    密 码:

    if($_POST['Submit']){

    $name = $_POST['username'];

    $password = $_POST['pwd'];

    header("Content-Type:text/html; charset=utf-8");

    $link = mysqli_connect("localhost", "root", "root");

    $conn = mysqli_select_db($link, "php_cn");

    $sql = ("select * from chkadmin where username='".$name."' and password = '".$password."'");

    $result = mysqli_query($link, $sql);

    $res = mysqli_fetch_array($result, MYSQLI_ASSOC);

    if ($res==false){

    echo "";

    exit();

    }else{

    echo "

    登录成功!

    ";

    }

    }

    当我们输入错误的信息的时候,如下图:

    206ecad7b7513c6f9db437f699a4c34e.png

    当我们输入正确信息的时候,如下图:

    6e26740b86ae70389f86ee0e33d2b900.png

    那么我们关于MySQL创建视图我们就介绍到这里,小伙伴们是不是已经掌握了呢,还没有掌握的小伙伴可以再仔细的阅读一篇,下一篇我们继续介绍MySQL视图的应用,具体请阅读《MySQL视图的应用之修改视图》!

    【相关教程推荐】

    展开全文
  • 前言在原项目中,对于...在Netty下的Websocket长连接中,以API形式获取在线用户数,与在线用户列表,并针对某个用户已API调用的形式进行数据发送,而不需要所谓的前端页面去创建websocket连接。实践流程存放Chann...

    前言

    在原项目中,对于WebSocket的长连接,聊天系统并没有开放接口出来给第三方的系统调用,只有我们系统内部的人员才知道,确切的说系统内部也没有实际的查询接口,那么我们今天就来实现这个功能。

    在Netty下的Websocket长连接中,以API形式获取在线用户数,与在线用户列表,并针对某个用户已API调用的形式进行数据发送,而不需要所谓的前端页面去创建websocket连接。

    实践流程

    存放Channel的容器

    首先,我们需要一个类似ChannelGroup的连接池来存放我们的连接实例,这里我直接在原来本地模拟的一个LikeRedisTemplate中新建了一个ConcurrentHashMap,用于存放对应的用户名——连接实例的键值对。

    方便后期API调用时可以通过这个LikeRedisTemplate中的这个Map进行获取、删除及相关信息。

    /**存放链接池实例*/

    private Map ChannelRedisMap = new ConcurrentHashMap<>();

    /**

    * 存储对应的用户名与Netty链接实例

    * @param name 登录用户名

    * @param channel Netty链接实例

    */

    public void saveChannel(Object name,Object channel){

    ChannelRedisMap.put(name,channel);

    }

    /**

    * 获取存储池中的链接实例

    * @param name 登录用户名

    * @return {@link io.netty.channel.Channel 链接实例}

    */

    public Object getChannel(Object name){

    return ChannelRedisMap.get(name);

    }

    /**

    * 删除存储池实例

    * @param name 登录用户名

    */

    public void deleteChannel(Object name){

    ChannelRedisMap.remove(name);

    }

    /**

    * 获取储存池链接数

    * @return 在线数

    */

    public Integer getSize(){

    return ChannelRedisMap.size();

    }

    /**

    * 返回在线用户列表信息

    * @return 用户名列表

    */

    public Object getOnline() {

    List result = new ArrayList<>();

    for (Object key:ChannelRedisMap.keySet()){

    result.add(key);

    }

    return result;

    }

    Handler中执行存储操作

    有了容器,我们就需要在对应的位置进行连接实例的键值对存储,我目前选择了在聊天消息传输过程中进行存储,暂时还没有抽象出来。

    并在连接断开时也要做相关的处理。

    //用户登录判断

    if (redisTemplate.check(incoming.id(),rName)){

    //临时存储聊天数据

    cacheTemplate.save(rName,rMsg);

    //存储随机链接ID与对应登录用户名

    redisTemplate.save(incoming.id(),rName);

    //存储登录用户名与链接实例,方便API调用链接实例

    redisTemplate.saveChannel(rName,incoming);

    }else{

    incoming.writeAndFlush(new TextWebSocketFrame("存在二次登陆,系统已为你自动断开本次链接"));

    channels.remove(ctx.channel());

    ctx.close();

    return;

    }

    @Override

    public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {

    //删除存储池对应实例

    String name = (String) redisTemplate.getName(ctx.channel().id());

    redisTemplate.deleteChannel(name);

    //删除默认存储对应关系

    redisTemplate.delete(ctx.channel().id());

    channels.remove(ctx.channel());

    }

    发送方法

    我直接在SendUtil中写一个系统发送的方法,输出也是转为TextWebSocketFrame

    /**

    * 想指定链接发送数据

    * @param msg 消息

    * @param channel 指定链接

    * @return {@link String}

    */

    public static String sendTest(String msg,Channel channel) {

    try {

    channel.writeAndFlush(new TextWebSocketFrame( "[系统API]" + msg));

    return "success";

    }catch (Exception e){

    e.printStackTrace();

    return "error";

    }

    }

    定义API

    这个就简单一些了,定义一个统一返回的Bean,还有API的返回工具类,然后写对应的API接口方法。

    @RestController

    @RequestMapping("/back")

    public class NCBackController {

    @Autowired

    private LikeRedisTemplate redisTemplate;

    /**

    * 获取在线用户数

    * @return {@link ResultVo}

    */

    @GetMapping("/size")

    public ResultVo getSize(){

    return ResultVOUtil.success(redisTemplate.getSize());

    }

    /**

    * 获取在线用户列表

    * @return {@link ResultVo}

    */

    @GetMapping("/online")

    public ResultVo getOnline(){

    return ResultVOUtil.success(redisTemplate.getOnline());

    }

    /**

    * API调用向在线用户发送消息

    * @param name 用户名

    * @param msg 消息

    * @return {@link ResultVo}

    */

    @PostMapping("/send")

    public ResultVo send(@RequestParam String name,@RequestParam String msg){

    Channel channel = (Channel) redisTemplate.getChannel(name);

    if (channel == null){

    return ResultVOUtil.error(555,"当前用户连接已断开");

    }

    String result = SendUtil.sendTest(msg,channel);

    return ResultVOUtil.success(result);

    }

    }

    效果

    我在项目中添加Swagger方便查看与简单测试API,引入对应pom,在启动类加一个注解即可。

    启动项目后登陆界面,发送了一个基本消息。

    5a76e5b18608225a657f0117482dd753.png

    Swagger这边的页面打开后,测试几个API,都是成功的。

    2ef82d02db98dcb05e4a1db2fa7f3987.png

    d8415b1a1a7064e35c11e0a0380e062c.png

    f1e2055c667f103aa1b00e53d6e191cd.png

    06ce897794526357142bf4dd1afa20d0.png

    好了,结尾还是成功的,不过作为一个好产品是不能仅仅这样的,后续我们继续完善。

    本项目是本人近期GitHub的核心发展项目,有兴趣的朋友可以去了解下

    GitHub

    项目名:InChat

    项目地址:https://github.com/UncleCatMy...

    项目介绍:基于Netty4与SpringBoot,聊天室WebSocket(文字图片)、Iot物联网-MQTT协议、TCP/IP协议单片机通信,异步存储聊天数据

    如果本文对你有所帮助,欢迎关注个人技术公众号

    展开全文
  • Mallbuilder多用户商城

    2014-09-14 17:39:12
    创建网页 用户可以根据需要自己设置一下相关的个性独立页面,丰富网站的介绍说明及功能。 悬浮JS留言板 会员可以在后台复制代码,任意位置任意网站均可用。 地图模块 和第三方地图合作,可以自动识别用户的地址...
  • 实例258:创建视图实例说明为了简化查询,在实际项目开发过程中,通常可以采用为数据库中的某个表建立视图的方式。在建立的视图中只有开发人员所关心的字段。运行本实例,如图9.6所示,分别在图中输入登录用户的...

    MySQL视图的应用

    视图也称虚表,包括执行某个查询返回的一组记录。视图可以简化获取数据的方法,并通过别名来实现抽象查询。

    实例258:创建视图

    实例说明

    为了简化查询,在实际项目开发过程中,通常可以采用为数据库中的某个表建立视图的方式。在建立的视图中只有开发人员所关心的字段。运行本实例,如图9.6所示,分别在图中输入登录用户的用户名和密码,单击“进入”按钮后,如果用户输入错误的用户名或密码,则给出错误提示,反之如果输入的用户名和密码正确,则提示成功登录。由于本实例采用视图建立了虚表,所以应首先在“命令提示符”下建立视图,如图9.7所示。

    173537414.gif

    图9.6 用户身份验证

    173548916.gif

    图9.7 创建视图

    技术要点

    MySQL中创建视图可以通过create view语句来实现,具体创建格式如下:

    $create [ or deplace] [algorithm={merge | temptable | undefined}] view view_name

    [( column_list)] as select_statement [with [cascaded | local] check option]

    algorithm={merge | temptable | undefined}属性用于优化MySQL视图的执行,该属性有3个可用的设置。下面将介绍这3个设置的使用方法。

    merge:该参数使MySQL执行视图时传入的任何子句合并到视图的查询定义中。

    temptable:如果视图低层表中的数据有变化,这些变化将在下次通过表时立即反映出来。

    undefined:当查询结果和视图结果为一一对应关系时,MySQL将algorithm设定为temptable。

    view_name:新建视图的名称。

    select_statement:SQL查询语句用于限定虚表的内容。

    实现过程

    (1)建立数据库及数据表,本实例中将数据表命名为tb_admin。

    (2)建立完数据表后,就可以在命令提示符下建立视图。创建视图的代码如下:

    create view chkadmin as select name, pwd from tb_admin

    创建完视图chkadmin后,该视图中只含有name和pwd两个字段,这样会给密码验证工作带来很大的方便。

    (3)建立与MySQL数据库的连接。代码如下:

    $conn=mysql_connect("localhost","root","root");

    mysql_select_db("db_database09",$conn);

    mysql_query("set names gb2312");

    ?>

    (4)判断用户是否单击了“进入”按钮,如果是则通过视图chkadmin对用户身份进行验证。该过程代码如下:

    if($_POST[submit]!="")

    {

    include_once("conn.php");

    $name=$_POST[name];

    $pwd=$_POST[pwd];

    $sql=mysql_query("select * from chkadmin where name='".$name."' and

    pwd='".$pwd."'",$conn);

    $info=mysql_fetch_array($sql);

    if($info==false){

    echo "";

    exit;

    }

    else

    {

    echo "

    登录成功!
    ";

    }

    }

    ?>

    举一反三

    根据本实例,读者可以:

    利用视图实现用户信息注册。

    利用视图实现商品信息的降序输出。

    实例259:修改视图

    这是一个修改视图的实例

    录像位置:光盘\mingrisoft\09\259

    实例说明

    为了提高工作效率,对不满足条件的视图可以通过修改的方式进行更改。实现本实例,首先应在数据库中创建数据表tb_changeview,该表也可以在phpMyAdmin中创建,如图9.8所示。打开“命令提示符”窗口,创建视图userinfo,如图9.9所示。更改视图userinfo,如图9.10所示。

    091458441.gif

    图9.8 创建表changeview

    091528703.gif

    图9.9 创建新视图

    091537276.gif

    图9.10 修改视图

    技术要点

    MySQL中修改视图可以通过alter view语句实现,alter view语句具体使用说明如下:

    alter view [algorithm={merge | temptable | undefined} ]view view_name

    [(column_list)] as select_statement[with [cascaded | local] check option]

    algorithm:该参数已经在创建视图中作了介绍,这里不再赘述。

    view_name:视图的名称。

    select_statement:SQL语句用于限定视图。

    实现过程

    (1)建立数据库及数据表,本实例中将数据表命名为tb_changeview。

    (2)创建视图userinfo。代码如下:

    create view userinfo as select * from tb_changeview

    (3)查询视图userinfo。代码如下:

    select * from userinfo

    查看执行结果,可以发现tb_changeview表中的所有的字段都一一列出。

    (4)下面开始修改视图,要求修改后只列出username字段。代码如下:

    alter view userinfo as select * from tb_changeview

    (5)重新查询视图userinfo,从结果中可以发现这时只列出username一个字段,从而说明视图修改成功。

    (2)建立index.php文件,用于实现多表之间的查询,如果学生表和成绩表中有满足条件的记录,则显示这些记录,否则提示没有相关信息。代码如下:

    举一反三

    根据本实例,读者可以:

    实现修改存储商品信息的视图。

    实现修改存储用户注册信息的视图。

    实例260:应用视图

    这是一个应用视图的实例

    实例位置:光盘\mingrisoft\09\260

    实例说明

    在实际的Web开发过程中,多个数据表中可能有很多的字段,但某个模块可能只需要其中的几个字段。为了提高查询速度和简便操作,可以将该模块需要的字段单独提取出来放在某视图中,例如本实例涉及到学生表和成绩表,在建立的视图中只含有与学生成绩有关的字段,如图9.11所示。运行本实例,如图9.12所示,图中的查询结果显示的字段即为视图中的所有字段。

    092019514.gif

    图9.11 创建视图

    092147676.gif

    图9.12 学生成绩列表

    技术要点

    本实例创建的视图涉及到多表查询,这说明多个表之间可以通过视图来组合为一个整体,这样对视图的操作相当于多表查询。但如果这些表中有相同的字段,必须按如下方式书写重名的字段:

    表名1.字段名,表名2.字段名……

    实现过程

    (1)在“命令提示符”窗口下为数据库建立视图。代码如下:

    create view scoreinfo as select sno,sname,

    yw,wy,sx from tb_student,tb_score where tb_student.id=tb_score.sid

    (2)建立数据库连接文件conn.php。代码如下:

    $conn=new mysqli("localhost","root","root","db_database09");

    $conn->query("set names gb2312");

    ?>

    (3)查询视图scoreinfo中的内容,并显示查询结果。代码如下:

    include_once("conn.php");

    $sql=$conn->query("select * from scoreinfo");

    $info=$sql->fetch_array(MYSQLI_ASSOC);

    if($info==NULL)

    {

    echo "暂无学生信息";

    }

    else

    {

    do

    {

    ?>

    }

    while( $info=$sql->fetch_array(MYSQLI_ASSOC));

    }

    ?>

    举一反三

    根据本实例,读者可以:

    实现多表之间的嵌套查询。

    实现多表之间相同信息的提取

    分享到:

    18e900b8666ce6f233d25ec02f95ee59.png

    72dd548719f0ace4d5f9bca64e1d7715.png

    2010-10-18 15:09

    浏览 1286

    评论

    展开全文
  • 实例258:创建视图实例说明为了简化查询,在实际项目开发过程中,通常可以采用为数据库中的某个表建立视图的方式。在建立的视图中只有开发人员所关心的字段。运行本实例,如图9.6所示,分别在图中输入登录用户的...
  • 最近遇到一个问题——客户要更换机器,这个机器里面保存了SVN的用户(权限比较高),而领导只希望他只有某个文件夹的操作,不希望他能动其他的文件,怕把SVN弄乱了,因此需要切换用户,我给他创建了一个比较低权限...
  • GeoMesa 空间索引介绍

    2021-05-13 10:52:11
    这些索引可以同时存在,也可以根据需求只创建某个索引(如业务场景中只有周边范围查询,那么就只需要创建Z2索引,而不用创建其他索引)。 ID索引 适应于根据空间对象ID(称为FID)查询的场景,要求每个空间对象的FID...
  • MySQL视图的应用

    2013-05-05 13:43:00
    视图也称虚表,包括执行某个查询返回的一组记录。视图可以简化获取数据的方法,并通过别名来实现抽象查询。 实例258:创建视图 实例说明 为了简化查询,在实际项目开发过程中,通常可以采用为数据库中的某个表...
  • 教务管理系统

    2013-07-22 22:08:12
    此外,系统要对用户进行身份验证:只有本学院的教师和学生可使用该系统,只有授课教师有权创建一门课程,只有选修本门课程的学生才能参与各种讨论以及下载课程资源,只有教师可撤销某个学生参与其所授课程网上讨论及...
  • 此外,系统要对用户进行身份验证:只有本学院的教师和学生可使用该系统,只有授课教师有权创建一门课程,只有选修本门课程的学生才能参与各种讨论以及下载课程资源,只有教师可撤销某个学生参与其所授课程网上讨论及...
  • 说明:Oracle中需要创建用户一定是要具有dba(数据库管理员)权限的用户才能创建,而且创建的新用户不具备任何权限,连登录都不可以。 用法:create user 新用户名 identified by 密码 例子: 2. 修改密码 说明:...
  • 从passwd文件里删除某个用户记录  你可以使用UNIX/LINUX中一些比较简单的命令或命令组合来执行1、2、3、4、5的任务。对于任务6和7,你需要编写单独的Shell脚本文件(必须分别命名为add和delete)并且在你的主脚本...
  • cookie:是保存在客户端的。类似银行的存折,上面保存用户的存款信息,或者类似积分卡,达到6个印花...sessionid:当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一...
  • hive动态分区 *

    2020-09-24 14:22:04
    往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低。因为hive是批处理系统,所以hive提供了一个动态分区功能,其可以基于查询参数的...
  • MySQL命令大全

    2018-01-15 11:19:17
     此后就创建了一个新用户叫:testuser,这个用户只能从localhost连接到数据库并可以连接到test 数据库。下一步,我们必须指定testuser这个用户可以执行哪些操作:  mysql> GRANT select, insert, delete,update ...
  •  ⑴ 某个ASP.NET Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输入一个名称和密码。  ⑵ 登录页面中输入的内容将直接用来构造动态的SQL命令,或者直接用作存储过程的参数。下面...
  • 索引

    2009-03-11 13:59:00
    索引是一个单独的、物理的数据库结构,用于从表中更...注意作为通用规则,只有当经常查询索引列中的数据时,才需要在表上创建索引。索引占用磁盘空间,并且降低添加、删除和更新行的速度。在多数情况下,索引用于数据检
  • php OA 源码 办公自动化源码

    热门讨论 2010-10-29 00:51:15
    用户可以创建属于自己的名片信息,对同事、朋友、客户、关联单位、政府机关等处的联系人资料分类记录、查询、管理。也便于单位记录业务人员的客户资料,在其离职时避免客户流失。 1.9 报表中心 可以通过报表设计器...
  • MYSQL常用命令大全

    2011-05-30 13:31:24
     此后就创建了一个新用户叫:testuser,这个用户只能从localhost连接到数据库并可以连接到test 数据库。下一步,我们必须指定testuser这个用户可以执行哪些操作:  mysql> GRANT select, insert, delete,update ...
  • 如果用户的网络需要一个以上的域,则用户可以创建多个域。共享相同的公用架构和全局目录的一个或多个域称为域林。如果树林中的多个域有连续的DNS域名,则该结构称为域树。如^60090102c^所示。 ' C, [0 _7 o0 Q0 w, S...
  • 1052 测试任务的用例列表增加搜索功能 1049 备注编辑功能,只有最后一个备注才可以修改或者删除。 1045 详情页面的操作图标都加上提示。 1043 dao.class.php查询sql的时候自动增加deleted=0的条件 1042 增加bug的...
  • <h3>1.5 获取用户创建话题列表 调用地址:[GET] /users/:login/topics.json 返回字段删除</strong>: 1. 用户信息 <code>users</code> (用户创建的话题,势必已经获得该用户信息,且...
  • 在java中,默认创建的socket都是阻塞的。 <p><strong>其次,解释一下同步与异步</strong>: 同步IO,是一种用户空间与内核空间的调用发起方式。同步IO是指用户空间线程是主动发起IO请求的一方,内核空间是被动接受...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 144
精华内容 57
关键字:

创建用户只有查询某个用户