❶ sql语言有什么专业书籍
SQLServer从入门到精通,应用开发参考手册,SQL Server 2012中文版数据库管理应用与开发实践教程等等
❷ sql查询语句效率提问 对小弟来说非常高深!!!
答案是 : 效率是不同的
From 后面的表:效率最高(记录少,有索引)的表在最后,效率低的表在最左(记录多,无索引)
From 一般都是逆序,比如你的sql语言,数据库会先处理你的table_2
Where 后面的条件:从左到右的顺序,将效率高的比较放在前面(可以过滤更多的数据,从而减少后面条件的处理)
Where 条件一般都是顺序。表连接条件执行效率是比较高的,应该放在前面
所以你的两句sql语言,前者的效率更高。
并且可以改变table_1和Table2的位置让你的效率更高
❸ 数据库查询(用SQL语言)
我给定义的表和属性如下
表albums中有列 artno(这个列这个应该是演员吧),唱片集,title,itemno
表stock中有列 price,itemno,type
1、select count(artno)from albums
where 唱片集 is not null
这里假设的是如果没有唱片集,则唱片集的值为null,如果不是这样规定的,则要改动,但结构是这样的。
2、select count(alblums.唱片集),average(price),max(price),min(price) from alblums,stock
where albums.itemno=stock.itemno
group by type
这里涉及到两个表,需要用连接查询。同时用group by来分类统计。结构是这样,具体根据你的表
3、select count(alblums.唱片集),min(price)from alblums,stock
where albums.itemno=stock.itemno
group by type
having min(price)>=10
结构大约如此,应该能运行出来。
上面所写的只是根据我的理解,将大概写了一下,至于某个表里有什么属性以及名称是否正确,要根据你的表。有什么问题可以在网络hi联系。
❹ 用SQL语言完成下面查询,速度要快,具体要求如下:
1 select 学号,姓名,班级 from xk where substing(学号,2,1) = '1' and substing(学号,7,1) in ('1','3','5')
2 select min(willnum) as '最小报名数',max(willnum) as '最大报名数',avg(willnum) as '平均报名人数' from course
3 select 列名 from 表明 where couno = 004 or couno = 007 or couno = 013
4 update 表名 set 学生姓名 = '陈晓梅' where 班号 = 01000025
5 select willnum,couname from 表名 where kind = '信息技术' and willnum < avg(willnum)
6 delect 表名 where 学号 = 00000005
7 alter table student add constraint CK_stuNo check(len(stuNo) <= 8)
8 create datebase exam_data
on primary
(
name = 'exam_data',
filename = 'exam_data.mdf',
size = 20mb,
filegrowth = 10%
)
log on
(
name = 'exam_log',
filename = 'exam_log.ldf',
size = 1mb,
maxsize = 5mb,
filegrowth = 1mb
)
9 use exam
create table test
(
testid char(4) not null,
testname varchar(50) not nullm
testtime int
)
alter table exam add constraint PK_testId primary key(testid) --主键
10
insert into 表名 values('数学',120)
insert into 表名 values('英语',120)
12
exec sp_renamedb 'exam','example'
go
请参考
❺ SQL语言 查询问题
假设这是单表查询:
select 书号,名称,价格 from 图书档案表 where 图书类别=‘计算机’;
select sum(价格)as 计算机类图书总价格,count(书号)as 计算机类图书册数 from图书档案表 where 图书类别=‘计算机’;
select sum(价格)as 总价格,count(书号)as 册数 from图书档案表 ;
❻ 如何用SQL语句查询啊
看来你的SQL知识等于零.建议你首先找一本SQL命令集看看,SQL srever 2000 [安装之后,会有一个联机从书,那里面可谓详尽的讲述了SQL命令,注意:SQL server 2000与SQL命令是重大区别的.SQL是结构化查询设计语言的缩写,:SQL server 2000则是微软的关系数据库产品,一切关系数据库都是依赖SQL的.这当然要看数据库内建了多少SQL命令,ACCESS和,SQL srever 2000 都接受SQL命令的操作,但是操作ACCESS的SQL命令和语句,几乎可以不加修改的用于SQL server ,但是反过来不行,比如ACCESS根本就不支持使用case语句等.
SQL命令并不很多,百十个而已,但是操作起数据库来,几乎是达到出神入画的地步.用人工可以需要几天的时间才能弄到结果,用SQL命令只不过是弹指之间.
想摆弄数据库,你不学SQL,就等于想学洋文,但不认识ABC字母一样.
SQL srever 2000 的联机从书中Transact-SQL参考一章,介绍了全部的SQL命令和符号.在其它章节还介绍很多SQL语句的写法以及SQL命令的用法.好好学吧,你们是年轻人,精力正旺,弄一可以读电子书的手机,把这部联机从书弄成文本文件,放在手机中,随时看看,比你看那些无聊的网上小说,有意义的多.
❼ 请简单说明SQL语句书可以提高执行效率的5种需要注意的书写方法。
之前收集的一些资料仅供参考, 不一定完全正确... 有错误望指正
1、操作符号: NOT IN操作符
此操作是强列推荐不使用的,因为它不能应用表的索引。推荐方案:用NOT EXISTS 或(外连接+判断为空)方案代替 "IS NULL", "<>", "!=", "!>", "!<", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE", "LIKE '%500'",因为他们不走索引全是表扫描。NOT IN会多次扫描表,使用EXISTS、NOT EXISTS、IN、LEFT OUTER JOIN来替代,特别是左连接,而Exists比IN更快,最慢的是NOT操作. 如果列的值含有空,以前它的索引不起作用,现在2000的优化器能够处理了。相同的是IS NULL,"NOT", "NOT EXISTS", "NOT IN"能优化她,而"<>"等还是不能优化,用不到索引。
2、注意union和union all的区别。union比union all多做了一步distinct操作。能用union all的情况下尽量不用union。
3、查询时尽量不要返回不需要的行、列。另外在多表连接查询时,尽量改成连接查询,少用子查询。。
4、尽量少用视图,它的效率低。对视图操作比直接对表操作慢,可以用存储过程来代替它。特别的是不要用视图嵌套,嵌套视图增加了寻找原始资料的难度。
我们看视图的本质:它是存放在服务器上的被优化好了的已经产生了查询规划的SQL。对单个表检索数据时,不要使用指向多个表的视图,
直接从表检索或者仅仅包含这个表的视图上读,否则增加了不必要的开销,查询受到干扰.为了加快视图的查询,MsSQL增加了视图索引的功能。
5、创建合理的索引,对于插入或者修改比较频繁的表,尽量慎用索引。因为如果表中存在索引,插入和修改时也会引起全表扫描。
索引一般使用于where后经常用作条件的字段上。
6、在表中定义字段或者存储过程、函数中定义参数时,将参数的大小设置为合适即可,勿设置太大。这样开销很大。
7、Between在某些时候比IN速度更快,Between能够更快地根据索引找到范围。用查询优化器可见到差别。
select * from chineseresume where title in ('男','女')
Select * from chineseresume where between '男' and '女'是一样的。由于in会在比较多次,所以有时会慢些。
8、在必要是对全局或者局部临时表创建索引,有时能够提高速度,但不是一定会这样,因为索引也耗费大量的资源。他的创建同是实际表一样。
9、WHERE后面的条件顺序影响
WHERE子句后面的条件顺序对大数据量表的查询会产生直接的影响,如
Select * from zl_yhjbqk where dy_dj = '1KV以下' and xh_bz=1
Select * from zl_yhjbqk where xh_bz=1 and dy_dj = '1KV以下'
以上两个SQL中dy_dj(电压等级)及xh_bz(销户标志)两个字段都没进行索引,所以执行的时候都是全表扫描,如果dy_dj = '1KV以下'条件在记录集内比率为99%,而xh_bz=1的比率只为0.5%,在进行第一条SQL的时候99%条记录都进行dy_dj及xh_bz的比较,而在进行第二条SQL的时候0.5%条记录都进行dy_dj及xh_bz的比较,以此可以得出第二条SQL的CPU占用率明显比第一条低。所以尽量将范围小的条件放在前面。。
10、用OR的字句可以分解成多个查询,并且通过UNION 连接多个查询。他们的速度只同是否使用索引有关,如果查询需要用到联合索引,用 UNION all执行的效率更高.多个OR的字句没有用到索引,改写成UNION的形式再试图与索引匹配。一个关键的问题是否用到索引。
11、没有必要时不要用DISTINCT和ORDER BY,这些动作可以改在客户端执行。它们增加了额外的开销。这同UNION和UNION ALL一样的道理。
12、使用in时,在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,这样可以减少判断的次数
13、当用SELECT INTO时,它会锁住系统表(sysobjects,sysindexes等等),阻塞其他的连接的存取。创建临时表时用显示声明语句,在另一个连接中SELECT * from sysobjects可以看到 SELECT INTO 会锁住系统表, Create table 也会锁系统表(不管是临时表还是系统表)。所以千万不要在事物内使用它!!!这样的话如果是经常要用的临时表请使用实表,或者临时表变量。
14、一般在GROUP BY和HAVING字句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作。他们的执行顺序应该如下最优:select 的Where字句选择所有合适的行,Group By用来分组个统计行,Having字句用来剔除多余的分组。这样Group By和Having的开销小,查询快.对于大的数据行进行分组和Having十分消耗资源。如果Group BY的目的不包括计算,只是分组,那么用Distinct更快
15、一次更新多条记录比分多次更新每次一条快,就是说批处理好
16、慎用临时表,临时表存储于tempdb库中,操作临时表时,会引起跨库操作。尽量用结果集和表变量来代替它。
17、尽量将数据的处理工作放在服务器上,减少网络的开销,如使用存储过程。存储过程是编译好、优化过,并且被组织到一个执行规划里、且存储在数据库中的 SQL语句,是控制流语言的集合,速度当然快。
18、不要在一段SQL或者存储过程中多次使用相同的函数或相同的查询语句,这样比较浪费资源,建议将结果放在变量里再调用。这样更快。
19、按照一定的次序来访问你的表。如果你先锁住表A,再锁住表B,那么在所有的存储过程中都要按照这个顺序来锁定它们。如果你(不经意的)某个存储过程中先锁定表B,再锁定表A,这可能就会导致一个死锁。如果锁定顺序没有被预先详细的设计好,死锁很难被发现
❽ sql语句联合查询 与 视图想比较的话,那个效率快,为什么。
sql效率比较快,存储过程的好处是不仅快且更安全,但移植性差。视图可以封装查询的复杂性,就像面向对象里类的概念一样。
❾ 请问一下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这些PC上常用的数据库开发系统,都支持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语句。
※ 数据查询语言(DQL),例如:SELECT语句。
※ 数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。
SQL语言包括三种主要程序设计语言类别的陈述式:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。
❿ 优化SQL 查询:如何写出高性能SQL语句
1、深入理解数据库的工作原理和数据存储的方式,不同的数据库的工作原理是不同的,mysql oracle db2等等都是不同的,更不要说一些nosql数据库和newsql数据库了。
2、理解sql语句检索数据的方式。
3、理解索引,知道怎样的字段建立怎样的索引,索引能做什么,不能做什么,合理的建立字段。
4、合理的拆分和合并表,数据放在一张表里面查询肯定比放在多张表里面级联查询要快。
5、会查看执行任务,任何数据库都有查看执行任务的方法,包括nosql数据库和newsql数据库已经一些大数据数据库;同时还要会分析执行任务,分析主要是所以的使用效率和字段数据的检索方式。
6、sql语句只是性能优化的简单方面,性能优化是从整体应用架构开始体现的,优化sql并不能够解决根本问题,当数据量达到一定级别以后,数据就不能使用关系型数据库,而要使用大数据数据库,这样sql就无用了。
7、不要刻意专注sql本身,sql只是一种查询语言,它本身与性能无关,性能优化的本质在于对存储方式和查询检索过程的深入理解。
8、任何系统功能业务的准确性至上,首先保证功能的正确性再考虑性能优化,如果功能就是数据量大,业务复杂,必须要用到低性能sql的检索方式,那么你只能妥协,否则就要弃用sql和关系型数据库另寻它路。