精华内容
下载资源
问答
  • Delphi动态地使用SQL查询语句

    千次阅读 2017-05-26 15:47:23
    Delphi使用SQL查询语句的途径是:窗体置入TQuery构件,设置其 SQL属性的内容值,此内容为一个字符串数组,数组的每个值对应一行SQL查询语句。 可以程序设计过程事先指定,也可以程序运行重新赋值,...

    在一般的数据库管理系统中,通常都需要应用SQL查询语句来提高程序的动态
    特性。下面介绍如何在Delphi中实现这种功能。
    在Delphi中,使用SQL查询语句的途径是:在窗体中置入TQuery构件,设置其
    SQL属性的内容值,此内容为一个字符串数组,数组的每个值对应一行SQL查询语句。
    可以在程序设计过程中事先指定,也可以在程序运行中重新赋值,即可以实现动态
    地改变程序中的查询语句。假定程序的窗体中有一个名为Query1的TQuery构件,在
    程序运行过程中需要改变它的SQL查询语句内容,则可以引用以下程序行。
    Query1.close;
    {先关闭以前查询的连接}
    Query1.SQL.Clear;
    {清除以前的查询语句}
    Query1.SQL.Add('select * from mytable');
    {增加新的查询语句内容为select * from mytable}
    Query1.Prepare;
    {发送查询到Borland Database Engine (BDE)}
    Query1.open;
    {建立新的查询语句的数据库连接}
    在Delphi中,要灵活地使用SQL查询语句,还需要使用TQuery构件的Params特性,
    即在查询语句中使用参数。Delphi中的SQL语句如需参数,则在参数名称前使用一个
    冒号':'来作为标识。例如:'select * from mytable where id_no=:p'一句,其中
    p为参数,可以在程序运行过程进行在赋值。在程序运行期动态地创建带参数的SQL
    查询语句较为复杂,其过程如下:
    Query1.close;
    {先关闭以前查询的连接}
    Query1.SQL.Clear;
    {清除以前的查询语句}
    Query1.Params.Clear;
    {清除以前查询语句的参数}
    Query1.Params.CreateParam(ftString, 'p',ptInput);
    {创建新的查询语句的参数p}
    Query1.SQL.Add('select * from title1 where NO_GLOBE=:p');
    {增加新的查询语句内容为select * from title1 where NO_GLOBE=:p}
    {其中p为新建的参数}
    Query1.ParamByName('p').asstring:= '1';
    {给新的参数赋值为'1'}
    Query1.Prepare;
    {发送查询到Borland Database Engine (BDE)}
    Query1.open;
    {建立新的查询语句的数据库连接}
    以上两个示例中,SQL查询语句都是SELECT语句,而当SQL语句是UPDATE或INSERT、DELETE时,其中的Query1.Open需要改为Query1.ExecSQL。
    4、动态SQL应用实例介绍
    下面给出一个完成动态SQL查询、批记录移动的数据库程序。程序从数据库my_database的表TITLE_L.DBF中选取符合要求日期的记录,并批量移动到同一个数据库的表my_table.dbf中。
    {指定所要连接的数据库别名}
    Database1.AliasName:='MYDATABASE';
    Database1.DatabaseName:=my_database;
    Database1.connected :=True;
    {指定目标表是Table1}
    Table1.DatabaseName:= ' my_database';
    Table1.TableName:= ' my_table.dbf';
    Table1.Active:=True;
    {指定源数据的内容对应查询Query1}
    Query1.DatabaseName:= ' my_database';
    Query1.close;
    {程序运行时动态添加SQL查询语句}
    Query1.SQL.Clear;
    Query1.Params.Clear;
    Query1.Params.CreateParam(ftInteger, 'update',ptInput);
    Query1.Params.CreateParam(ftInteger, 'dndate',ptInput);
    Query1.SQL.Add('SELECT* FROM TITLE_L');
    Query1.SQL.Add('where LET_DATE<=:update');
    Query1.SQL.Add('AND LET_DATE>:dndate');
    Query1.SQL.Add('ORDER BY NO_LOCAL');
    Query1.Prepare;
    Query1.Params[0].asInteger:=Up_Date;
    Query1.Params[1].asInteger:=Down_Date;
    Query1.open;
    Query1.Active:=True;
    {用DBGrid1来显示将要移动的记录}
    DataSource1.DataSet:= Query1;
    DBGrid1.DataSource:= DataSource1;
    {进行批量记录移动}
    BatchMove1.Mode:=batAppend;
    BatchMove1.RecordCount:=0
    BatchMove1.Source:=Query1;
    BatchMove1.Destination:=Table1;

    BatchMove1.Execute;


    注意:动态SQL语句中需引入符号”:”来标明动态变量

    select * from Content bean where bean.title in (:titles)"


    展开全文
  • django中使用sql语句查询

    千次阅读 2019-05-13 21:37:34
    django提供了一个raw()方法来使用sql语句进行查询 class Person(models.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) birth_date = models.DateField...

    django中提供了一个raw()方法来使用sql语句进行查询

    	class Person(models.Model):
        first_name = models.CharField(max_length=50)
        last_name = models.CharField(max_length=50)
        birth_date = models.DateField(max_length=50)
        Person.objects.raw('SELECT * FROM myapp_person')
        # myapp为你的app的名称
    

    使用translations将查询到的字段映射到模型字段

    	name_map = {'first': 'first_name', 'last': 'last_name', 'bd': 'birth_date', 'pk': 'id'}
        Person.objects.raw('SELECT * FROM some_other_table', translations=name_map)
    

    如果你只想要第一条数据,可以这样使用

    	first_person = Person.objects.raw('SELECT * FROM myapp_person')[0]
    	first_person = Person.objects.raw('SELECT * FROM myapp_person LIMIT 1')[0]
    	当数据库中的数据很多的时候,最好使用第二个方法
    

    如果需要执行参数化查询,可以使用下面这个方法

    	lname = 'Doe'
        Person.objects.raw('SELECT * FROM myapp_person WHERE last_name = %s', [lname])
    

    不使用raw()进行查询

    	from django.db import connection
    
        def my_custom_sql(self):
            with connection.cursor() as cursor:
                cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])
                cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])
                row = cursor.fetchone()
        
            return row
    

    如果要在查询中包含文字百分号,则要使用两个%

    	cursor.execute("SELECT foo FROM bar WHERE baz = '30%%' AND id = %s", [id])
    
    展开全文
  • sql在where查询语句中使用变量

    万次阅读 2018-04-10 18:10:03
    好气啊,sql语句在查询变量时一直使用的是字符串模板${变量},可是这次查询一个日期时,却失败了,如:2018-04-13 最后网上终于找到解决办法了 如下: "select * from records where brr_time='"+ ...

    好气啊,sql语句在查询变量时一直使用的是字符串模板${变量},可是这次查询一个日期时,却失败了,如:2018-04-13
    最后在网上终于找到解决办法了
    如下:

    "select * from records where brr_time='"+ brr_time+"' "
    

    个人理解,加上双引号就是为了防止系统默认为字符串,而+起链接作用。

    展开全文
  • SQL中的子查询使用

    万次阅读 多人点赞 2018-06-11 13:05:46
    把一个查询的结果另一个查询中使用就叫做子查询 初始数据 有五个表:学生表,老师表,课程表,学院表,课程成绩表。 表结构 初始数据 学生表 老师表 课程表 学院表 课程成绩表 单行子...

    这篇文章讲述了SQL中的子查询,如有错误或者不妥之处,还请各位大佬批评指正。

    什么是子查询?

    把一个查询的结果在另一个查询中使用就叫做子查询

    初始数据

    有五个表:学生表,老师表,课程表,学院表,课程成绩表。

    表结构

    这里写图片描述

    初始数据

    1. 学生表
      这里写图片描述
    2. 老师表
      这里写图片描述
    3. 课程表
      这里写图片描述
    4. 学院表
      这里写图片描述
    5. 课程成绩表
      这里写图片描述

    单行子查询

    返回的结果集为单个的子查询,叫做单行子查询。单行比较符有 >、>=、<、<=、!=。

    • 查询平均成绩比‘王五’大的学生id,姓名,平均成绩
    select s.s_id , s.s_name , avg(score)
    from t_student s join t_grade g on s.s_id = g.s_id
    group by s.s_id , s.s_name
    having avg(score) > (select avg(score)
                         from t_student s join t_grade g on s.s_id = g.s_id
                         where s.s_name = '王五'
                         group by s.s_id)  

    查询结果:
    这里写图片描述

    注:子查询中可以嵌套函数,多行子查询不能使用单行比较符。

    多行子查询

    返回的结果集为多个的子查询,为多行子查询,多行子比较符有 IN(等于列中任意一个)、ANY(和子查询返回的某个值比较),ALL(和子查询返回的所有值比较)。

    • 查询其他课程中比课程id为‘400004’课程的任一分数低的学生的学号、姓名、课程号、课程名、分数(ANY)
    select s.s_id , s_name , c.c_id , c_name , score
    from t_grade g join t_student s on g.s_id = s.s_id
                   join t_course c on g.c_id = c.c_id
    having c.c_id != 400004 and avg (score) < any (
                                            select avg(score)
                                            from t_grade 
                                            where c_id = 400004
                                            group by (c_id)
                                            )
    group by c.c_id , s.s_id , s.s_name , c_name ,score

    查询结果:
    这里写图片描述

    • 查询其他课程中比课程id为‘400004’课程的所有分数高的学生的学号、姓名、课程号、课程名、分数(ALL)
    select s.s_id , s_name , c.c_id , c_name , score
    from t_grade g join t_student s on g.s_id = s.s_id
                   join t_course c on g.c_id = c.c_id
    having c.c_id != 400004 and score > all (
                                            select score
                                            from t_grade 
                                            where c_id = 400004
                                            )
    group by c.c_id , s.s_id , s.s_name , c_name ,score

    查询结果:
    这里写图片描述

    总结:ANY相当于和结果集中的任一一个作比较、若满足则返回,ALL相当于和结果集中的所有结果作比较,若满足则返回。

    展开全文
  • Excel中使用SQL语句查询和筛选

    万次阅读 2018-08-22 10:34:08
    今天微博上看到@数据分析精选 分享的一篇文章,是关于《Excel中使用SQL语句实现精确查询》,觉得非常受用,分享给大家。 微博上有人回复评论说直接用vlookup、或者导入数据库进行查询处理就好了,岂不是更高效...
  • matlab中使用sql语言查询过程中,select语句中使用where语句进行过滤筛选,需要使用变量a时,变量a应该写成如下形式: =''',a,'''  ---------------------------------------------------------------------------...
  • sql在where查询语句中使用文本值、数值、变量
  • Access数据库中使用SQL查询分析器

    千次阅读 2011-01-14 18:15:00
     Access数据库常被用于存储本地结构化数据。 因开发或管理的需要有时需要用sql语句分析数据。 但用access自己的向导用... 新建查询中选择设计视图    3. 然后新建查询的上半区域右击, 选中
  • 在SQL查询条件中使用case when取数据堪称SQL里的ifelse用法第一步的id是业务信息的id,除第一步外,步骤id最大的表示当前步骤,每次取当前步骤id存入意见表中,例如:select ID, --唯一标识(与步骤id一致) ...
  • SQL中的内联查询一般什么时候会使用SQL中的内联查询一般什么时候会使用SQL中的内联查询一般什么时候会使用? 例如: SELECT * FROM DEPT,EMP;
  • 在使用sql查询MAX作为条件

    千次阅读 2019-11-20 17:19:22
    在使用sql查询MAX作为条件 开发错误sql SELECT x.prs_max_otime, MAX(x.prs_max) FROM data_cimiss_min_201911 x MAX的是最大值,但是x.prs_max_otime不是最大值对应的时间,而是撞到的第一个时间值 正确sql ...
  • 什么是位数?...比如,我学校的最后一次考试中得了 D (或 80),那么我的全班同学的排名是否前 50%? 举一个具体的例子,我们看看从学校的这些测试分数找到位数的过程:[55, 80, 95, 100, 99
  • 项目开发如果有时修改了一个存储过程,但是如何能够快速的查找到使用了这个存储过程的其它存储过程呢?这个问题 对于规模稍微大些的项目而言,显得尤其重要了,数据库如果有几百个存储过程,难道还一个个找...
  • 在给公司写代码的过程忽然发现在sql语句碰到一些小问题,虽然最终自己解决了,但是不得不说好不容易啊,故写此博客提醒自己,以免日后再在此处浪费时间。 需求: 有两张表,分别是marketChannelInfo表和...
  • Excel中使用SQL语句实现精确查询

    千次阅读 2015-09-22 10:57:22
    来自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html今天微博上看到@数据分析精选 分享的一篇文章,是关于《Excel中使用SQL语句实现精确查询》,觉得非常受用,分享给大家。微博上有人回复评论说直接...
  • WHERE 后面表示过滤的条件,只有满足条件的记录才被选择,因为条件(1=2)为假,其实就是什么都不选择,查询不会返回数据,如果条件是“1=1”就是选择所有记录。
  • 数据库中写法 : select title from b_blog where...当我们想java中使用SQL语句查询时通常会写成: String sql = "select id,title,des,content,userId from b_blog where title like %?%"; 或 String sql = "selec...
  • 在实际使用存储过程是,有时我们希望先判断存储过程的返回结果集是否有记录,然后走不同的业务逻辑,这是就需要在SQL语句直接读取到存储过程的返回结果集,方式如下: 先按照存储过程结果集定义一个变量 ...
  • 最近在写一个JavaWeb项目的时候遇到了一个问题就是,同样的sql语句在数据库可以查询出结果,但是在程序确无法查询...所以,如果你也遇到了这种情况就要注意了,很有可能是你的程序只有在sql语句有中文时不能正...
  • 项目开发如果有时修改了一个存储过程,但是如何能够快速的查找到使用了这个存储过程的其它存储过程呢?这个问题 对于规模稍微大些的项目而言,显得尤其重要了,数据库如果有几百个存储过程,难道还一个个找...
  • 看了原来的代码,发现这个需要原有的sql上新增加两个表的查询;果断使用left join 将数据查出来了;自测通过了直接提测了;昨天晚上快下班的时候,测试提出了一个问题,说搜索单个单个数据的时候出现了重复数据。 ...
  • Hibernate中的sql语句中使用分组查询

    千次阅读 2016-04-11 15:30:45
    今天写代码时需要用到分组查询,对于查询结果的获取有点不明白, 1.我的应用场景: 优化一个分组查询  数据库里面有一张表message(故障表),包括的字段有message_id(故障编码),app_id(项目编码),msg_...
  • ORACLE如何有视图的SQL中使用hint(提示)来设置视图内的SQL查询方式oracle的hint(提示)我想大家都知道使用吧,如果这个没用的话那就不用往下看了。本文主要介绍ORACLE如何有视图的SQL中使用hint(提示)来设置视图...
  • 代码示例: /** * 使用sql语句进行查询操作 * @param sql * @return */ public List queryWithSql(final String sql){ List list =
  • sql 调优之---查询中使用 exist还是 in Use of EXISTS versus IN for SubqueriesIn certain circumstances, it is better to use IN rather than EXISTS. In general, if theselective predicate is in the ...
  • MyEclipse构建SQL查询语句

    千次阅读 2015-02-26 09:18:57
    MyEclipse中的Visual SQL查询编辑器可用于轻松创建复杂的SQL语句,同时...打开Visual SQL查询编辑器将表添加到查询中并创建连接构建一个表达式运行该SQL 持续时间:10分钟 没有MyEclipse?立即下载 1. 打开

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,249
精华内容 15,299
关键字:

在sql查询中使用