精华内容
下载资源
问答
  • 接着第一篇文章,es实现like复合查询,里面案例有用通过时间(--日 :分:秒)进行筛选的, 在这里说下如果通过时间筛选需要对index进行mapping设置滴,不然不行的 首先,创建一个索引index PUT /index 好勒,...

    不知不觉要写第二篇文章了
    接着第一篇文章,es实现like复合查询,里面案例有用到通过时间(年-月-日 时:分:秒)进行筛选的,
    在这里说下如果通过时间筛选需要对index进行mapping设置滴,不然不行的
    首先,创建一个索引index

    PUT  /index
    

    好勒,创建好索引了,接下来开始对索引进行mapping设置,相当于定义数据库表字段,不过不用担心设置了多余的mapping字段,没关系的,索引下面的type会去自动匹配mapping对应的设置的, 如果没匹配到es会默认根据值去分配的
    接下来老习惯,直接上案例mapping
    操作:

    PUT /index/_mapping
    

    mapping时提交的body内容如下

    {
        "index":{
            "mappings":{
                "_default_":{
                    "_source":{
                        "enabled":true
                    },
                    "properties":{
                        "title":{
                            "type":"string",
                            "index":"analyzed",
                            "analyzer":"ik_max_word"
                        },
                        "id":{
                            "type":"integer"
                        },
                        "img":{
                            "type":"string",
                            "index":"no"
                        },
                        "start_time":{
                            "type":"date",
                            "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
                            "ignore_malformed":true
                        },
                        "end_time":{
                            "type":"date",
                            "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
                            "ignore_malformed":true
                        }
                    }
                }
            }
        }
    }
    

    在6.7版本中

    PUT /index/_mapping/type_name
    

    mapping

    {
        "properties":{
            "sn":{
                "type":"keyword"
            },
            "ip":{
                "type":"keyword"
            },
            "create_at":{
                "type":"date",
                "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
                "ignore_malformed":true
            }
        }
    }
    

    解说环节
    算了,应该不需要解说了,不知道上面如何解说了。。。ㄟ( ▔, ▔ )ㄏ完了

    展开全文
  • 一、EF日期格式筛选,获取本年,本月,本日等 1.直接使用DateTime的部分值相等 //获取上一个 DateTime date = DateTime.Now.AddMonths(-1); int count = _context.students.Where(q => q.sbirthday.Value.Yea

    一、EF日期格式筛选,获取本年,本月,本日等

    1.直接使用DateTime的部分值相等

    //获取上一个月
                DateTime date = DateTime.Now.AddMonths(-1);
                int count = _context.students.Where(q => 
                q.sbirthday.Value.Year == date.Year
                &&q.sbirthday.Value.Month== date.Month
                ).Count();


    2.使用时间短筛选

    //获取上2个月到今天
    DateTime start = DateTime.Now.AddMonths(-2);
    DateTime end = DateTime.Now;
    List<student> list = _context.students.Where(q => q.sbirthday >= start && q.sbirthday < end)
        .ToList();
    Console.WriteLine(list.Count);

     

    二、EF日期格式筛选,方式2 ,使用SqlFunctions

    在EF中日期筛选需要使用SqlFunctions,特别需要注意一下命名空间

    namespace System.Data.Entity.SqlServer
    {
        //
        // 摘要:
        //     包含在 Linq to Entities 中公开 SqlServer 方法的函数存根。
        public static class SqlFunctions

    时间差计算函数,对应SqlServer数据库的DATEDIFF函数

            //
            // 摘要:
            //     返回所指定开始日期和结束日期之间的指定日期部分边界的计数。
            //
            // 参数:
            //   datePartArg:
            //     要计算时间间隔差值的日期部分。
            //
            //   startDate:
            //     第一个日期。
            //
            //   endDate:
            //     第二个日期。
            //
            // 返回结果:
            //     两个日期之间的时间间隔数。
            [DbFunction("SqlServer", "DATEDIFF")]
            [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "startDate")]
            [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "endDate")]
            [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "datePartArg")]
            public static int? DateDiff(string datePartArg, DateTime? startDate, DateTime? endDate);

    关于DATEDIFF函数,计算差值为指定类型的总差值:

    	select DATEDIFF(day,'2016-1-1','2017-1-1');
    	select DATEDIFF(month,'2016-1-1','2017-1-1');
            select DATEDIFF(year,'2016-1-1','2017-1-1');


    注:对应需要判断大于多少天或月的处理逻辑需要使用表达式>数字,例如:大于3天的记录 DATEDIFF(Day,'xx','xx')>3
    判断少于多少天需要表达式<=数字

     

    使用实例:

    DateTime date = DateTime.Now.AddMonths(-1);
    //本年
    int count1 = _member.DbSet.Where(q => SqlFunctions.DateDiff("year", q.ActiveTime, date) == 0).Count();
    //本月
    int count2 = _member.DbSet.Where(q => SqlFunctions.DateDiff("month", q.ActiveTime, date) == 0).Count();
    //本天
    int count3 = _member.DbSet.Where(q => SqlFunctions.DateDiff("day", q.ActiveTime, date) == 0).Count();

    自动生成的Sql代码:

    exec sp_executesql N'SELECT 
    [Extent1].[ActiveAmount] AS [ActiveAmount]
    FROM [dbo].[Member_Info] AS [Extent1]
    WHERE ([Extent1].[IsActive] = 1) 
    AND (0 = (DATEDIFF(day, [Extent1].[ActiveTime], @p__linq__0)))',N'@p__linq__0 datetime2(7)',@p__linq__0='2017-01-02 00:00:00'

     

    三、筛选指定月日时间段之间的数据,不关心哪一年

    原理使用 Sql中 的  DayOfYear ,当前时间的本年中第几天,在开始时间结束时间的本年中第几天来判断。

    一下是EF Core中的代码示例:

                if (payStart != null)
                    query = query.Where(q => q.FeeTime.DayOfYear >= payStart.Value.DayOfYear);
                if (payEnd != null)
                    query = query.Where(q => q.FeeTime.DayOfYear < payEnd.Value.DayOfYear);

    执行Sql 时生成的代码:

    exec sp_executesql N'SELECT [q].[ID], [q].[CompanyID], [q].[CompanyName], xxxxxxxx
    FROM [ProjectInfo] AS [q]
    WHERE (DATEPART(dayofyear, [q].[FeeTime]) >= @__payStart_Value_DayOfYear_0) AND (DATEPART(dayofyear, [q].[FeeTime]) < @__payEnd_Value_DayOfYear_1)
    ORDER BY [q].[CreateTime] DESC, [q].[State]
    OFFSET @__p_2 ROWS FETCH NEXT @__p_3 ROWS ONLY',N'@__payStart_Value_DayOfYear_0 int,@__payEnd_Value_DayOfYear_1 int,@__p_2 int,@__p_3 int',@__payStart_Value_DayOfYear_0=206,@__payEnd_Value_DayOfYear_1=231,@__p_2=0,@__p_3=10

     

     

     

     

    更多参考:

    sqlserver计算时间差DATEDIFF 函数

    EF日期筛选异常:SqlServer.DATEDIFF”函数的 DATEPART 参数必须是文字字符串。

    http://blog.163.com/m13864039250_1/blog/static/21386524820141184595445/

    展开全文
  • Salesforce 日期筛选器参考

    千次阅读 2018-03-29 10:01:43
    在视图中可以直接在条件处填写一下筛选器即可筛选出相应的数据

    在视图中可以直接在条件处填写一下筛选器即可筛选出相应的数据


    展开全文
  • mysql面试题

    千次阅读 2019-09-23 12:28:36
    Timestamp:以时间戳格式存储,占用4个字节,范围小1970-1-12038-1-19,显示依赖于所指定得时区,默认在第一个列行的数据修改可以自动得修改timestamp列得值 Date:(生日)占用得字节数比使用字符串.datatime.int...

    最全MySQL面试题和答案

    Mysql 的存储引擎,myisam和innodb的区别。

    答:

    1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。

    2.innodb是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上),适合大数据,大并发。

    数据表类型有哪些

           答:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。
           MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。
           InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。

    MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

    a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
    b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
    c. mysql库主从读写分离。
    d. 找规律分表,减少单表中的数据量提高查询速度。
    e。添加缓存机制,比如memcached,apc等。
    f. 不经常改动的页面,生成静态页面。
    g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

    对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?

    答:a. 确认服务器是否能支撑当前访问量。
    b. 优化数据库访问。
    c. 禁止外部访问链接(盗链), 比如图片盗链。
    d. 控制文件下载。
    e. 使用不同主机分流。
    f. 使用浏览统计软件,了解访问量,有针对性的进行优化。

    如何进行SQL优化?

    答:
    (1)选择正确的存储引擎
    以 MySQL为例,包括有两个存储引擎 MyISAM 和 InnoDB,每个引擎都有利有弊。
    MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。

    InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。但是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。

     

    (2)优化字段的数据类型

    记住一个原则,越小的列会越快。如果一个表只会有几列罢了(比如说字典表,配置表),那么,我们就没有理由使用 INT 来做主键,使用 MEDIUMINT, SMALLINT 或是更小的 TINYINT 会更经济一些。如果你不需要记录时间,使用 DATE 要比 DATETIME 好得多。当然,你也需要留够足够的扩展空间。

     

    (3)为搜索字段添加索引

    索引并不一定就是给主键或是唯一的字段。如果在你的表中,有某个字段你总要会经常用来做搜索,那么最好是为其建立索引,除非你要搜索的字段是大的文本字段,那应该建立全文索引。

     

    (4)避免使用Select *从数据库里读出越多的数据,那么查询就会变得越慢。并且,如果你的数据库服务器和WEB服务器是两台独立的服务器的话,这还会增加网络传输的负载。即使你要查询数据表的所有字段,也尽量不要用*通配符,善用内置提供的字段排除定义也许能给带来更多的便利。

     

    (5)使用 ENUM 而不是 VARCHAR

    ENUM 类型是非常快和紧凑的。在实际上,其保存的是 TINYINT,但其外表上显示为字符串。这样一来,用这个字段来做一些选项列表变得相当的完美。例如,性别、民族、部门和状态之类的这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而不是 VARCHAR。

     

    (6)尽可能的使用 NOT NULL

    除非你有一个很特别的原因去使用 NULL 值,你应该总是让你的字段保持 NOT NULL。 NULL其实需要额外的空间,并且,在你进行比较的时候,你的程序会更复杂。 当然,这里并不是说你就不能使用NULL了,现实情况是很复杂的,依然会有些情况下,你需要使用NULL值。

     

    (7)固定长度的表会更快

    如果表中的所有字段都是“固定长度”的,整个表会被认为是 “static” 或 “fixed-length”。 例如,表中没有如下类型的字段: VARCHAR,TEXT,BLOB。只要你包括了其中一个这些字段,那么这个表就不是“固定长度静态表”了,这样,MySQL 引擎会用另一种方法来处理。

     

    固定长度的表会提高性能,因为MySQL搜寻得会更快一些,因为这些固定的长度是很容易计算下一个数据的偏移量的,所以读取的自然也会很快。而如果字段不是定长的,那么,每一次要找下一条的话,需要程序找到主键。

     

    并且,固定长度的表也更容易被缓存和重建。不过,唯一的副作用是,固定长度的字段会浪费一些空间,因为定长的字段无论你用不用,他都是要分配那么多的空间。

     

    如何设计一个高并发的系统

    ① 数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引的优化

    ② 使用缓存,尽量减少数据库 IO

    ③ 分布式数据库、分布式缓存

    ④ 服务器的负载均衡

    锁的优化策略

    ① 读写分离

    ② 分段加锁

    ③ 减少锁持有的时间

    ④ 多个线程尽量以相同的顺序去获取资源

    等等,这些都不是绝对原则,都要根据情况,比如不能将锁的粒度过于细化,不然可能会出现线程的加锁和释放次数过多,反而效率不如一次加一把大锁。这部分跟面试官谈了很久

    索引的底层实现原理和优化

    B+树,经过优化的B+树

    主要是在所有的叶子结点中增加了指向下一个叶子节点的指针,因此InnoDB建议为大部分表使用默认自增的主键作为主索引。

     什么情况下设置了索引但无法使用 

    ① 以“%”开头的LIKE语句,模糊匹配

    ② OR语句前后没有同时使用索引

    ③ 数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型)

    SQL语句的优化 

    order by要怎么处理

    alter尽量将多次合并为一次

    insert和delete也需要合并

    等等

    实践中如何优化MySQL

    我当时是按以下四条依次回答的,他们四条从效果上第一条影响最大,后面越来越小。

    ① SQL语句及索引的优化

    ② 数据库表结构的优化

    ③ 系统配置的优化

    ④ 硬件的优化

    sql注入的主要特点

    变种极多,攻击简单,危害极大

    sql注入的主要危害

    未经授权操作数据库的数据

    恶意纂改网页

    私自添加系统账号或者是数据库使用者账号

    网页挂木马

    优化数据库的方法

    1.  选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置NOTNULL,例如’省份’、’性别’最好适用ENUM
    2.  使用连接(JOIN)来代替子查询
    3.  适用联合(UNION)来代替手动创建的临时表
    4.  事务处理
    5.  锁定表、优化事务处理
    6.  适用外键,优化锁定表
    7.  建立索引
    8.  优化查询语句

     

    简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)

    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

    普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。

     

    普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性。

     

    主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。

    索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引,这就是联合索引。

     

    索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。

    数据库中的事务是什么?

    事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。ACID 四大特性,原子性、隔离性、一致性、持久性。

    了解XSS攻击吗?如何防止?

    XSS是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的Activex控件执行恶意的行为。
    使用htmlspecialchars()函数对提交的内容进行过滤,使字符串里面的特殊符号实体化。

    SQL注入漏洞产生的原因?如何防止?

    SQL注入产生的原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。

    防止SQL注入的方式:
    开启配置文件中的magic_quotes_gpc 和 magic_quotes_runtime设置

    执行sql语句时使用addslashes进行sql语句转换

    Sql语句书写尽量不要省略双引号和单引号。

    过滤掉sql语句中的一些关键词:update、insert、delete、select、 * 。

    提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。

    Php配置文件中设置register_globals为off,关闭全局变量注册

    控制错误信息,不要在浏览器上输出错误信息,将错误信息写到日志文件中。

     

     

    为表中得字段选择合适得数据类型(物理设计)

     字段类型优先级: 整形>date,time>enum,char>varchar>blob,text
     优先考虑数字类型,其次是日期或者二进制类型,最后是字符串类型,同级别得数据类型,应该优先选择占用空间小的数据类型

    存储时期

    Datatime:以 YYYY-MM-DD HH:MM:SS 格式存储时期时间,精确到秒,占用8个字节得存储空间,datatime类型与时区无关
    Timestamp:以时间戳格式存储,占用4个字节,范围小1970-1-1到2038-1-19,显示依赖于所指定得时区,默认在第一个列行的数据修改时可以自动得修改timestamp列得值
    Date:(生日)占用得字节数比使用字符串.datatime.int储存要少,使用date只需要3个字节,存储日期月份,还可以利用日期时间函数进行日期间得计算
    Time:存储时间部分得数据
    注意:不要使用字符串类型来存储日期时间数据(通常比字符串占用得储存空间小,在进行查找过滤可以利用日期得函数)
    使用int存储日期时间不如使用timestamp类型

     

    对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题:

    a)、索引的目的是什么?
    快速访问数据表中的特定信息,提高检索速度

    创建唯一性索引,保证数据库表中每一行数据的唯一性。

    加速表和表之间的连接

    使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

    b)、索引对数据库系统的负面影响是什么?
    负面影响:
    创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。

    c)、为数据表建立索引的原则有哪些?
    在最频繁使用的、用以缩小查询范围的字段上建立索引。

    在频繁使用的、需要排序的字段上建立索引

    d)、 什么情况下不宜建立索引?
    对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引。

    对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等

     简述在MySQL数据库中MyISAM和InnoDB的区别

    区别于其他数据库的最重要的特点就是其插件式的表存储引擎。切记:存储引擎是基于表的,而不是数据库。

    InnoDB与MyISAM的区别:

    InnoDB存储引擎: 主要面向OLTP(Online Transaction Processing,在线事务处理)方面的应用,是第一个完整支持ACID事务的存储引擎(BDB第一个支持事务的存储引擎,已经停止开发)。

    特点:

    · 行锁设计、支持外键,支持事务,支持并发,锁粒度是支持mvcc得行级锁;

     MyISAM存储引擎: 是MySQL官方提供的存储引擎,主要面向OLAP(Online Analytical Processing,在线分析处理)方面的应用。
    特点:

    不支持事务,锁粒度是支持并发插入得表级锁,支持表所和全文索引。操作速度快,不能读写操作太频繁;

     解释MySQL外连接、内连接与自连接的区别

    先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配。

    内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行。
    外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中
    的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。

    左外连接,也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL来填充。右外连接,也称右连接,右表为主表,右表中的所有记录都会出现在结果集中。左连接和右连接可以互换,MySQL目前还不支持全外连接。

    写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)

    MyISAM、InnoDB、BDB(BerkeleyDB)、Merge、Memory(Heap)、Example、Federated、
    Archive、CSV、Blackhole、MaxDB 等等十几个引擎

    Myql中的事务回滚机制概述

    事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤销。

    要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前的状态,而第一个表已经被修改完毕。而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务回滚

     

    SQL语言包括哪几部分?每部分都有哪些操作关键字?

    答:SQL语言包括数据定义(DDL)、数据操纵(DML),数据控制(DCL)和数据查询(DQL)四个部分。

    数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等

    数据操纵:Select ,insert,update,delete,

    数据控制:grant,revoke

    数据查询:select

     

    完整性约束包括哪些?


    答:数据完整性(Data Integrity)是指数据的精确(Accuracy)和可靠性(Reliability)。

    分为以下四类:

    1) 实体完整性:规定表的每一行在表中是惟一的实体。

    2) 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。

    3) 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。

    4) 用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。

    与表有关的约束:包括列约束(NOT NULL(非空约束))和表约束(PRIMARY KEY、foreign key、check、UNIQUE) 。

     

    什么是事务?及其特性?


    答:事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。

    事务特性:

    (1)原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。

    (2)一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态

    (3)隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,

    (4) 持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。

    或者这样理解:

    事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。

     

    什么是锁?


      答:数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

    加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。

    基本锁类型:锁包括行级锁和表级锁

     

    什么叫视图?游标是什么?


    答:视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

      游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

     

    什么是存储过程?用什么来调用?


    答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。

     

    索引的作用?和它的优点缺点是什么?


    答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。

     

    如何通俗地理解三个范式?  


    答:第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;

    第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;  

    第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。。

    范式化设计优缺点:

    优点:

    可以尽量得减少数据冗余,使得更新快,体积小

    缺点:对于查询需要多个表进行关联,减少写得效率增加读得效率,更难进行索引优化

    反范式化:

    优点:可以减少表得关联,可以更好得进行索引优化

    缺点:数据冗余以及数据异常,数据得修改需要更多的成本

     

    什么是基本表?什么是视图?


    答:基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。  视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表  

     

    试述视图的优点?


    答:(1) 视图能够简化用户的操作  (2) 视图使用户能以多种角度看待同一数据; (3) 视图为数据库提供了一定程度的逻辑独立性; (4) 视图能够对机密数据提供安全保护。

     

     NULL是什么意思


    答:NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 NULL值进行比较,并在逻辑上希望获得一个答案。

    使用IS  NULL来进行NULL判断

     

    主键、外键和索引的区别?


    主键、外键和索引的区别

    定义:

     主键–唯一标识一条记录,不能有重复的,不允许为空

     外键–表的外键是另一表的主键, 外键可以有重复的, 可以是空值

     索引–该字段没有重复值,但可以有一个空值

    作用:

     主键–用来保证数据完整性

     外键–用来和其他表建立联系用的

     索引–是提高查询排序的速度

    个数:

     主键–主键只能有一个

     外键–一个表可以有多个外键

     索引–一个表可以有多个唯一索引

     

    你可以用什么来确保表格里的字段只接受特定范围里的值?


    答:Check限制,它在数据库表格里被定义,用来限制输入该列的值。

    触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。

     

    说说对SQL语句优化有哪些方法?(选择几条)


    (1)Where子句中:where表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后。

    (2)用EXISTS替代IN、用NOT EXISTS替代NOT IN。

    (3) 避免在索引列上使用计算

    (4)避免在索引列上使用IS NULL和IS NOT NULL

    (5)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

    (6)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

    (7)应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

     

    SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?


    答:子查询:嵌套在其他查询中的查询称之。

    子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。

    所有的子查询可以分为两类,即相关子查询和非相关子查询

    (1)非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。

    (2)相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。

    故非相关子查询比相关子查询效率高

     

    char和varchar的区别?


    答:是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:  

    char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).  

    varchar得适用场景:

    字符串列得最大长度比平均长度大很多 2.字符串很少被更新,容易产生存储碎片 3.使用多字节字符集存储字符串

    Char得场景:

        存储具有近似得长度(md5值,身份证,手机号),长度比较短小得字符串(因为varchar需要额外空间记录字符串长度),更适合经常更新得字符串,更新时不会出现页分裂得情况,避免出现存储碎片,获得更好的io性能。

    展开全文
  • 数据库面试

    千次阅读 多人点赞 2019-02-13 09:03:42
    链事务:可看做第二种事务的变种,它在事务提交,会将必要的上下文隐式传递给下一个事务,当事务失败,可以回滚最近的事务,不过链事务只能回滚最近的保存点,而带保存点的扁平化事务是可以回滚任意一个...
  • 【数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    在逻辑数据独立性里,数据的逻辑结构发生改变或存储关系的选择发生改变用户不会受影响。改变概念模式,例如增加和删除实体、增加和删除属性、增加和删除联系,不需要改变现有的外模式或重写应用程序。在DBMS中只...
  • 软件测试面试题汇总

    万次阅读 多人点赞 2018-09-27 12:31:09
    转载自: ... 软件测试面试题汇总 测试技术面试题 ...........................................................................................................
  • 日期筛选数据 按日期显示数据 按日期统计数据 运行环境为 windows系统,64位,python3.5。 1 读取并整理数据 首先引入pandas库 import pandas as pd 从csv文件中读取数据 df = pd.read...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    中间语言代码不是CPU可执行的机器码,在程序运行,必须由通用语言运行环境(Common Language Runtime,CLR)中的既编译器(JUST IN Time,JIT)将中间语言代码翻译为CPU可执行的机器码,由CPU执行。CLR为C#语言中间...
  • Tomcat面试题+http面试题+Nginx面试题+常见面试题

    千次阅读 多人点赞 2019-12-12 15:04:43
    Unix domain socket的流程不会走TCP那层,直接以文件的形式,以stream socket通信。如果是TCP Socket,则需要走IP层。说的通俗一点,追求可靠性就是选择TCP(需要占用一个端口,更稳定,如:127.0.0.1:9000),...
  • pandas处理日期时间,按照时间筛选

    万次阅读 多人点赞 2017-09-20 17:35:00
    pandas处理日期时间,按照时间筛选 ...按日期筛选数据 按日期显示数据 按日期统计数据 运行环境为 windows系统,64位,python3.5。 1 读取并整理数据 首先引入pandas库 import pandas as pd ...
  • 主要解决的是后一天的问题~容易漏掉最后一天~第一种方法,拼接String,第二种方法直接在最后一天加一天 第一: <if test="beginDate != null and beginDate != '' and endDate != null and endDate != ''"&...
  • WPF开发教程

    万次阅读 多人点赞 2019-07-02 23:13:20
    ------WPF开发教程 目录 WPF基础入门....... 1. WPF基础之体系结构......2. WPF基础之XAML....3. WPF基础之基元素......4. WPF基础之属性系统......5. WPF基础之路由事件......7. WPF基础之样式设置和模板化... ...
  • web前端简历的详解

    万次阅读 多人点赞 2016-11-22 08:55:26
    就不存在填写什么了,根据意向岗位,直接更改简历即可,网上投递简历要注意不要重复投递,会被网站(51job)直接拉为:恶意投递简历,用人方根本无法看到简历,可以电话询问一下是否开始筛选简历等等。 三、...
  • VBA进阶-在VBA中使用SQL语句筛选日期

    千次阅读 2018-09-26 00:12:04
    示例代码 Sub MultipleSelect_Group1() Dim cnn As New ADODB.Connection ...3.直接将记录中的日期字段设置为文本类型变量 友情提示 1.在excel中的日期必须为格式不限。 2.Format函数用法很多,不限于此。
  • 日期筛选, 报表导出, 定时备份, 截图如下: 开发框架: 后台Play框架2.3.8版本 , 前台AngularJS+JQuery 数据库: MySql5.5以上 部署流程: 安装Java8以上, 设置环境变量, 命令行输入javac可以看到信息. (可下载下方网盘...
  • return time.getTime() , selectableRange: vpnEndTimeHoursRule /*时分秒的筛选规则*/ }" placeholder="选择日期时间"> el-date-picker> el-form-item> tmpParameter.vpnEndTime:是从后端拿的数据,暂时保存,...
  • Mysql获得当前日期的前一个的最后一天 场景:一家P2P公司的财务专员请求开发人员(或DBA)统计历史借款用户数量,她查看的时间是今天,想要的数据是这个以前(不含这个)的用户数。  难题:“这个”是...
  • MATLAB 2018b 安装与简介

    万次阅读 多人点赞 2019-02-18 13:07:00
    该版本是mathworks官方开发的新版本的商业数学软件,可以帮助用户不仅仅将自己的创意停留在桌面,还可以对大型数据集运行分析,并扩展群集和云。另外matlab代码可以与其他语言集成,使您能够在Web、企业和生产系统...
  • mysql查询:有关时间的筛选

    万次阅读 2018-09-11 18:30:03
    方法一:直接拿字段比较 (1)以下这两种方式最终效果一样 SELECT bb.borrow_no,bb.create_time FROM borrow bb WHERE bb.create_time&amp;gt;='2018-09-11 00:00:00'; SELECT bb.borrow_no,bb.create_...
  • elementUI日期选择器:仅支持从当前day开始选择,过去day不允许选择,直接 disable ! 不允许选择的时间区间,如何设置? 官方文档:点击查看demo地址 以上就是关于“ elementUI日期选择器:不允许选择时间...
  • excel 2010 如何设置日期选择器

    千次阅读 2015-12-29 21:51:00
    excel 中想输入很多的日期。如果每个日期直接手动输入太过于繁琐,而且容易出错。想制作一个日期选择器,直接鼠标点选就可以了。 效果如下: 具体实现参考 ...
  • 直接在对应初始化位置赋值new Date() 就可
  • Linux实用教程(第三版)

    万次阅读 多人点赞 2019-08-27 22:55:59
    1992为止,全世界大约只有1000人在使用Linux系统,但由于它发布在Internet上,互联网上的任何人在任何地方都可以得到它。在这众多热心人的努力下,Linux系统在不3的时间里成为了一个功能完善、稳定可靠...
  • 面对这样的问题例如日期是这样 我们要统计成如下图的样式 ...我们建立好数据透视表后,单击数据透视表日期的部分,右击,点击组合项: ...选择相要组合的,例如,这样就可以完成上面的要求了
  • 例如:有些开发人员将日期字段设置为String类型存数据库中,而且存储的格式如下: 05-1 -17 12.01.11.437000000 下午 可以使用如下两个语句: select to_char(cast('01-8 -50 08.00.00.000000000 上午' as ...
  • dataframe之按时间筛选数据

    千次阅读 2020-07-15 13:10:06
    对原始数据集进行筛选操作,条件是:客户号、queryreason、querier三个相同的时候,开始计算querydate按从大小排序,14内出现的删除 功能描述 对数据集中具有相同key的记录,按照时间字段从大小进行排序,然后从...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,016
精华内容 16,406
关键字:

如何设置日期筛选时直接到年、月