1、sql不区分大小写,一般结尾要加分号;

2、select 列,列,列 from 表

3、distinct ,返回列中不同的值。需要哪个列不同,关键词哪个列

4、where子句,select 列 from 表 where 列 运算符 值

  =  <>(!=) >   <    >=  <=  between like

  条件值(非数字)用单引号环绕(有的双引号也可以)

5、AND OR,连接where子句

6、order by,对结果集进行排序,默认升序。desc倒序。排序条件可累加,先执行第一条,在第一条的基础上执行第二条。

ORDER BY Company DESC, OrderNumber ASC

7、top子句,要返回结果数。select top 2(top 50 percent)* from xxx。有的数据库系统不支持,如mysql,在尾部用limit

8、like 操作符,在where子句中使用,模糊匹配

  LIKE "1%",匹配以1开头的

  "%g"  匹配以g结尾的

  not like "%g"

9、和like搭配在一起的,就是通配符,%代替1个or多个,_代替一个,([ ]弄成一个集合,弄成一个不想匹配的集合[^ ])-->mysql不支持

10、in 操作符,在where子句中使用,

WHERE column_name IN (value1,value2,...)

11、between操作符,在where子句中使用,取值范围(数值,文本,日期)。not between

  BETWEEN 'AAAAAAAAAA' AND 'oJrlVsHBS6'。mysql出来的结果是包含边界值的

12、as ,给表or列重命名。表重命名用于列和where子句中,列重命名用于结果集的列名

13、join,根据2个or多个表列之间的关系,从这些表中查询数据 on

  INNER JOIN: 如果表中有至少一个匹配,则返回行

  LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

  RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

  FULL JOIN: 只要其中一个表中存在匹配,就返回行

SELECT c_item.`id`,c_item.`user_id`,c_item.`serial`,c_user_account_log.`user_id`,c_user_account_log.`status`,c_user.`key`FROM (c_item INNER JOIN c_user_account_log ON c_item.`user_id`=c_user_account_log.`user_id`)LEFT JOIN c_user ON c_user.id=c_item.`user_id`;

  where 放在join后面   group by 放在最后面

14、union操作符,合并两个或多个 SELECT 语句的结果集,默认去重,不去重union all

  要有相似的数据类型

15、select into,创建表的复制备份

16、create db create table

char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,尽管如此,char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。再者,char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。

17、约束,constraints。限制加入表的数据的类型

  NOT NULL

  UNIQUE

  PRIMARY KEY

  FOREIGN KEY

  CHECK

  DEFAULT

  primary key与unique key都是唯一性约束。二者区别: 1.作为primary key的1个或多个列必须为NOT NULL(有的数据库需要明确指明,有的会自动设置为NOT NULL) 而unique key约束的列可以为null,这是primary key与unique key最大的区别。

  2.一个表只能有一个primary key(单列或多列,多列主键叫联合主键),但可以有多个unique key。

  每个表都应该有一个主键,并且每个表只能有一个主键。

  一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY

FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
 

18、CREATE INDEX 语句

用于在表中创建索引。 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

19、drop 删除索引 表 数据库

20、alter 添加修改删除列

21、AUTO_INCREMENT,创建表时定义的自增

22、mysql中key 、primary key 、unique key 与index区别

  参考文章:http://blog.csdn.net/nanamasuda/article/details/52543177

23、null和0不一样,用is null   is not null操作符

SQL函数

  Aggregate 合计函数

  Scalar 函数

1、AVG(列)

SELECT Customer FROM Orders WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)

2、COUNT(列) 函数返回匹配指定条件的行数。

3、FIRST(列) 函数返回指定的字段中第一个记录的值。

4、LAST(列) 函数返回指定的字段中最后一个记录的值。

5、MAX  MIN函数返回一列中的最大值。NULL 值不包括在计算中。

6、SUM 函数返回数值列的总数(总额)。仅对数值型,对别的型会报错。

7、合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组

8、在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。


基本心得:

SELECT c_item.id,c_item.user_id,COUNT(c_item.user_id),c_user.`key` FROM c_item LEFT JOIN c_user ON c_item.`user_id`=c_user.`id` GROUP BY c_item.user_id;

group by放在left join后面

SELECT COUNT(c_item.user_id),c_user.`key` FROM c_item LEFT JOIN c_user ON c_item.`user_id`=c_user.`id` WHERE c_item.`user_id`=21;

where 放在left join后面

SELECT c_item.`id`,c_item.`user_id`,c_item.`serial`,c_user_account_log.`user_id`,c_user_account_log.`status`,c_user.`key`FROM (c_item INNER JOIN c_user_account_log ON c_item.`user_id`=c_user_account_log.`user_id`)LEFT JOIN c_user ON c_user.id=c_item.`user_id`;

join可嵌套,在from之后打括号,再join别的表

SELECT id,MAX(item_id) FROM c_user_account_log WHERE user_id=21 AND STATUS=1;

