转载请注明出处:http://blog.csdn.net/pearyangyang/article/details/41115491

这几天学习公司系统的数据流向。主要涉及到几个表的数据。

可是表中的数据有上百万条,所以假设出现sql语句没有带条件的。会导致查询卡死,甚至出现内存溢出的情况。

公司用到的数据库是sqlserver。所下面列的sql语句主要是针对sqlserver数据库的,其它数据库大同小异。

1、当我要熟悉数据库表结构的时候。我须要运行一个语句。这条语句可以查看数据库的非常多信息,如列名。字段名。字段大小,字段类型等等.......

select * from information_schema.columns where table_name='表名'

2.、当然假设你想创建数据库表的创建情况的话能够运行以下的调用存储过程的语句:

exec sp_help '表名'

3、当我想了解数据库主,外键的时候,我通过以下的语句:

查询主键:EXEC sp_pkeys @table_name='表名'

查询外键:

select 主键列名=(selectname from syscolumns where colid=b.rkey AND id = b.rkeyid) ,外键表名称=object_name(b.fkeyid),外键列名=(select name from syscolumns wherecolid=b.fkey AND id = b.fkeyid)
from sysobjectsa join sysforeignkeys b on a.id = b.constid join sysobjects c on a.parent_obj =c.id where a.xtype = 'f' AND c.xtype='U' and object_name(b.rkeyid)='表名'

4、查找数据库前面的数据(能够分析数据库表的设计和字段的详细情况)使用TOPkeyword。 因为数据量太大,所以想分析数据的话我们能够提取数据前50或100条数据来查找,详细用法select top100 * from 表名,当查找一个字段在相相应的表中有多少种的时候,能够使用group by来查找。

select 属性 from 表名 group by 属性

ps:*号能够替换为数据库的列名来查找。后面也能够加上查询条件等等。

5、当我们有时候须要推断一个字段是否为空的时候我们须要用到is null 推断或isnull()函数。在查找或删除的时候常用到。这两者我眼下还没有找到在性能方面有什么大的区别,可是两者之间的用途还是不一样的,我认为is null 更加简洁,比方select * from  表名  where name is null,而isnull()函数则更加灵活。以下将举几个样例:当我们有一个用户表,假设用户最開始没有填写自己的昵称,我们查找的时候能够给它默认一个昵称nickename。能够通过以下的sql语句来实现。

假使用户的昵称为空。我们就能够通过select name,isnull(nickname,'csdn01用户') from csdninfo 。默认就是csdn01用户。

6、在delete之前最好select一次。  ,  近期公司出了一件大事,库存表warebalance被一不小心删除完了,30多W条数据一下子就没有了?  我不知道数据库有没有rollback,即使rollback以后数据之间实时在操作有没有导致数据库中数据产生错误? 原因就是在删除语句的时候本来想删除warebalancebak备份表。可是因为误操作。导致删除了warebalance,所以我们在删除之间最好查询一次,假设查询一次的话就可能不会导致上述错误。

lenkeyword(依据长度查找)

               select * from t_stu where len(sno) = 14  (查找学生学号为14位的学生信息)

7、当查看公司字段的时候,非常多字段都使用了子查询,连接查询。所以还不会这些的能够查查相关的资料(弄懂inner/left/right join之间的差别)

8、比如一个表中字段有同样的,你想从这些同样的数据中查询当中一个作分析,比如有一个tb_a表

我想查找表字段中name唯一的数据,所以能够用distinctkeyword来查:select distinct name from tb_a;

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGVhcnlhbmd5YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

而假设我们再依据一些字段来查:select distinct name,num from tb_a; 我们能够看到结果:

总结:我们以后查唯一条件的时候。要依据相关条件和需求来查。得到你想要的结果~~

9、公司数据库设计的思考,因为涉及到保密关系,所以非常多细节性的东西不能描写叙述,可是我们在设计表的时候,外键之间的关联和表与表之间的关系一定要弄清楚。必要的时候能够画草图辅助构思。

其它的,等遇到了问题再逐渐总结上来吧。

