1、Sql 约束

http://www.cnblogs.com/henw/archive/2012/08/15/2639510.html

2、修改列类型

MySQL:ALTER TABLE tableName modify column(老字段) columnName(新字段) 类型;约束
Oracle:ALTER TABLE tableName modify(columnName 类型);
  • 1
  • 2

3、联合索引最左前缀原则

例如在表(name,age,birth)中建立联合索引name_age_birth,在查询中,where中的条件:

name and age and birth,
name and age,
name
  • 1
  • 2
  • 3

都会使用索引,而其它情况都不会使用索引 
所以:当建立联合索引时,要分析哪个字段在where中是最常用到的,应该放到联合索引的最左边。 
http://www.cnblogs.com/jamesbd/p/4333901.html

4、ACID

A:原子性,事务操作必须是一个原子性操作,要么全部完成,要么全部不完成 
C:一致性,事务开始前和事务结束后,数据库的完整性不受到影响 
I:隔离性,事务与事务之间不受到影响 
D:持久性,事务完成后,将会持久性得保存到数据库中

5、索引的类型

主键索此 ( PRIMARY ) 
唯一索引 ( UNIQUE ) 
普通索引 ( INDEX ) 
全文索引(FULLTEXT , MYISAM 及 mysql 5.6 以上的 Innodb )

6、内连接,左外连接,右外链接,全连接

假如A表和B表做连接 
内连接:返回A和B的公共部分C 
左外连接:返回C + A中不匹配的部分,B中以Null表示 
右外连接:返回C + B中不匹配的部分,A中以Null表示 
全连接(FULL JOIN):返回A和B中所有的部分

详细:http://www.jb51.net/article/39432.htm

7、带有in的子查询(cvte面试时问过类似的)

eg:查询与“刘晨”在同一个系学习的学生 
使用子查询:

select Sno,Sname,Sdept from Student where Sdept in(
select Sdept from Student where Sname = '刘晨');
  • 1
  • 2

使用连接查询:

select s1.Sno, s1.Sname, s1.Sdept from Student s1, Student s2 where s1.Sdept = s2.Sdept and s2.Sname = '刘晨';
  • 1

8、group by 和 having

groupby,然后对结果进行筛选的方式:      
1. group by用于对查询结果分组,having可以对分组结果进行筛选 
2. 先where 再 group by

where 中不能写聚合函数 having中key写聚合函数

eg:查询平均成绩>=90分的学生学号和平均成绩     
正确示例:

select Sno, avg(Grage) from SC group by Sno
having avg(Grage) >= 90;
  • 1
  • 2

错误示例:因为聚集函数不能用于where

select Sno, avg(Grage) from SC where avg(Grade) >= 90
group by Sno;
  • 1
  • 2

当出现聚集函数,不能group by 然后where

9、Group by 、Order By连用

今天去面试,遇到下面的题: 
USER(u_id, name, nick_name)用户信息表 
USER_SCORE(s_id, u_id, score, create_time)用户积分消耗表

q1:查找积分消耗前10的用户信息和积分消耗总额

select u.u_id, u.name, u.nick_name , sum(score) scores
from user u, user_score us where u.u_id = us.u_id
group by u.u_id order by scores desc; select
  • 1
  • 2
  • 3

q2:查找u_id为1的用户信息和积分消耗总额

select u.u_id, u.name, u.nick_name , sum(score) scores
from user u, user_score us
where u.u_id = 1;

