精华内容
下载资源
问答
  • 要求只用一条sql语句完成操作。...例如:id name--- ---------1 z1 f2 z1 z3 f1 z表,要删除第4、6行数据。怎么删? DELETE FROM table_name a WHERE rowid > ( SELECT min(rowid) FROM table_...
    要求只用一条sql语句完成操作。并且在只知道表结构的情况下(表内容不知)。
    例如:
    id name
    --- ---------
    1 z
    1 f
    2 z
    1 z
    3 f
    1 z
    表中,要删除第4、6行数据。怎么删?

    DELETE 
      FROM table_name a
      WHERE rowid > ( SELECT min(rowid)
      FROM table_name b
      WHERE b.id = a.id and b.name=a.name);

    转载于:https://www.cnblogs.com/zcjshijie/p/4377923.html

    展开全文
  • 数据库数据重复问题

    2020-08-26 16:59:13
    关于重复数据的主要问题是重复数据的类型和怎样删除重复数据 一、重复数据的类型 1.两行数据完全一样,即所有字段都是相同的值(此类型用group by或distinct就可以解决); 2.两行数据部分字段相同,不重复的字段不...

    关于重复数据的主要问题是重复数据的类型和怎样删除重复数据
    一、重复数据的类型
    1.两行数据完全一样,即所有字段都是相同的值(此类型用group by或distinct就可以解决);
    2.两行数据部分字段相同,不重复的字段不重要。
    二、删除重复数据的场景
    场景1:数据在数据库中直接删除,再进行其他操作
    方法1:使用group by 或 distinct先将不重复数据查询出来插入到临时表中,然后删除原表,最后将临时表重命名"alter table 旧表名 rename to 新表名"
    方法2:用语句alter ignore table 表名 add primary key (字段名) 对表建立唯一索引可直接删除主键的重复值,此功能mysql5.7以后不再适用;
    方法3:利用row_number() over函数去重:select * from(select a.*,row_number()over(patition by a.分组列 order by a.排序列 desc) as num from 表名 a) b where b.num = 1;
    场景2:数据在插入到另一张表的过程中删除重复项
    方法1:被插入表首先建立主键或唯一索引,然后再插入(insert ignore into 表名 select * from 表名)

    展开全文
  • 本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改、删除、插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时...如下图所示,在数据库中删除一个数据...

    本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改、删除、插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会判断数据的主键是否存在或重复,判断外键是否重复,这几个问题我推荐使用函数的形式完成,同时推荐一个操作格式,下面将详细介绍.

    一.dataGridView刷新数据

    如下图所示,在数据库中删除一个数据或插入一个数据,我们都希望能够在左边的dataGridView控件中显示操作后的内容,而使用dataGridView1.Refresh()刷新只是刷新页面重绘控件,没有从数据库里读取内容.所以我们需要重新绑定数据,点击按钮故障信息删除后,实现重新读取数据库的值,并显示在控件dataGridView中即可.而这里我采用自定义函数实现重新绑定数据.

     

    代码如下:

    public void ShowInfoQues()
    {
        //定义数据库连接语句:服务器=.(本地) 数据库名=a
        string consqlserver = "Data Source=.;Initial Catalog=a;Integrated Security=True;";
        string sql = "select * from Question";        //定义SQL查询语句 
        DataSet ds = new DataSet();                   //定义数据内存中缓存
        SqlConnection con;                            //定义SQL Server连接对象
        SqlDataAdapter da;                            //数据库命令和数据库连接
        con = new SqlConnection(consqlserver);        //定义SQL Server连接对象
        da = new SqlDataAdapter(sql, con);            //数据库命令和数据库连接
        con.Open();
        try
        {
            da.Fill(ds);                                    //填充数据
            dataGridView1.DataSource = ds.Tables[0];        //获取数据源赋值数据库控件
        }
        catch (Exception msg)
        {
            MessageBox.Show(msg.Message);                   //异常处理
        }
        finally
        {
            con.Close();                    //关闭连接
            con.Dispose();                  //释放连接
            da.Dispose();                   //释放资源
        }
    }

    点击按钮"故障信息删除"后调用该函数ShowInfoQues()即可实现,通常填充数据中需要判断语句如下,如果插入到的结果存在时数据显示在dataGridView控件中,但这样会存在一个问题,当数据库中只存在一个数据时,删除该数据后表中为空就不会更新dataGridView,因为此时已经没有数据就不会执行dataGridView1.DataSource = ds.Tables[0].它会始终显示一行数据,除非在此载入该窗体,所以此时不需要下面判断:

    if (ds.Tables[0].Rows.Count > 0)         //判断是否符合条件的数据记录
    {
        dataGridView1.DataSource = ds.Tables[0];    
    }

    在上面代码函数ShowInfoQues()中我设置为public,因为在点击“故障信息导入”按钮,它会进入另外一个界面,在那个界面填写完要插入的数据后同时更新父窗口dataGridView控件中的数据,实现插入数据更新,其中子窗口中的构造函数将带参数,如下图所示是子界面的代码:

    //父窗体custServ 父窗体中含函数ShowInfoQues()
    custServ cstemp = new custServ();
    public custServInput(custServ cs)
    {
        InitializeComponent();
        cstemp = cs;
    }
    //点击"确认添加"按钮实现满意度调查
    private void button1_Click(object sender, EventArgs e)
    { 
        ...                        //插入数据操作
        cstemp.ShowInfoQues();     //父窗口刷新
        this.Hide();               //隐藏窗体
    }

    父窗体中的代码如下:

    //点击"故障信息录入"按钮
    private void repInf_Click(object sender, EventArgs e)
    {
        custServInput cSI = new custServInput(this);
        cSI.Show();
    }

    二.数据库主外键的判断

    在对数据库进行操作时,通常会遇到判断主键是否存在或是否重复的问题,或判断外键是否存在的问题,因为如果外键不存在是不能插入数据的.在判断主键与外键时,我们可以定义一个函数,通过调用这个函数进行判断.

    //该函数用于判断表中Phoneid(手机序列号)是否存在
    private bool IsPhoneIdentify()
    {
        string consqlserver = "Data Source=.;Initial Catalog=TeleMS;Integrated Security=True;";
        string sql = "select * from Question where phoneid='" + textBox2.Text.Trim() + "'";
        SqlConnection Conn = new SqlConnection(consqlserver);   //定义SQL Server连接对象  
        Conn.Open();
        SqlCommand Cmd = new SqlCommand(sql, Conn);
        SqlDataReader reader = Cmd.ExecuteReader();             //数据库命令和数据库连接
        if (reader.Read())                                      //存在
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    上面代码是判断手机序列号是否存在,它通过判断数据库中phoneid=textBox2内容,如果存在返回true,如果不存在返回false并提示错误信息"该外键不存在,请验证插入!"提示:使用try{..}catch(Exception msg){MessageBox.Show(msg.Message);}finally{..}时C#会自动生成异常信息,但通过自定义函数总体感觉更好,至少让我们能更好的了解数据库原理及常见的操作错误.

    三.推荐格式源代码

     通过上面的叙述,可能你还不知道怎样使用这些函数在对数据库进行操作时进行一些简单的判断,下面通过需要插入如图数据,其中主外键表明:

    我推荐的代码如下:

    //点击"确认记录"按钮实现满意度调查
    private void button1_Click(object sender, EventArgs e)
    {
        if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
        {
            MessageBox.Show("请输入顾客身份证号、售后人员编号和手机序列号!", "信息提示",
                    System.Windows.Forms.MessageBoxButtons.OK,
                    System.Windows.Forms.MessageBoxIcon.Warning);
        }
        else if (IsCusIdentify() == false)   //顾客身份证号重复(主键)
        {
            MessageBox.Show("该顾客身份证号已经存在,请验证输入!", "错误提示",
                System.Windows.Forms.MessageBoxButtons.OK,
                System.Windows.Forms.MessageBoxIcon.Warning);
        }
        else if (IsPhoneIdentify() == false)  //手机序列号不存在(外键)
        {
            MessageBox.Show("该手机序列号不存在,请验证输入!", "错误提示",
                System.Windows.Forms.MessageBoxButtons.OK,
                System.Windows.Forms.MessageBoxIcon.Warning);
        }
        else if (IsUserIdentify() == false)   //售后人员编号不存在(外键)
        {
            MessageBox.Show("该售后人员编号错误,请验证!", "错误提示",
                System.Windows.Forms.MessageBoxButtons.OK,
                System.Windows.Forms.MessageBoxIcon.Warning);
        }
        else if (MessageBox.Show("确认要添加该进货订单信息?", "验证提示",
            System.Windows.Forms.MessageBoxButtons.YesNo,
            System.Windows.Forms.MessageBoxIcon.Question)==System.Windows.Forms.DialogResult.Yes)
        {
            //实现插入数据操作
            string sqlInsert = string.Format(@"insert into ServiceInfo...");
            string consqlserver = "Data Source=.;Initial Catalog=a;Integrated Security=True;";
            SqlConnection cons = new SqlConnection(consqlserver);   //定义SQL Server连接对象  
            SqlCommand cmd = new SqlCommand(sqlInsert, cons);       //执行一个SQL语句
            try
            {
                cons.Open();                                        //打开连接
                cmd.ExecuteNonQuery();                              //返回执行SQL语句的行数
                MessageBox.Show("顾客手机使用满意情况调查数据记录成功!", "信息提示",
                    System.Windows.Forms.MessageBoxButtons.OK,
                    System.Windows.Forms.MessageBoxIcon.Information);
                csrmtemp.ShowInfoQues();                            //父窗口刷新
                this.Hide();                                        //隐藏窗体
            }
            catch (Exception msg)
            {
                MessageBox.Show(msg.Message);                       //异常处理
            }
            finally
            {
                cons.Close();                                       //关闭连接
                cons.Dispose();                                     //释放连接
                cmd.Dispose();                                      //释放资源
            }
        }
    }

    四.总结

    上面的排版可能有点乱,可能写得不是很好!但作者尽力了.原本想分成两篇写的,但因为上面叙述的几点是最近做项目同时遇到的一些知识,所以就同时写了.主要从dataGridView和主外键两个方面叙述,通过自己认为比较好的代码,传递给大家一些东西.希望大家能学到有用的知识,作者已尽力,如果有不足和不喜欢的地方,见谅!

    (By:Eastmount 2013-9-8 夜11点http://blog.csdn.net/eastmount)

    展开全文
  • Oracle数据库面试题

    2018-11-06 14:32:50
    Oracle数据库面试题1. SQL语句分类2.... 使用oracle伪列删除重复数据中的一条8. 如何只显示重复数据9. 什么是数据库的映射10. 如何设计数据库11. 如何实现数据库的优化12. 关系型数据库的关系...


    1. SQL语句分类

    DQL(数据查询语言)select

    DML(数据操作语言)insert、delete、update

    DDL(数据定义语言)create、drop、alter

    DCL(数据控制语言)grant:把权限授予用户、revoke:把权限从用户收回

    TPL(TCL,事务控制语言):commit、rollback

    > select * from sql_name where '条件';
    

    2. Oracle是怎样分页的


    Oracle用rownum进行分页

    分页语句的步骤:

    a. 最内层sql,查询要分页的所有数据

    b. 第二层sql,通过rownum伪列确定显示数据的上限,并且给查询的数据添加rownum伪列的值

    c. 最外层sql,设置显示数据的下限

    select*from

    (select a.*,rownum r from

    (select*from表名 where条件 orderby列) a

    whererownum<=页数*条数) b where r>(页数-1)*条数


    3. truncate和delete区别


    1)Truncate和delete都可以将数据实体删掉,truncate操作不记录到rollback日志,同时数据不能恢复

    2)Truncate是数据定义语言(DDL),delete是数据操作语言(DML)

    3)Truncate不能对视图进行操作,delete操作不会腾出表空间的内存


    4. 说Oracle中经常使用到的函数


    length长度、lower小写、upper大写、to_date转化日期、to_char转化字符、to_number转化数字Ltrim去左边空格、rtrim去右边空格、substr截取字符串、add_month增加或减掉月份、

    5. 主键有几种?


    复合型、整数型、字符型

    6. 怎样创建一个索引,索引使用的原则,有什么优缺点


    create index 索引名 on 表名(列名)

    原则:

    建议索引列建立not null约束

    经常与其他表进行连接的表,在连接列上建立索引

    优缺点:

    创建索引能大大加快检索速度,加强表与表的连接,但是创建索引很占用空间

    7. 使用oracle伪列删除表中的重复数据中的一条


    delete fromtable t where t.rowid!=(select max(t1.rowid) from table t1 wheret.name=t1.name)

    8. 如何只显示重复数据

    select * fromtable group by id having count(*)>1
    

    9. 什么是数据库的映射

    [ x ] 就是将数据库中表与字段对应到模型层类名与属性的过程


    10. 如何设计数据库

    首先分析项目,看看项目中有多少实体(矩形),为每个实体添加属性(椭圆),明确实体之间的关系(菱形),绘制E-R图,将E-R图转换成表格


    11. 如何实现数据库的优化

    1. 调整数据库结构的设计:需要考虑是否使用分区功能、是否建立索引等

    2. 调整数据库的SQL语句

    3. 调整服务器的内存分配

    4. 调整硬盘I/O

    5. 调整操作系统参数


    12. 关系型数据库的关系操作有哪些?

    选择(查询某些行)、投影(查询某些列)、链接(把多张表连接获取数据)、增加、删除、修改


    13. 你知道哪些非关系型数据库,与关系型数据库的区别是?

    	?
    

    14. SQL语句与SQL*PLUS命令的区别

    1)SQL是关系型数据库的标准操作语言,而SQL*PLUS是一个客户端工具,除了执行标准的SQL外,还可以执行工具本身的一些命令。

    2)SQL语句不可以缩写,而SQL*PLUS命令可以缩写


    15. oracle数据库中如何显示表的结构

    新建命令窗口,输入desc 表名


    16. oracle中数据库对象的命名规则

    1)必须由字母开始,长度在1-30个字符之间

    2)包含字母、数字、_、$、#

    3)同一个Oracle服务器所拥有的对象名不能重复

    4)名字不能为Oracle 的保留字

    5)大小写不敏感


    17. 数据库的三大范式是什么?

    1)第一范式:原子件,要求每一列的值不能再拆分了

    2)第二范式:一张表只描述一个实体(若列中有冗余数据,则不满足)

    3)第三范式:所有列与主键直接相关


    18. 事务的特性(ACID)是指什么?

    1)原子性(Atomic):事务中的各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败

    2)一致性(Consistent):事务结束后系统状态是一样的

    3)隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态

    4)持久性(Durable):事务完成后,即使发生灾难性的故障,通过日志和同步备份可以在故障发生后重建数据


    19. MySQL数据库与Oracle数据库有什么区别

    1)应用方面:MySQL是中小型应用的数据库,一般用于个人项目或中小型网站及论坛。Oracle属于大型数据库,一般在具有相当规模的企业应用。

    2)自动增长的数据类型方面:MySQL有自动增长的数据类型。Oracle没有自动增长的数据类型,需要建立一个自增序列

    3)group by用法:MySQL中group by在select语句中可以随意使用,但是在Oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的或者是group by子句中的列,否则报错


    展开全文
  • Oracle数据库学习指南

    2012-07-04 22:12:40
    Oracle2: 1. 《Oracle8 优化技术》摘录 (第一章 安装)...49. 怎样快速查出Oracle 数据库中的锁等待 50. 怎样在SQLPlus中使用 '&' 来实现自定义参数变量? 51. 怎样在查询记录时给记录加锁 52. 自动备份Oracle数据库
  • 也就是说,数据数据库中怎样存储是由数据库管理系统管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变时应用程序不用改变。 ②逻辑独立性是指用户的应用程序与数据库的...
  • 内容主要集中在大多数企业常见的问题之上,如安装和升级到oracle database 11g数据库软件、创建数据库、导出和导入数据数据库的备份与恢复、性能调优,等等。  本书还提供了dba完成本职工作必备的基本的uniix...
  • 3),例如:在一个外部表导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 ...
  • 深入浅出MySQL数据库开发、优化与管理维护

    千次下载 热门讨论 2014-01-21 15:48:01
     23.2.1 避免对同一数据重复检索   23.2.2 使用查询缓存   23.2.3 增加CACHE层   23.3 负载均衡   23.3.1 利用MySQL复制分流查询操作   23.3.2 采用分布式数据库架构   23.4 其他优化措施  ...
  • 16.2.1 避免对同一数据重复检索: 70 16.2.2 使用mysql query cache: 70 16.2.3 加cache层: 71 16.3 负载均衡 71 16.3.1 利用mysql 复制分流查询操作: 71 16.3.2 采用分布式数据库架构: 71 第三篇 管理维护篇 ...
  • oralce

    2008-04-23 15:06:49
    教你Oracle数据库怎样删除重复记录   作者:互联网 来自:互联网 点击:38 时间:2007-7-3 关键词:oracle 数据库 删除重复记录 做项目的时候,一位同事导数据的时候,不小心把一个表的...
  • 实例063 将数据库数据添加到ListBox控件 78 实例064 借助绑定控件实现数据选择录入 79 实例065 设置ListBox控件选择项 80 2.5 选择类控件应用 83 实例066 利用选择控件实现权限设置 83 实例067 利用...
  • Java操作Excel表格问题

    2017-07-03 04:48:05
    怎样实现excel的内容比对,数据数据库中读取出来,另一份数据用excel文件上传, 字段都是一样的,内容重复删除
  • 实例077 TTreeView组件在数据库中的应用 92 2.7 TStringGrid控件应用典型实例 94 实例078 程序运行时对TStringGrid中的数据进行计算 94 实例079 利用TStringGrid实现表单式批量录入数据 96 实例080 在...
  • Python核心编程第二版(中文)

    热门讨论 2015-04-23 16:40:13
    7.6.4 如何删除集合的成员和集合 7.7 集合类型操作符 7.7.1 标准类型操作符(所有的集合类型) 7.7.2 集合类型操作符(所有的集合类型) 7.7.3 集合类型操作符(仅适用于可变集合) 7.8 内建函数 7.8.1 ...
  • Delphi程序开发范例宝典(第3版)》.part1 《delphi程序开发范例宝典(第3版)》全面介绍了delphi程序开发所用到的技术和技巧,共分19章,内容包括窗体与界面设计、控件应用、...实例267 从sql server数据库中提取多媒体...
  • 实例077 ttreeview组件在数据库中的应用 94 2.7 tstringgrid控件应用典型实例 96 实例078 程序运行时对tstringgrid中的数据进行计算 96 实例079 利用tstringgrid实现表单式批量录入数据 98 实例080 在...
  • Python核心编程(中文第二版)

    热门讨论 2009-10-02 12:08:14
     7.6.4 如何删除集合的成员和集合   7.7 集合类型操作符   7.7.1 标准类型操作符(所有的集合类型)   7.7.2 集合类型操作符(所有的集合类型)   7.7.3 集合类型操作符(仅适用于可变集合)   ...
  • 实例063 将数据库数据添加到ListBox控件 78 实例064 借助绑定控件实现数据选择录入 79 实例065 设置ListBox控件选择项 80 2.5 选择类控件应用 83 实例066 利用选择控件实现权限设置 83 实例067 利用选择控件实现...
  • 实例076 TreeView控件在数据库中的应用 96 实例077 带复选框的树状菜单 98 2.9 其他控件典型应用 100 实例078 TrackBar的简单应用 100 实例079 SplitContainer的应用 102 实例080 MaskedTextBox控件的...
  • C#程序开发范例宝典(第2版).part02

    热门讨论 2012-11-12 07:55:11
    实例063 将数据库数据添加到ListBox控件 78 实例064 借助绑定控件实现数据选择录入 79 实例065 设置ListBox控件选择项 80 2.5 选择类控件应用 83 实例066 利用选择控件实现权限设置 83 实例067 利用选择控件...
  • C#程序开发范例宝典(第2版).part13

    热门讨论 2012-11-12 20:17:14
    实例063 将数据库数据添加到ListBox控件 78 实例064 借助绑定控件实现数据选择录入 79 实例065 设置ListBox控件选择项 80 2.5 选择类控件应用 83 实例066 利用选择控件实现权限设置 83 实例067 利用选择控件...
  • 实例063 将数据库数据添加到ListBox控件 78 实例064 借助绑定控件实现数据选择录入 79 实例065 设置ListBox控件选择项 80 2.5 选择类控件应用 83 实例066 利用选择控件实现权限设置 83 实例067 利用选择控件...
  • 实例063 将数据库数据添加到ListBox控件 78 实例064 借助绑定控件实现数据选择录入 79 实例065 设置ListBox控件选择项 80 2.5 选择类控件应用 83 实例066 利用选择控件实现权限设置 83 实例067 利用选择控件...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 132
精华内容 52
关键字:

数据库中怎样删除重复数据