【sql语句】好用的sql语句之项目数据库学习总结

转载请注明出处: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" >

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

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

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

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

时间: 2024-10-22 17:27:53

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

SQL Server 2012笔记分享-46:如何快速学习T-SQL语句

对于初学者来说,T-SQL语句的编写一直是个难题,初学者还是习惯使用图形界面来做相关的SQL方面的维护工作.但是在一个稍微复杂大型的SQL场景中,如果我们能够快速的掌握和理解SQL语句的编写和使用,那么会使我们的运维工作达到事半功倍的效果. 其实对于SQL server 2012来说,本身就提供了很多途径来帮助初学者获取日常管理任务的对应T-SQL脚本.下面我们来举几个快速获取T-SQL脚本的例子. ================================================

图解MYSQL JOIN ON,SQL JOIN 详解,数据库sql join语句

对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图 Venn diagrams 解释了SQL的Join.我觉得清楚易懂,转过来. 假设我们有两张表. Table A 是左边的表. Table B 是右边的表. 其各有四条记录,其中有两条记录是相同的,如下所示

SQL 几个查看性能的语句

1.查找目前SQL Server所执行的SQL语法,并展示资源情况: SELECT s2.dbid , DB_NAME(s2.dbid) AS [数据库名] , --s1.sql_handle , ( SELECT TOP 1 SUBSTRING(s2.text, statement_start_offset / 2 + 1, ( ( CASE WHEN statement_end_offset = -1 THEN ( LEN(CONVERT(NVARCHAR(MAX), s2.text)) *

SQL*PLUS中批量执行SQL语句

SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书),最后将所有的SQL语句一次性的执行完成. 首先,将要执行的所有的SQL语句,全部写入某个sql文件当中.例如f:\test.sql; 然后,通过通过sqlplus连接到数据库:如: SQL> sqlplus test/[email protected]; 再执行如下命令: SQL> @f:\te

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

1.打开地址,我们可以看到是一个正常的页面. 2..然后在地址后面加上-1,变成:http://site/news.asp?id=123-1,若返回的页面和前面不同,是另一个正常的页面,则表示存在注入漏洞,而且是数字型的注入漏洞 3.若在地址后面加上 -0,变成 http://site/news.asp?id=123-0,返回的页面和之前的页面相同,然后加上-1,返回错误页面,则也表示存在注入漏洞,而且是数字型的. 4.若在地址后面加上'%2B',变为:http://site/news.asp?

Linq to EF 和 Linq to SQL 中间Linq 产生的SQL语句

一,Linq to EF using System; using System.Runtime.CompilerServices; using System.Linq; using System.Data; namespace EntityframeworkSQL { class Program { static void Main(string[] args) { using (CustomerEntities customerEntities = new CustomerEntities()

查看SQL语句执行时间与测试SQL语句性能

查看SQL语句执行时间与测试SQL语句性能 写程序的人,往往需要分析所写的SQL语句是否够优化.是否能提升执行效率,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了. 通过设置STATISTICS我们可以查看执行SQL时的系统情况.选项有PROFILE,IO ,TIME.介绍如下: SET STATISTICS PROFILE ON:显示分析.编译和执行查询所需的时间(以毫秒为单位). SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数

SQL语句性能优化--LECCO SQL Expert

SQL语句的优化是将性能低下的SQL语句转换成目的相同的性能优异的SQL语句. 人工智能自动SQL优化就是使用人工智能技术,自动对SQL语句进行重写,从而找到性能最好的等效SQL语句. 数据库性能的优化   一个数据库系统的生命周期可以分成:设计.开发和成品三个阶段.在设计阶段进行数据库性能优化的成本最低,收益最大.在成品阶段进行数据库性能优化的成本最高,收益最小. 数据库的优化通常可以通过对网络.硬件.操作系统.数据库参数和应用程序的优化来进行.最常见的优化手段就是对硬件的升级.根据统计,对网

linq to ef(相当于sql中in的用法)查询语句

select * from DoctorInfo doctor where doctor.HosDepartId in (select Id from HospitalDepartment hd where hd.DepartmentId=5) var a=from d in _entity.HospitalDepartment where d.DepartmentId==5 select d; List<int> lst=new List<int>();foreach(var b

SQL Server里面导出SQL脚本(表数据的insert语句)

转载自:http://hi.baidu.com/pigarmy/blog/item/109894c445eab0a28326ac5a.html 最近需要导出一个表的数据并生成insert语句,发现SQL Server的自带工具并米有此功能.BAIDU一下得到如下方法(亲测OK) 用这个存储过程可以实现: CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS declare @column varchar(1000) declare @c