面试题: 数据库 已看1 group by 和order by的练习 sql语句练习简单 有用的更多相关文章

  1. 笔试题: 数据库 已看1 一些关键的sql语句练习 和选择题 有用 sql语句练习 挺好

    一.     选择题 1.SQL语言是( C )语言. A.层次数据库 B.网络数据库 C.关系数据库 D.非数据库     redis 是 3.如果在where子句中有两个条件要同时满足,应该用哪个 ...

  2. 面试题:各大公司Java后端开发面试题总结 已看1 背1 有用 链接有必要看看

    ThreadLocal(线程变量副本)       --整理 Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量. 采用空间换时间,它用于线程间的数据隔离,为每一个 ...

  3. 面试题: !=!=未看12 略多 sql语句练习 非常 有用

    JAVA面试总结 2015年03月25日 16:53:40 阅读数:4306 刚才看到的,先转载过来,没准以后用到…… 面试总结 2013年8月6日: 问题2:Hibernate的核心接口有哪些?   ...

  4. 智能SQL优化工具--SQL Optimizer for SQL Server(帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 )

    SQL Optimizer for SQL Server 帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 SQL Optimizer for SQL Server 让 SQL Serve ...

  5. 面试题: mysql数据库 已看1 简单的sql练习

    数据库总结--MySQL常见面试题 2015年03月24日 17:56:06 阅读数:7787 1.根据部门号从高到低,工资从低到高列出员工的信息 select * from employee ord ...

  6. 面试题: mysql数据库 已看1 索引和事务 没用

    mysql数据库面试总结 2017年09月04日 00:11:40 阅读数:151 结合网上大神还有自己面试经历,收集的总结Mysql面试题,方便自己准备面试: mysql一个永远都复习不完,尽量总结 ...

  7. 面试题: 数据库 oracle数据库 已看1 意义不大 有用

    Oracle数据库面试题总结 2017年04月27日 22:41:44 阅读数:9271 1.SQL语句分类 DQL(数据查询语言)select DML(数据操作语言)insert.delete.up ...

  8. 面试题: mysql 数据库已看 sql安全性 索引 引擎 sql优化

    总结的一些MySQL数据库面试题 2016年06月16日 11:41:18 阅读数:4950 一.sql语句应该考虑哪些安全性? (1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语 ...

  9. 再看数据库——(5)Group By与Order By

    在使用sql语句时,很多人都会分不清order by与group by,其实简单的说: order by -- 排序 group by --分组 1.order by是行的排序,默认为升序. 有两种方 ...

随机推荐

  1. Data Structure Binary Search Tree: Find k-th smallest element in BST (Order Statistics in BST)

    http://www.geeksforgeeks.org/find-k-th-smallest-element-in-bst-order-statistics-in-bst/ #include < ...

  2. Eclipse输入命令行参数

    想要在Eclipse中输入命令行参数,可以在目录中该程序上右键,选择“Run As",选择”Run configurations",如图: 然后输入命令行参数: 点击Apply和R ...

  3. Cocos2d-x中常用宏的作用

    1. CC_SYNTHESIZE(int, nTest, Test); 相当于: protected: int nTest; public: virtual nTest getTest(void) c ...

  4. artdialog插件--iframe穿透特性

    使用artdialog可以实现嵌套页面间的通信. 一.引入插件 //artdialog是建立在jquery上面的所以要首先引入jquery <script src="__CLASSTP ...

  5. java:stack栈: Stack 类表示后进先出(LIFO)的对象堆栈

    //Stack 类表示后进先出(LIFO)的对象堆栈 //它提供了通常的 push 和 pop 操作,以及取栈顶点的 peek 方法.测试堆栈是否为空的 empty 方法.在堆栈中查找项并确定到栈顶距 ...

  6. node Express安装和使用

    1:在cmd命令行下执行npm install -g express,安装全局的express 2:进入需要创建项目的目录下执行express nodeExpressProject,创建express ...

  7. Python基础-多线程与多进程

    一,线程与进程之间的关系:(从知乎上看到的) 一个必须知道的事实:执行一段程序代码,实现一个功能的过程介绍 ,当得到CPU的时候,相关的资源必须也已经就位,就是显卡啊,GPS啊什么的必须就位,然后CP ...

  8. hdu1556Color the ball线段树区间更新

    题目链接 线段树区间更新更新一段区间,在更新区间的过程中,区间被分成几段,每一段的左右界限刚好是一个节点的tree[node].left和tree[node].right(如果不是继续分,直到是为止) ...

  9. BEC listen and translation exercise 37

    You're supposed to do that before 10.30 in the morning, but obviously, if it's an emergency, you can ...

  10. BEC listen and translation exercise 45

    So the Counselling Services we offer deal with any problems arising from your studies or in your lif ...