sql和linux常用命令

sql和linux常用命令

1.描述主键、外键、候选主键、超键是什么

  1. 主键 : 数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)
  2. 外键 : 在一个表中存在的另一个表的主键称此表的外键
  3. 候选主键 : 是最小超键,即没有冗余元素的超键
  4. 超键 : 在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键

2.drop,delete与truncate的区别

drop : 直接删除整张表 (数据和结构) 将表所占用的空间全部释放掉 操作立即完成不需要等事务提交

delete : 只删除表中的数据 delete语句执行时每次从表中删除一行,并同时将该行的删除操作作为事务记录在日志中保存以便进行回滚操作 需要等事务提交后才会执行

truncate : 删除表中的数据 表和索引所占用的空间会恢复到初始大小 再插入时自增的主键id又从1开始 操作立即完成不需要等事务提交

3.SQL UNION 和 UNION ALL 区别

UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果

UNION ALL只是简单的将两个结果合并后就返回

4.exists、in、any、all区别

exists : 将主查询的数据,放到子查询中做条件验证,根据验证结果(TRUE 或 FALSE)来决定主查询的数据结果是否得以保留。

in : 会把子句中的查询作为结果缓存下来,然后对主查询中的每个记录进行查询

any : 用于判断集合中是否有元素满足某一条件;不延迟

all : 用于判断集合中所有元素是否都满足某一条件;不延迟

5.sql语句的执行顺序

  1. from语句

  2. 执行on过滤

  3. 添加外部行

  4. 执行where条件过滤

  5. 执行group by

  6. having

  7. select

  8. 执行distinct去重

  9. 执行order by

  10. limit

6.count(*)和count(1)和count(id)区别

count(*) : 对行的数目进行计算 , 包含null 如果表中只有一个字段count(*)最快

count(1) : 结果与count(*)一样 如果表中没有主键 count(1)比count(*)快

count(id) : 对特定的列的值具有的行数进行计算,不包含null值 如果有主键,那么count(主键,联合主键)比count(*)快

count(1)跟count(id)一样,只扫描主键,count(*)跟count(非主键)一样,扫描这个表

7.SQL语句优化(不少于6条)

  • 避免在where子句中使用 is null 或 is not null 对字段进行判断。
  • 避免在 where 子句中使用 != 或 <> 操作符。
  • 避免在 where 子句中使用 or来链接条件。
  • 少用 in 或 not in。
  • 注意 like 中通配符的使用。
  • 避免在 where 子句中对字段进行表达式操作
  • 避免在 where 子句中对字段进行函数操作。
  • 不要使用select * from table,使用具体字段代替*
  • 尽量使用数字型字段

8.linux常用命令

  1. ls(list)命令,其功能就是列出文件目录信息
    • ls -a 列出目录下的所有文件,包括以 . 开头的隐含文件
    • ll (ls -l) 可以列出文件的详细信息
    • ls -lh  可以列出文件的详细信息以及文件大小
  2. cd命令,该命令用来切换当前目录
    • cd … 或 cd …/ 切换到当前目录的上一级目录
    • cd / 切换到Linux根目录
    • cd /目录名 任意目录,切换到指定目录中
    • cd ~ 切换到当前用户家目录。root用户家目录为/root
    • cd - 切换到上一次访问的目录(只两个目录间切换)
    • pwd(print working directory) 显示当前的目录
  3. mkdir命令,mkdir命令用来创建目录
    • rmdir 删除目录(删除空目录) -f不带提示
    • rm 命令可以删除一个目录中的一个或多个文件或目录
    • rm –r 目录名称 -f不带提示
  4. find命令用来查找文件或目录
    • find 目录名 –name 文件名目录名
    • find 目录名 –iname 文件名目录名 (不区分大小写)
  5. cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录
    • cp -r 需要复制的文件 目标位置
  6. 查看命令 主要用于XML/Properties/日志文件等浏览
    • cat命令浏览正文文件内容(只适合查看少量信息的数据) 从前往后
    • tac 从后往前看文件
    • more 如果文件内容很大,使用more命令,每次在屏幕上显示一页的内容
      • Enter键:一次移动一行
      • b:往回(向上)移动一个屏幕
      • q:退出more命令并返回操作系统提示符下
    • less –mN(显示百分比-m 显示行号-N )一页一页翻动
    • head -n 只看头n行
    • tail -n 只看末尾n行
  7. 文件编辑命令
    • :wq 保存并退出命令
    • :q! 不保存并退出
    • /word 向光标之下寻找一个名称为 word 的字符串
  8. grep命令:正则表达式,常用于字符串搜索工作/所有的信息
    • grep 需要搜索的字符串 搜索文件
    • grep -i 需要搜索的字符串 搜索文件(忽略大小写)
  9. 压缩 解压命令

    Linux常用压缩格式:

    • *.tar 对文件进行压缩、但大小不会压缩

    • *.tar.gz 对文件进行压缩、并压缩文件大小

      • tar命令

        • 解包:tar zxvf FileName.tar

          z:   gzip          压缩格式

          x:   extract         解压

          v:   verbose        详细信息

          f:   file(file=archieve)    文件

        • 打包:tar czvf FileName.tar DirName

          c: 查看过程中打包文件名

        • -C 指定压缩路径

      • gz命令

        • 解压1:gunzip FileName.gz
        • 解压2:gzip -d FileName.gz
        • 压缩:gzip FileName
  10. Linux的 网络配置 命令
  • ifconfig 查看网卡信息(IP地址)
  • ping IP地址 命令来测试网络的连通性
  • reboot 重启命令
  • traceroute 命令显示数据包到达目的主机所经过的路由
  • halt 关机命令

9.哪种设计模式最好(一种即可)

  • 模板方法模式

    • 定义:一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤

    • 优点:
      • 封装不变部分,扩展可变部分,把不变的算法封装到父类实现,可变的部分则通过继承来扩展;
      • 提取公共部分代码,便于维护;
      • 行为由父类控制,子类实现;
    • 应用场景

      • 多个子类有公有的方法,且逻辑相同时;
      • 重要,复杂的算法,可以把核心算法设计为模板方法;
      • 重构时,把相同的代码抽取到父类,然后通过钩子函数结束其行为;
  • 代理模式

    • 定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介
    • 为什么要用代理模式?
      • **中介隔离作用:**在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口
      • **开闭原则,增加功能:**代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类而不需要再修改委托类,符合代码设计的开闭原则
    • 应用场景
      • 类初始化需要消化非常多的资源时
      • 性能和安全要求的场景,通过 new产生一个对象需要非常繁琐的数据准备和访问权限时;
      • 一个对象多个修改者的场景,一个对象需要提供给多个对象访问,而且各个调用者都可以修改其值时;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值