【sql语句】好用的sql语句之项目数据库学习总结的更多相关文章

  1. 如何用 SQL Tuning Advisor (STA) 优化SQL语句

    在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等.在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning ...

  2. SQL服务器在执行这条语句时会先进行运算然后执行

    1.打开地址,我们可以看到是一个正常的页面. 2..然后在地址后面加上-1,变成:http://site/news.asp?id=123-1,若返回的页面和前面不同,是另一个正常的页面,则表示存在注入 ...

  3. SQL Server中常用的SQL语句(转):

    SQL Server中常用的SQL语句 转自:http://www.cnblogs.com/rainman/archive/2013/05/04/3060428.html 1.概述 名词 笛卡尔积.主 ...

  4. PL/SQL中批量执行SQL脚本(不可把所有的语句都复制到New SQL Windows)

    PL/SQL中批量执行SQL脚本,不可把所有的语句都复制到New SQL Window,因为这样会导致缓冲区过大而进程卡死! 最好的办法是将要执行的SQL脚本存放到指定文件中,如C:\insert.s ...

  5. 浅谈sql 、linq、lambda 查询语句的区别

    浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...

  6. SQL函数中的动态执行语句

    一.为什么要使用动态执行语句? 由于在PL/SQL 块或者存储过程中只支持DML语句及控制流语句,并不支持DDL语句,所以Oracle动态执行语句便应允而生了.关于DDL与DML的区别,请参见:DDL ...

  7. SQL*PLUS中批量执行SQL语句

    SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书) ...

  8. SQL 维护用得到的监控语句

    使用DMV来分析SQL Server启动以来累计使用CPU资源最多的语句.例如下面的语句就可以列出前50名 s2.dbid, ( , ( ( ) )) AS sql_statement, execut ...

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

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

  10. 如何将sqlserver表中的数据导出sql语句或生成insert into语句 [转]

    输入表名,生成插入语句 drop proc proc_insert //如果存在就删除 go create proc proc_insert (@tablename varchar(256)) as ...

随机推荐

  1. pyQt事件处理

    Qt事件处理01 Qt处理事件的第二种方式:"重新实现QObject::event()函数",通过重新实现event()函数,可以在事件到达特定的事件处理器之前截获并处理他们.这种 ...

  2. 一个简陋的 CSS 样式

    有些网友对 Smart Framewok 中的 Sample 示例的样式比较感兴趣.由于本人对前端不太精通,但为了满足网友们的需求,只好献丑了. 以下这个简陋的 CSS 样式: ? 1 2 3 4 5 ...

  3. web前端之 HTML介绍

    概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器 ...

  4. zabbix PHP databases support off Fail

    zabbix初始化检查安装环境不通过: PHP databases support off   Fail     --未找到所支持的数据库 处理方法:安装Mysqli模块 ############## ...

  5. spring mvc + mybatis + spring aop声明式事务管理没有作用

    在最近的一个项目中,采用springMVC.mybatis,发现一个很恼人的问题:事务管理不起作用!!网上查阅了大量的资料,尝试了各种解决办法,亦未能解决问题! spring版本:3.0.5 myba ...

  6. echarts演示笔记

    http://echarts.baidu.com/doc/start.html 1.新建一个echarts.html文件,为ECharts准备一个具备大小(宽高)的Dom. <!DOCTYPE ...

  7. android——仿微拍贷滑动圆形菜单

    一次偶然机会接触到微拍贷的app,瞬间被其圆形可滑动菜单吸引了.一直琢磨着给弄出来. 现在弄出来了.先看看效果吧 如果你也喜欢这个菜单.去我的github找源码吧.太忙了.没时间贴代码和讲解了. ht ...

  8. js将对象转成字符串-支持微信

    最近写一个微信项目时用到了 把对象转成字符串,因为我需要把它存在cookie中,碰到了一些问题,在这里分享一下. 要转换的就是这货~ var FBinf = { "workPlacesCod ...

  9. 上传图片预览,支持IE6

    //说明:图片上传预览插件 //上传的时候可以生成固定宽高范围内的等比例缩放图 //参数设置: //width 存放图片固定大小容器的宽 //height 存放图片固定大小容器的高 //imgDiv ...

  10. redhat换yum源

    根据redhat操作系统版本及位数,下载对应centos的版本及位数的这些包: yum-3.2.22-40.el5.centos.noarch.rpm yum-fastestmirror-1.1.16 ...