where可以和非合计函数一起使用

SELECT COUNT(c_item.user_id),c_user.`key` FROM c_item LEFT JOIN c_user ON c_item.`user_id`=c_user.`id` WHERE c_item.`user_id`=21;

SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value

where  group by  having

												

sql语句 基本的更多相关文章

  1. mysql学习之 sql语句的技巧及优化

    一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regex ...

  2. 一条Sql语句分组排序并且限制显示的数据条数

    如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...

  3. LINQ to SQL语句(7)之Exists/In/Any/All/Contains

    适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式 ...

  4. Oracle ------ SQLDeveloper中SQL语句格式化快捷键

    Oracle SQL Developer中SQL语句格式化快捷键: 每次sql复制到SQL Developer面板的时候,格式老不对,而且看起来很不舒服,所有的sql都挤在一行完成. 这时我们可以全选 ...

  5. SQL语句优化

    (1)      选择最有效率的表名顺序 ( 只在基于规则的优化器中有效 ) : ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名, FROM 子句中写在最后的表 ( 基础表dri ...

  6. LinqToDB 源码分析——生成与执行SQL语句

    生成SQL语句的功能可以算是LinqToDB框架的最后一步.从上一章中我们可以知道处理完表达式树之后,相关生成SQL信息会被保存在一个叫SelectQuery类的实例.有了这个实例我们就可以生成对应的 ...

  7. 年终巨献 史上最全 ——LINQ to SQL语句

    LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...

  8. LINQ to SQL语句(19)之ADO.NET与LINQ to SQL

    它基于由 ADO.NET 提供程序模型提供的服务.因此,我们可以将 LINQ to SQL 代码与现有的 ADO.Net 应用程序混合在一起,将当前 ADO.NET 解决方案迁移到 LINQ to S ...

  9. LINQ to SQL语句(17)之对象加载

    对象加载 延迟加载 在查询某对象时,实际上你只查询该对象.不会同时自动获取这个对象.这就是延迟加载. 例如,您可能需要查看客户数据和订单数据.你最初不一定需要检索与每个客户有关的所有订单数据.其优点是 ...

  10. LINQ to SQL语句(6)之Group By/Having

    适用场景:分组数据,为我们查找数据缩小范围. 说明:分配并返回对传入参数进行分组操作后的可枚举对象.分组:延迟 1.简单形式: var q = from p in db.Products group ...

随机推荐

  1. ppt调整三级标题的位置

    ---恢复内容开始--- 标题格式:一级标题   中文数字加.例如 一. 二级标题  中文数字加:   例如二: 三级标题  小写数字加.  例如3. 使用方法: 打开PPT  按alt+f11,打开 ...

  2. Linux学习笔记:split切分文件并按规律命名及添加拓展名

    基础知识 功能:使用 shell 的 split 可以将一个大文件分割成很多个小文件,有时文件太大处理起来不方便就需要使用到了. 在默认情况下将按照每1000行切割成一个小文件. 语法: split ...

  3. $.serializeArray()获取不到input的value值bug问题

    今天修改form表单,发现有好几个input值保存不上,上网搜索了一下是$.serializeArray()获取不到disabled的值.如果想要让input元素变为不可用,可以把input设为rea ...

  4. 如何画svg路径图

    在画路径图之前,首先得在package.json引入2个依赖 废话不多说,直接上代码 <style> .green { position: absolute; } .blue { posi ...

  5. Java 面向对象(六)接口

    一.接口 接口:是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(J ...

  6. B+树Java代码实现以及测试

    M阶B+树的定义: 任意非叶子结点最多有M个子节点:且M>2: 除根结点以外的非叶子结点至少有 M/2个子节点: 根结点至少有2个子节点: 除根节点外每个结点存放至少M/2和至多M个关键字:(至 ...

  7. 【Zookeeper】集群环境搭建

    一.概述 1.1 Zookeeper的角色 1.2 Zookeeper的读写机制 1.3 Zookeeper的保证 1.4 Zookeeper节点数据操作流程 二.Zookeeper 集群环境搭建 2 ...

  8. IDAPython实战项目——DES算法识别

    在CTF的逆向中我们需要的是找到加密的主函数,结合了yara的识别原理,通过对常量数组的引用的查找,一步步递归构建调用树.调用树根部就是可能的密码算法主函数. 由于这种办法需要常量分布于算法的各个步骤 ...

  9. Android 启动流程分析

    原文:https://www.jianshu.com/p/a5532ecc8377 作者曾经在高通的Android性能组工作,主要工作是优化Android Application的启动时间. APP基 ...

  10. 一分钟了解Linux文件系统

    Linux文件系统原理在所有的操作系统中文件都有文件名与数据,在Linux系统上文件系统分成两个部分:用户数据 (user data) 与元数据 (metadata).用户数据,即文件数据块 (dat ...