㈠ sql书籍推荐
1、《SQL必知必会》
福达着, 钟鸣、刘晓霞译
这本书由浅入深地讲解了SQL的基本概念和语法,涉及数据的排序、过滤和分组,以及表、视图、联结、子查询、游标、存储过程和触发器等内容,实例丰富,便于查阅。新版增加了针对ApacheOpenOfficeBase、MariaDB、SQlite等DBMS的描述,并根据新版本的Oracle、SQLServer、MySQL和PostgreSQL更新了相关示例,非常适合初学者。
2、《SQL基础教程》
MICK 着, 孙淼、罗勇 译
这本书豆瓣评分9.0,重印13次,第2版基于新版本RDBMS全面升级,并新增一章介绍从应用程序执行SQL语句的方法。本书从数据库、表的结构到查询、更新表的语法,常用的函数,表的联结等,内容逐步深入。对于初学者常见的疑难点,均通过专栏进行讲解。各章节后精心设计了练习题,帮助读者巩固理解
3、《SQL Cookbook》
Anthony Molinaro 着
本书是一本指南,其中包含了一系列SQL 的常用问题以及它们的解决方案,希望能对读者的日常工作有所帮助。有150 多个小节,这还仅仅是SQL 所能做的事情的一鳞半爪,而这本书更主要的是让读者看到,SQL 能够做多少一般认为是SQL 问题范围之外的事情。
4、《深入浅出SQL(中文版)》
贝里 着,O‘Reilly Taiwan 译
这本对所有没SQL基础的人来说都是本好书,幽默的语言,紧凑的内容,而且还有生动的图画,这无非给了初学者一个很好的开始,不仅会信心大增,也会提高学习兴趣,同时对后续的提高也打下了基础。着重基本语法的理解和基本概念的阐述,穿插在各个章节的练习题恰好提供了巩固作用,如果你正苦于寻找一本SQL入门书籍,那么它一定是不二之选
5、《SQL 反模式》
Bill Karwin 着,谭振林 / Push Chen 译
《SQL反模式》是一本广受好评的SQL图书。它介绍了如何避免在SQL的使用和开发中陷入一些常见却经常被忽略的误区。它通过讲述各种具体的案例,以及开发人员和使用人员在面对这些案例时经常采用的错误解决方案,来介绍如何识别、利用这些陷阱,以及面对问题时正确的解决手段。另外,《SQL反模式》还涉及了SQL的各级范式和针对它们的正确理解。
㈡ sql语言的理解
IN
确定给定的值是否与子查询或列表中的值相匹配。
语法
test_expression [ NOT ] IN
(
subquery
| expression [ ,...n ]
)
参数
test_expression
是任何有效的 Microsoft® SQL Server™ 表达式。
subquery
是包含某列结果集的子查询。该列必须与 test_expression 有相同的数据类型。
expression [,...n]
一个表达式列表,用来测试是否匹配。所有的表达式必须和 test_expression 具有相同的类型。
结果类型
布尔型
结果值
如果 test_expression 与 subquery 返回的任何值相等,或与逗号分隔的列表中的任何 expression 相等,那么结果值就为 TRUE。否则,结果值为 FALSE。
使用 NOT IN 对返回值取反。
推荐使用:
select pub_name from publishers
where exists
(select 1 from titles where pub_id=publishers.pub_id and type='business')
来查询,in的查询效率很低的
以上,希望对你有所帮助!
㈢ 谈谈我对SQL索引的理解
楼主的整理正确!
1、索引是根据查询语句来建立的;
2、通常后一次有索引的会比前一次快,之于快多少取决于数据量。
比如:100条数据,没有索引时平均需要查询50次(从头到尾逐个比较),有索引则只需要比较大约7次(类似二分查找法);
如果是1000条数据的话,没有索引时平均需要查询500次,有索引则只需要比较大约11~12次。
当然对于数据量巨大(超百万行)的数据表,数据库中的索引可能用B+树,那么通常约4次比较就可确定数据范围(在200条以内)。
另,要注意的是查询语句写得不好,系统就无法利用索引,比如:把字段名放在了一个函数中、某些“<>”、等等,这方面的内容可以在网上搜到不少的。
㈣ 谈谈如何从本质上理解sql语句, 存储过程,ORM之间的联系和取舍。
所以我们需要来理解这些技术的本质。一,演变 刚开始的时候,只有sql语句,即可以用交互模式一句一句执行, 也可以用批模式执行,多行sql语句一次提交执行。 很快人们发现用批模式执行的一堆sql语言可以用过程的形式,事先存放到数据库里面,这就变成了存储过程。 随着面向对象技术的成熟,从程序中可以自动生成sql语句,这就是ORM 二,性能 很多人会说存储过程比sql语句性能好,其实这个说法并不精确。 如果我们把一堆sql,以批的方式一次送入到服务器,那么服务器,会对这一堆sql进行缓存,当下一次再度执行的时候,就好像调用一个”匿名“的存储过程一样。在这种情况下,性能差不多。 但是,如果我们不注意,很有可能,把可以一次提交的sql,变成了多次提交,甚至是每个循环做了一次提交,那么性能就很差了。 也就是说如果使用sql,只要写法得当,性能和sp区别不大。 同样的道理,ORM的性能取决于ORM的Sql生成算法, 和用户使用的时候,对生成算法的控制,比如利用好Lazy laoding等,在某些情况下,甚至可以不通过sql,毕竟没有sql比最优化的sql还要快。三,可维护性 可维护性是选择sql,sp,orm最主要的因素。 这里面有点”玄“,因为不同的场景会得出不同的结论,俗称“It depends" 刚开始的时候,sql的维护性看起来是最差,因为它往往散布在程序的每个角落。而存储过陈都放在数据库中,有清晰接口。 但是如果我们做一次重构,情况居然会颠倒过来。 首先,存储过程完全可以照搬到C#中,sp的名字直接变成method的名字,sp的参数表直接变成method的参数表,(其实就是Command模式)。 其次,把这些methdod放到一个文件或者文件夹中。(所谓的DAL层,如果喜欢层的话) 通过这个重构,我们获得了以下的好处, 1,首先是过程的调用和过程的定义放到了一起,修改起来比较方便。IDE都有定义跳转功能。 2,过程的调用和定义同时进行版本控制,不会出现不匹配的情况。减少了sp的参数表和调用的不匹配,包括拼写,类型,参数次序 3,单元测试非常方便 当然sp也有存在的价值,比如所谓的安全性,后面会提到。比如友好的调试环境,对于中小型项目,和初级程序员来说,也是很好的选择。 ORM则将可维护性提升身到了一个新的高度,它试图将sql屏蔽起来,在操作对象的同时,自动就把数据库的事情给办了。 ORM有两种模式,一种是ActiveRecord, 一种是Datamapper,前者从数据库中读取定义,后者在程序中定义。不过由于前者往往用migration来生成数据库,其实也是定义在程序里面的。好的ORM都有"leaking"的设计,也就是留了个”后门“,让你有机会用sql来控制。 微软的linq从某个角度类说,也是一种ORM, 它的设计思想可能是因为它觉得写sql语句比写c#代码效率高,所以提供直接在C#中写sql语句的机制,再自动生成真正的sql。不过,ORM真正价值在于它可以在恰当的时候,完全抛弃sql,比如比如读用cache,写用queue。而微软的linq,完全是“无厘头”的风格,在O中用R的写法,难道是RRM, 唯一的好处只是锁定程序和程序员在微软的平台上。 三,安全性 对企业来说,安全性有的时候比性能更重要,由于存储过程在数据库上多加了一道屏障,所以很多企业会把存储过程作为首选。 ORM可以说是安全性最差的, 因为只有到程序运行起来,你才能知道,会产生什么样的sql。 但是保证安全有许多方法和方面,比如部署前的测试, 数据库的备份,对表的权限的设置。等。用sp来保证安全,只是多个选项中的一个。 在startup型企业中,高级程序员往往起到主导作用, 所以他们会不犹豫的选择ORM。
㈤ sql数据库怎么学好
先大概的了解下常见的语法和语句,因为sql学习的东西太多了,你是记不完的。之后边学习边实践,最好找个工作去实践。把每次的问题都记录下来,下一次遇到的时候,能想起来不用查,想不起来,再去自己记录的内容里查找,其实主要学的是学习和使用的方法以及编程的思想,语法和一些概念把常见的记下,其余的可以去网络上找到。我使用的是OneNote 这款软件记录平常遇到的问题,分类记录。
祝君成功!
㈥ 大家说怎么才能学好 sql 我看着查询根本看不懂啊 能看懂的时候但是自己想不出来
大段复杂的SQL都是用最基本的select where 语句拼成的,你可以把无关的内容先去掉,就能看出最基本的框架,知道主要是干什么
然后这些语句里面会有很多union left join in 之类的以及一些转换函数
你要一点点学习select基本句式和扩展句式,以及这些连接词都是有什么作用
再回想这个语句的基本任务,通过一段时间的学习,就能越来越明白了
没有什么捷径,所谓的捷径,就是牢固掌握最基本的语法和各种用法。
任何高深的语句都是这些基本元素堆砌的
㈦ SQl指的是什么
SQL全称是“结构化查询语言(Structured Query Language)”
SQL(STructured Query Language)是一种资料库查询和程式设计语言,用于存取资料以及查询、更新和管理关联式资料库系统。
SQL同时也是数据库文件格式的扩展名。
SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。他不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。它以记录集合作为操纵对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语言可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的一个单独事件只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。
结构化查询语言(Structured Query Language)最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle ,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxporo,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了 SQL 标准。ANSI 是一个美国工业和商业集团组织,发展美国的商务和通讯标准。ANSI 同时也是 ISO 和 International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO 和 IEC 发布了 SQL 的国际标准,称为 SQL-92。ANSI 随之发布的相应标准是 ANSI SQL-92。ANSI SQL-92 有时被称为 ANSI SQL。尽管不同的关联式资料库使用的 SQL 版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server 使用 ANSI SQL-92 的扩展集,称为 T-SQL,其遵循 ANSI 制定的 SQL-92 标准。
SQL语言包含4个部分:
数据定义(DDL)语言(如CREATE, DROP,ALTER等语句)
数据操纵(DML)语言(INSERT, UPDATE, DELETE语句)
数据查询语言(SELECT语句)
数据控制语言(如GRANT,REVOKE,COMMIT, ROLLBACK等语句)
SQL 语言包括两种主要程式设计语言类别的陈述式: 资料定义语言 (DDL)与资料操作语言 (DML)。
㈧ 如何从零开始学习SQL
先熟悉基本的SQL语句,比如四个基本的语句比如下表,表名为a : 姓名 卡号 性别 班级 张三 001 男 1 李四 002 男 2 林采儿 003 女 2 刘静 004 女 11,查询语句 select * from 表名 where 条件,比如查询性别为男的全部信息语句:select * from a where 性别='男'2,插入语句 insert into 表名 values(‘','','',''),比如插入一条记录 insert into a values (‘猫三','005','男','1')2,修改语句 update 表名 set 更改值 where 条件 比如把卡号为003的性别修改为男 update a set 性别='男' where 卡号='003'4 删除语句 delete from 表名 where 条件 ,比如删除卡号为002的信息 :delete from a where 卡号='002'先把基本的语句掌握了,然后再深入学习复杂的语句,像 连接查询,SQL函数的用法,一步步的学下去,慢慢就精通SQL语句了。。。