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. PAT 天梯赛 L2-016. 愿天下有情人都是失散多年的兄妹 【BFS】

    题目链接 https://www.patest.cn/contests/gplt/L2-016 思路 用BFS 每层 遍历当代 并且查找当代是否有重复 有重复就跳出 然后 POP 并且将他们的下一代 ...

  2. c的详细学习(8)指针学习(二)

    (1)指针与二维数组 一个数组的名字代表该数组的的首地址,是地址常量(作为形式参数的数组名除外),这一规定对二维数组或更高维数组同样适用. 在c语言中定义的任何一个二维数组实际上都可以看做是一个一维数 ...

  3. HDU OJ 2159 FATE

    #include <stdio.h> #include <string.h> ][] ; ]; //»ñµÃ¾­Ñé ]; //»¨·ÑµÄÈÌÄÍ¶È int main() ...

  4. 如何拯救一台glibc被干掉的Linux服务器

    原文: 如何拯救一台glibc被干掉的Linux服务器? 首先如果 libc.so.6 没有被删除, 直接使用LD_PRELOAD就可以恢复 LD_PRELOAD=/lib64/libc-2.12.s ...

  5. Netty使用LineBasedFrameDecoder解决TCP粘包/拆包

    TCP粘包/拆包 TCP是个”流”协议,所谓流,就是没有界限的一串数据.TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TC ...

  6. Java -- 乒乓球 乒乓弹球游戏

    <疯狂Java讲义> 练习游戏 import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; impo ...

  7. name lookup of 'res' changed for new ISO 'res' scoping

    #include<iostream> using namespace std; int pow ( int val, int exp ); int main() { int val = 2 ...

  8. mysql连接超时问题

    前几天使用个脚本不停的查看redis队列中的事件.如果有则把事件取出来,然后进行一些数据库操作. 后来发现,每天的第一次有事件时都会到导致,找不到数据. 后来定位到问题,是mysql在连接长时间无活动 ...

  9. PHP 使用header函数设置HTTP头的示例解析 表头

    PHP 使用header函数设置HTTP头的示例解析 表头 //定义编码 header( 'Content-Type:text/html;charset=utf-8 '); //Atom header ...

  10. Javascript-- jQuery DOM篇(二)

    DOM拷贝clone() 克隆节点是DOM的常见操作,jQuery提供一个clone方法,专门用于处理dom的克隆 .clone()方法深度 复制所有匹配的元素集合,包括所有匹配元素.匹配元素的下级元 ...