sql经典实例,sql语句大全实例
求高手优化MySQL数据库,数据库反应太慢。
在开始演示之前,我们先介绍下两个概念。
概念一,数据的可选择性基数,也就是常说的cardinality值。
查询优化器在生成各种执行计划之前,得先从统计信息中取得相关数据,这样才能估算每步操作所涉及到的记录数,而这个相关数据就是cardinality。简单来说,就是每个值在每个字段中的唯一值分布状态。
比如表t1有100行记录,其中一列为f1。f1中唯一值的个数可以是100个,也可以是1个,当然也可以是1到100之间的任何一个数字。这里唯一值越的多少,就是这个列的可选择基数。
那看到这里我们就明白了,为什么要在基数高的字段上建立索引,而基数低的的字段建立索引反而没有全表扫描来的快。当然这个只是一方面,至于更深入的探讨就不在我这篇探讨的范围了。
概念二,关于HINT的使用。
这里我来说下HINT是什么,在什么时候用。
HINT简单来说就是在某些特定的场景下人工协助MySQL优化器的工作,使她生成最优的执行计划。一般来说,优化器的执行计划都是最优化的,不过在某些特定场景下,执行计划可能不是最优化。
比如:表t1经过大量的频繁更新操作,(UPDATE,DELETE,INSERT),cardinality已经很不准确了,这时候刚好执行了一条SQL,那么有可能这条SQL的执行计划就不是最优的。为什么说有可能呢?
来看下具体演示
譬如,以下两条SQL,
A:
select * from t1 where f1 = 20;
B:
select * from t1 where f1 = 30;
如果f1的值刚好频繁更新的值为30,并且没有达到MySQL自动更新cardinality值的临界值或者说用户设置了手动更新又或者用户减少了sample page等等,那么对这两条语句来说,可能不准确的就是B了。
这里顺带说下,MySQL提供了自动更新和手动更新表cardinality值的方法,因篇幅有限,需要的可以查阅手册。
那回到正题上,MySQL 8.0 带来了几个HINT,我今天就举个index_merge的例子。
示例表结构:
mysql desc t1;+------------+--------------+------+-----+---------+----------------+| Field ? ? ?| Type ? ? ? ? | Null | Key | Default | Extra ? ? ? ? ?|+------------+--------------+------+-----+---------+----------------+| id ? ? ? ? | int(11) ? ? ?| NO ? | PRI | NULL ? ?| auto_increment || rank1 ? ? ?| int(11) ? ? ?| YES ?| MUL | NULL ? ?| ? ? ? ? ? ? ? ?|| rank2 ? ? ?| int(11) ? ? ?| YES ?| MUL | NULL ? ?| ? ? ? ? ? ? ? ?|| log_time ? | datetime ? ? | YES ?| MUL | NULL ? ?| ? ? ? ? ? ? ? ?|| prefix_uid | varchar(100) | YES ?| ? ? | NULL ? ?| ? ? ? ? ? ? ? ?|| desc1 ? ? ?| text ? ? ? ? | YES ?| ? ? | NULL ? ?| ? ? ? ? ? ? ? ?|| rank3 ? ? ?| int(11) ? ? ?| YES ?| MUL | NULL ? ?| ? ? ? ? ? ? ? ?|+------------+--------------+------+-----+---------+----------------+7 rows in set (0.00 sec)
表记录数:
mysql select count(*) from t1;+----------+| count(*) |+----------+| ? ?32768 |+----------+1 row in set (0.01 sec)
这里我们两条经典的SQL:
SQL C:
select * from t1 where rank1 = 1 or rank2 = 2 or rank3 = 2;
SQL D:
select * from t1 where rank1 =100 ?and rank2 =100 ?and rank3 =100;
表t1实际上在rank1,rank2,rank3三列上分别有一个二级索引。
那我们来看SQL C的查询计划。
显然,没有用到任何索引,扫描的行数为32034,cost为3243.65。
mysql explain ?format=json select * from t1 ?where rank1 =1 or rank2 = 2 or rank3 = 2\G*************************** 1. row ***************************EXPLAIN: { ?"query_block": { ? ?"select_id": 1, ? ?"cost_info": { ? ? ?"query_cost": "3243.65" ? ?}, ? ?"table": { ? ? ?"table_name": "t1", ? ? ?"access_type": "ALL", ? ? ?"possible_keys": [ ? ? ? ?"idx_rank1", ? ? ? ?"idx_rank2", ? ? ? ?"idx_rank3" ? ? ?], ? ? ?"rows_examined_per_scan": 32034, ? ? ?"rows_produced_per_join": 115, ? ? ?"filtered": "0.36", ? ? ?"cost_info": { ? ? ? ?"read_cost": "3232.07", ? ? ? ?"eval_cost": "11.58", ? ? ? ?"prefix_cost": "3243.65", ? ? ? ?"data_read_per_join": "49K" ? ? ?}, ? ? ?"used_columns": [ ? ? ? ?"id", ? ? ? ?"rank1", ? ? ? ?"rank2", ? ? ? ?"log_time", ? ? ? ?"prefix_uid", ? ? ? ?"desc1", ? ? ? ?"rank3" ? ? ?], ? ? ?"attached_condition": "((`ytt`.`t1`.`rank1` = 1) or (`ytt`.`t1`.`rank2` = 2) or (`ytt`.`t1`.`rank3` = 2))" ? ?} ?}}1 row in set, 1 warning (0.00 sec)
我们加上hint给相同的查询,再次看看查询计划。
这个时候用到了index_merge,union了三个列。扫描的行数为1103,cost为441.09,明显比之前的快了好几倍。
mysql explain ?format=json select /*+ index_merge(t1) */ * from t1 ?where rank1 =1 or rank2 = 2 or rank3 = 2\G*************************** 1. row ***************************EXPLAIN: { ?"query_block": { ? ?"select_id": 1, ? ?"cost_info": { ? ? ?"query_cost": "441.09" ? ?}, ? ?"table": { ? ? ?"table_name": "t1", ? ? ?"access_type": "index_merge", ? ? ?"possible_keys": [ ? ? ? ?"idx_rank1", ? ? ? ?"idx_rank2", ? ? ? ?"idx_rank3" ? ? ?], ? ? ?"key": "union(idx_rank1,idx_rank2,idx_rank3)", ? ? ?"key_length": "5,5,5", ? ? ?"rows_examined_per_scan": 1103, ? ? ?"rows_produced_per_join": 1103, ? ? ?"filtered": "100.00", ? ? ?"cost_info": { ? ? ? ?"read_cost": "330.79", ? ? ? ?"eval_cost": "110.30", ? ? ? ?"prefix_cost": "441.09", ? ? ? ?"data_read_per_join": "473K" ? ? ?}, ? ? ?"used_columns": [ ? ? ? ?"id", ? ? ? ?"rank1", ? ? ? ?"rank2", ? ? ? ?"log_time", ? ? ? ?"prefix_uid", ? ? ? ?"desc1", ? ? ? ?"rank3" ? ? ?], ? ? ?"attached_condition": "((`ytt`.`t1`.`rank1` = 1) or (`ytt`.`t1`.`rank2` = 2) or (`ytt`.`t1`.`rank3` = 2))" ? ?} ?}}1 row in set, 1 warning (0.00 sec)
我们再看下SQL D的计划:
不加HINT,
mysql explain format=json select * from t1 where rank1 =100 and rank2 =100 and rank3 =100\G*************************** 1. row ***************************EXPLAIN: { ?"query_block": { ? ?"select_id": 1, ? ?"cost_info": { ? ? ?"query_cost": "534.34" ? ?}, ? ?"table": { ? ? ?"table_name": "t1", ? ? ?"access_type": "ref", ? ? ?"possible_keys": [ ? ? ? ?"idx_rank1", ? ? ? ?"idx_rank2", ? ? ? ?"idx_rank3" ? ? ?], ? ? ?"key": "idx_rank1", ? ? ?"used_key_parts": [ ? ? ? ?"rank1" ? ? ?], ? ? ?"key_length": "5", ? ? ?"ref": [ ? ? ? ?"const" ? ? ?], ? ? ?"rows_examined_per_scan": 555, ? ? ?"rows_produced_per_join": 0, ? ? ?"filtered": "0.07", ? ? ?"cost_info": { ? ? ? ?"read_cost": "478.84", ? ? ? ?"eval_cost": "0.04", ? ? ? ?"prefix_cost": "534.34", ? ? ? ?"data_read_per_join": "176" ? ? ?}, ? ? ?"used_columns": [ ? ? ? ?"id", ? ? ? ?"rank1", ? ? ? ?"rank2", ? ? ? ?"log_time", ? ? ? ?"prefix_uid", ? ? ? ?"desc1", ? ? ? ?"rank3" ? ? ?], ? ? ?"attached_condition": "((`ytt`.`t1`.`rank3` = 100) and (`ytt`.`t1`.`rank2` = 100))" ? ?} ?}}1 row in set, 1 warning (0.00 sec)
加了HINT,
mysql explain format=json select /*+ index_merge(t1)*/ * from t1 where rank1 =100 and rank2 =100 and rank3 =100\G*************************** 1. row ***************************EXPLAIN: { ?"query_block": { ? ?"select_id": 1, ? ?"cost_info": { ? ? ?"query_cost": "5.23" ? ?}, ? ?"table": { ? ? ?"table_name": "t1", ? ? ?"access_type": "index_merge", ? ? ?"possible_keys": [ ? ? ? ?"idx_rank1", ? ? ? ?"idx_rank2", ? ? ? ?"idx_rank3" ? ? ?], ? ? ?"key": "intersect(idx_rank1,idx_rank2,idx_rank3)", ? ? ?"key_length": "5,5,5", ? ? ?"rows_examined_per_scan": 1, ? ? ?"rows_produced_per_join": 1, ? ? ?"filtered": "100.00", ? ? ?"cost_info": { ? ? ? ?"read_cost": "5.13", ? ? ? ?"eval_cost": "0.10", ? ? ? ?"prefix_cost": "5.23", ? ? ? ?"data_read_per_join": "440" ? ? ?}, ? ? ?"used_columns": [ ? ? ? ?"id", ? ? ? ?"rank1", ? ? ? ?"rank2", ? ? ? ?"log_time", ? ? ? ?"prefix_uid", ? ? ? ?"desc1", ? ? ? ?"rank3" ? ? ?], ? ? ?"attached_condition": "((`ytt`.`t1`.`rank3` = 100) and (`ytt`.`t1`.`rank2` = 100) and (`ytt`.`t1`.`rank1` = 100))" ? ?} ?}}1 row in set, 1 warning (0.00 sec)
对比下以上两个,加了HINT的比不加HINT的cost小了100倍。
总结下,就是说表的cardinality值影响这张的查询计划,如果这个值没有正常更新的话,就需要手工加HINT了。相信MySQL未来的版本会带来更多的HINT。
数据分析有哪些好书值得推荐?
入门数据分析类
师父领进门,修行在个人。下面这两本书是入门数据分析必看的书籍,也是检验自己是否真的喜欢数据分析。
从0到1:《深入浅出数据分析》
为什么是它?借用一位读者的评价“我家的猫都喜欢这本书!”
01 内容简介
以类似“章回小说”的活泼形式,生动地向读者展现优秀的数据分析人员应知应会的技术;正文以后,意犹未尽地以三篇附录介绍数据分析十大要务、R工具及ToolPak工具,在充分展现目标知识以外,为读者搭建了走向深入研究的桥梁。
02 推荐理由
书名已经很好地表现出了这本书的优点——“深入浅出”。忘记烦恼,这本书与现实世界紧密互动,让你不再只有枯燥的理论,并且将知识图形化,复杂的概念简单化。
经典小黄书:《谁说菜鸟不会数据分析》
是本很好的书,但看过之后,这本书就真一文不值了。
01 内容简介
很多人看到数据分析就望而却步,担心门槛高,无法迈入数据分析的门槛。《谁说菜鸟不会数据分析》努力将数据分析写成像小说一样通俗易懂,使读者可以在无形之中学会数据分析,按照数据分析工作的完整流程来讲解。
02 推荐理由
数据分析的入门极品,但真的很入门,优缺兼有。对于入门理解来说是绝佳选择,对之后的修炼还是不够的。建议之前全都是自己瞎摸瞎撞搞数据分析的同学进行阅读,颇有醍醐灌顶之感。
分析工具类
与数据分析相关的工具非常之多,我们常用的有Excel、PPT、SQL等。如果您想精通他们,直接在哔哩哔哩搜索聚数云海,即可找到相关优质课程。
1.Excel
大家常说的Excel,但是不要以为你很会Excel!Excel是所有职场人必备的办公软件。Excel功能非常强大,在数据量不是很大的情况下,基本上都能用Excel实现数据分析。推荐如下书籍:
《Excel高效办公数据处理与分析》
01 内容简介
根据现代企业决策和管理工作的主要特点,从实际应用出发,介绍了Excel强大的数据处理与分析功能在企业决策和管理工作中的具体应用。
02 推荐理由
本书同时提供了大量需要你做的实例,学而不练是不存在的!
《别怕,Excel函数其实很简单》
01 内容简介
《别怕,Excel 函数其实很简单》用浅显易懂的图文、生动形象的比喻以及大量实际工作中的经典案例,介绍了Excel最常用的一部分函数的计算原理和应用技巧,还介绍了数据的科学管理方法,以避免从数据源头就产生问题。
02 推荐理由
适合希望提高办公效率的职场人士,特别是经常需要处理分析大量数据并制作统计报表的相关人员,以及相关专业的高校师生阅读,小白需谨慎!
2. SQL
SQL是数据分析的基础,是想要学会数据分析能力的必备技能。那这里我只给大家介绍三本书,第一本书零基础入门,第二是进阶,第三本是SQL中的字典,话不多说,我们直接上架。
《SQL基础教程》
01 推荐理由
介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法。书中通过丰富的图示、大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基础知识和使用技巧,切实提高编程能力。每章结尾设置有练习题,帮助读者检验对各章内容的理解程度。另外,本书还将重要知识点总结为“法则”,方便读者随时查阅。
本书107张图表+209段代码+88个法则,是零基础进阶人士必备!
SQL进阶:《SQL进阶教程》
01 推荐理由
本书是为志在向中级进阶的数据库工程师编写的一本SQL技能提升指南。全书可分为两部分,第一部分介绍了SQL语言不同寻常的使用技巧,带领读者从SQL常见技术,去探索新发现。旨在帮助读者提升编程水平;第二部分着重介绍关系数据库的发展史,把实践与理论结合起来,旨在帮助读者加深对关系数据库和SQL语言的理解。
本书不适合小白!适合具有半年以上SQL使用经验、已掌握SQL基础知识和技能、希望提升自己编程水平的读者阅读。
SQL辅导书籍
01 推荐理由
本书是麻省理工学院、伊利诺伊大学等众多大学的参考教材,由浅入深地讲解了SQL的内容,实例丰富,便于查阅。本书没有过多阐述数据库基础理论,而是专门针对一线软件开发人员,直接从SQL SELECT开始,讲述实际工作环境中最常用和最必需的SQL知识,实用性极强。
有一定SQL基础的人士可以将它当做一本字典使用,遇到问题可以查找相应内用。
3.Python
“人生苦短,我用Python”。Python编程语言是最容易学习,并且功能强大的语言。但是很多人声称自己精通Python,自己却写不出Pythonic的代码,对很多常用的包不是很了解。万丈高楼平地起,咱们先从Python中最最基础的开始。
《Python编程,从入门到实践》
01 推荐理由
本书最大的特点就是零基础完全不懂编程的小白也能够学习,新手想学习选它绝对错不了。知识点由浅入深循循渐进,并配有视频教程手把手教学,同时所需的软件也是免费的。本书也配有相关辅导书籍,有兴趣的话可以去看看,但是请记住,这本书是最核心的。
《利用Python进行数据分析》
01 推荐理由
不像别的编程书一样,从盘古开天辟地开始讲起。这本书是直接应用到数据分析的,所以很多在数据分析上应用不那么频繁的模块也就没有讲。
本书第二版针对Python 3.6进行了更新,并增加实际案例向你展示如何高效地解决一系列数据分析问题。你将在阅读过程中学习到新版本的pandas、NumPy、IPython和Jupyter。
4.R语言
R是用于统计分析、绘图的语言和操作环境。但是R是有一定难度的,没有基础的话请谨慎尝试!推荐书籍:
《R语言入门与实践》
01 推荐理由
本书通过三个精心挑选的例子,深入浅出地讲解如何使用R语言玩转数据。将数据科学家必需的专业技能融合其中,教会读者如何将数据存储到计算机内存中,如何在必要的时候转换内存中的数据值,如何用R编写自己的程序并将其用于数据分析和模拟运行。
案例提升类
《活用数据:驱动业务的数据分析实战》
01 推荐理由
是一本用数据来帮助企业破解业务难题的实操书,有理论、有方法、有实战案例。具有业务驱动、案例闭环、思维先导、实战还原4大特色,同时在思路上清晰连贯,在表达上深入浅出,既能帮助数据分析从业者入门和提升,也能辅助企业各业务部门和各级管理人员做量化决策。
《精益数据分析》
01 推荐理由
本书展示了如何验证自己的设想、找到真正的客户、打造能赚钱的产品,以及提升企业知名度。30多个案例分析,全球100多位知名企业家的真知灼见,为你呈现来之不易、经过实践检验的创业心得和宝贵经验,值得每位创业家和企业家一读。
javabean有哪些动作元素及方法?
第5章 开发JSP框架 85
JSP是进行网页开发的最基础的技术,其基本语法可以总结为:2种注释类型、3个脚本元素、3个指令元素、8个动作指令、9大内置对象,再通过JDBC即可实现对MySQL数据库的操作。
5.1 JSP基本语法 85
5.1.1 一个典型的JSP文件 5.1.2 两种注释类型
5.1.3 3个脚本元素 5.1.4 3个指令元素
5.1.5 8个动作指令
5.2 JSP内置对象 96
5.2.1 Request:请求对象 5.2.2 Response:响应对象
5.2.3 Session:会话对象 5.2.4 Application:应用程序对象
5.2.5 Out:输出对象 5.2.6 Cookie:客户端对象
5.2.7 Config:配置对象 5.2.8 Page:页面对象
5.2.9 PageContext:页面上下文对象 5.2.10 Exception:例外对象
5.3 JDBC核心技术 101
5.3.1 通过Connection对象建立数据库连接 5.3.2 通过DatabaseMetaData对象了解
数据库的信息
5.3.3 使用Statement对象 5.3.4 结果集ResultSet对象
5.3.5 PreparedStatement接口 5.3.6 CallableStatement对象
5.4 从jdbc_blank配置连接MySQL并进行测试 113
5.4.1 添加MySQL驱动mysql-2.0.4.jar 5.4.2 数据库参数文件inc.jsp
5.4.3 测试MySQL连接testjdbc.jsp
5.5 开发JSP显示页面和响应处理页面 115
5.5.1 登录页面login.jsp 5.5.2 登录验证操作login_action.jsp
5.5.3 欢迎页面welcome.jsp 5.5.4 退出操作logout.jsp
5.5.5 注册页面register.jsp 5.5.6 注册用户操作register_action.jsp
5.6 架构1:demo(JSP).zip 124
5.6.1 程序结构图 5.6.2 系统架构图
5.6.3 如何在该架构上开发新的功能
5.7 继续下一主题:使用JavaBean组件处理业务逻辑 125
第6章 开发JSP+JavaBean框架 127
目前,JSP作为一个优秀的动态网站开发语言得到了越来越广泛的应用,在各类JSP应用程序中,JSP+JavaBean的组合也成为了一种事实上最常见的JSP程序的标准。
6.1 JavaBean技术基础 127
6.1.1 JavaBean简介 6.1.2 一个简单的JavaBean的例子
6.1.3 JavaBean属性 6.1.4 JSP与JavaBean结合
6.1.5 JSP与JavaBean结合实例
6.2 开发数据库底层处理JavaBean—DBAccess.java 134
6.2.1 定义JavaBean变量 6.2.2 编写getter/setter函数
6.2.3 创建数据库连接 6.2.4 更新SQL函数
6.2.5 查询SQL函数 6.2.6 关闭数据库连接对象
6.3 开发JavaBean业务逻辑组件—UserBean.java 139
6.3.1 登录验证函数 6.3.2 修改login_action.jsp调用JavaBean
6.3.3 用户注册时检查用户名是否存在 6.3.4 增加一个用户
6.3.5 修改register_action.jsp调用JavaBean
6.4 架构2:demo(JSP+JavaBean).zip 142
6.4.1 程序结构图 6.4.2 系统架构图
6.4.3 如何在该架构上开发新的功能
6.5 继续下一主题:使用Servlet接收用户请求 143
第7章 开发JSP+JavaBean+Servlet框架 145
Servlet是JSP的前身,可以生成动态的Web页面。它是位于Web服务器内部的服务器端的Java应用程序,由Web服务器进行加载,通常用作请求控制器、监听器、过滤器等。
7.1 Servlet技术基础 145
7.1.1 一个简单的Servlet 7.1.2 Servlet基本概念
7.1.3 Servlet生命周期 7.1.4 Servlet的重要函数
7.2 Servlet经典实例 150
7.2.1 编码过滤器 7.2.2 站点计数监听器
7.3 开发Servlet接收用户请求UserServlet 153
7.3.1 在web.xml中添加Servlet配置 7.3.2 新建com.demo.servlet.UserServlet
7.3.3 处理登录验证Servlet 7.3.4 处理退出Servlet
7.3.5 处理注册Servlet
7.4 架构3:demo(JSP+JavaBean+Servlet).zip 157
7.4.1 程序结构图 7.4.2 系统架构图
7.4.3 如何在该架构上开发新的功能
这上面就是你要学习的内容!!
我就是按照这本书上学的..
我买了这本书...楼主当然不用买了....
不过上面的学习内容顺序很重要,还有就是要学哪些内容...给楼主做个参考噢....
希望楼主早日学会啦!!!
怎样制作一个网站
要领一:确定网站主题
做网站,首先必须要解决的就是网站内容问题,即确定网站的主题。美国《个人电脑》杂志(PC Magazine)评出了99年度排名前100位的全美知名网站的十类题材:第1类:网上求职;第2类:网上聊天/即时信息/ICQ;第3类:网上社区/讨论/邮件列表;第4类:计算机技术;第5类:网页/网站开发;第6类:娱乐网站;第7类:旅行;第8类:参考/资讯;第9类:家庭/教育;第10类:生活/时尚。我们可以参看上面的分类,继续细分。如果自己在某些方面有兴趣,或掌握的资料较多,也可以做一个自己感兴趣的东西,一者,你可以有自己的见解,做出自己的特色;二者,在制作网站时不会觉得无聊或者力不从心。兴趣是制作网站的动力,没有创作热情,很难设计制作出优秀的作品。
对于内容主题的选择,要做到小而精,主题定位要小,内容要精。不要去试图制作一个包罗万象的站点,这往往会失去网站的特色,也会带来高强度的劳动,给网站的及时更新带来困难。记住:在互联网上只有第一,没有第二!
要领二:选择好域名
域名是网站在互联网上的名字。一个非产品推销的纯信息服务网站,其所有建设的价值,都凝结在其网站域名之上。失去这个域名,所有前期工作就将全部落空。
目前,做个人网站的很多都依赖免费个人空间,其域名也是依赖免费域名指向,如网易的虚拟域名服务,其实这对个人网站的推广与发展很为不利,不光是它“适时”开启的窗口妨碍了浏览者的视线和好感,让人一看就知道是个人网站,而且也妨碍了网页的传输速度。所以,就我个人观点来说,首先花点钱去注册一个域名,独立的域名就是个人网站的第一笔财富,要把域名起得形象、简单、易记。
要领三:掌握建网工具
网络技术的发展带动了软件业的发展,所以用于制作Web页面的工具软件也越来越丰富。从最基本的HTML编辑器到现在非常流行的Flash互动网页制作工具,各种各样的Web页面制作工具,下面是几款具有代表性的网页制作器:
(1)HTML编辑器。虽然HTML代码复杂,编辑和调试要花费大量的时间,但因HTML的稳定性、广泛支持性及可创建复杂的页面效果,仍受高级网页制作人员的青睐。就目前来说,有众多的编辑器供选择,这些编辑器广泛支持复杂页面创建及高级HTML规范,使用较为普遍的有Hotdog等专业HTML编辑器。
(2)所见即所得的网页编辑器。其中以Microsoft Frontpage为代表,它具有如Word一样的操作界面,熟知Word功能的操作者,只要稍加培训就能轻松编制网页。而且,Frontpage还能解析网页的HTML源代码,并提供了预览支持。但Frontpage的一些特殊显示功能并不能在其它非IE浏览器下实现。所以Frontpage是一款非常适合初、中级网页制作人员使用的工具软件。
(3)现在非常流行的 Macromedia公司出品的Flash互动网页制作工具。这是是一款功能非常强大的交互式矢量多媒体网页制作工具。能够轻松输出各种各样的动画网页,它不需要特别繁杂的操作,也比JAVA小巧精悍!但它的动画效果、互动效果、多媒体效果十分出色。而且还可以在Flash动画中封装Mp3音乐、填写表单等;并且由于Flash编制的网页文件比普通网页文件要小得多,所以大大加快了浏览速度。这是一款十分适合动态Web制作的工具。
另外,个人网站制作者还需了解W3C的HTML4.0规范、CSS层叠样式表的基本知识、javascript、VBScript的基本知识。对于常用的一些脚本程序如ASP、CGI、PHP也要有适当了解,还要熟练使用图形处理工具和动画制作工具以及矢量绘图工具,并能部分了解多种图形图像动画工具的基本用法,熟练使用FTP工具以及拥有相应的软硬件和网络知识也是必备的。
当然,互联网还是一个免费的资料库。编制网页需要多种多样的按钮、背景还有各种各样图形、图片。如果这些都要靠自己完成,既浪费时间又浪费金钱,而且还需要强大的图形、图片制作技术。所以,为了省却这些麻烦,网站制作者完全可以从网上下载各种精美实用的图片、按钮、背景等网页素材。
要领四:确定网站界面
界面就是网站给浏览者的第一印象,往往决定着网站的可看性,在确定网站的界面时要注意以下三点:
①栏目与板块编排
构建一个网站就好比写一篇论文,首先要列出题纲,才能主题明确、层次清晰。网站建设初学者,最容易犯的错误就是:确定题材后立刻开始制作,没有进行合理规划。从而导致网站结构不清晰,目录庞杂混乱,板块编排混乱等。结果不但浏览者看得糊里糊涂,制作者自己在扩充和维护网站也相当困难。所以,我们在动手制作网页前,一定要考虑好栏目和板块的编排问题。
网站的题材确定后,就要将收集到的资料内容作一个合理的编排。比如,将一些最吸引人的内容放在最突出的位置或者在版面分布上占优势地位。栏目的实质是一个网站的大纲索引,索引应该将网站的主体明确显示出来。在制定栏目的时候,要仔细考虑,合理安排。在栏目编排时需要注意的是:
●尽可能删除那些与主题无关的栏目;
●尽可能将网站内最有价值的内容列在栏目上;
●尽可能从访问者角度来编排栏目以方便访问者的浏览和查询;辅助内容,如站点简介、版权信息、个人信息等大可不必放在主栏目里,以免冲淡主题。
另外,板块的编排设置也要合理安排与划分。板块比栏目的概念要大一些,每个板块都有自己的栏目。举个例子:ENET硅谷动力()的站点分新闻、产品、游戏、学院等板块,每个板块下面又各有自己的主栏目。一般来说,个人站点内容较少,只要分个栏目也就够了,不需要设置板块。如果有必要设置板块的,应该注意:
●各板块要有相对独立性;
●各板块要有相互关联;
●各板块的内容要围绕站点主题;
②目录结构与链接结构
网站的目录是指建立网站时创建的目录。例如:在用Frontpage建立网站时都默认建立了根目录和Images子目录。目录的结构是一个容易忽略的问题,大多数站长都是未经规划,随意创建子目录。目录结构的好坏,对浏览者来说并没有什么太大的感觉,但是对于站点本身的维护,以后内容的扩充和移植有着重要的影响。所以建立目录结构时也要仔细安排,比如:
●不要将所有文件都存放在根目录下。有网站制作者为了方便,将所有文件都放在根目录下。这样就很容易造成:文件管理混乱,搞不清哪些文件需要编辑和更新,哪些无用的文件可以删除,哪些是相关联的文件,影响工作效率;上传速度变慢,服务器一般都会为根目录建立一个文件索引,如果将所有文件都放在根目录下,那么即使只上传更新一个文件,服务器也需要将所有文件再检索一遍,建立新的索引文件,很明显,文件量越大,等待的时间也将越长。
●按栏目内容建立子目录。子目录的建立,首先按主栏目建立。友情连接内容较多,需要经常更新的可以建立独立的子目录。而一些相关性强,不需要经常更新的栏目,例如:网站简介、站长情况等可以合并放在一个统一目录下。所有程序一般都存放在特定目录,例如:CGI程序放在cgi-bin目录,所有提供下载的内容也最好放在一个目录下,便于维护管理。
●在每个主目录下都建立独立的Images目录。一般来说,一个站点根目录下都有一个默认地Images目录。将所有图片都存放在这个目录里很是不方便,比如在栏目删除时,图片的管理相当麻烦。所以为每个主栏目建立一个独立的Images目录是方便管理的。原因很简单,就是方便维护与管理。
其它需要注意的还有:目录的层次不要太深,不要超过3层;不要使用中文目录,使用中文目录可能对网址的正确显示造成困难;不要使用过长的目录,太长的目录名不便于记忆;尽量使用意义明确的目录,以便于记忆和管理。
网站的链接结构是指页面之间相互链接的拓扑结构。它建立在目录结构基础之上,但可以跨越目录。形象的说:每个页面都是一个固定点,链接则是在两个固定点之间的连线。一个点可以和一个点连接,也可以和多个点连接。更重要的是,这些点并不是分布在一个平面上,而是存在于一个立体的空间中。一般的,建立网站的链接结构有两种基本方式:
●树状链接结构(一对一),这类似DOS的目录结构,首页链接指向一级页面,一级页面链接指向二级页面。这样的链接结构浏览时,一级级进入,一级级退出,条理比较清晰,访问者明确知道自己在什么位置,不会“不知身在何处”,但是浏览效率低,一个栏目下的子页面到另一个栏目下的子页面,必须回到首页再进行。
●星状链接结构(一对多),类似网络服务器的链接,每个页面相互之间都建立有链接。这样浏览比较方便,随时可以到达自己喜欢的页面。但是由于链接太多,容易使浏览者迷路,搞不清自己在什么位置,看了多少内容。
因此,在实际的网站设计中,总是将这两种结构混合起来使用。网站希望浏览者既可以方便快速地达到自己需要的页面,又可以清晰地知道自己的位置。所以,最好的办法是:首页和一级页面之间用星状链接结构,一级和二级页面之间用树状链接结构。关于链接结构的设计,在实际的网页制作中是非常重要一环,采用什么样的链接结构直接影响到版面的布局。
③进行形象设计
网站的设计可以从以下几点出发:
●设计网站标志(LOGO)。LOGO是指网站的标志,标志可以是中文、英文字母,也可以是符号、图案等。标志的设计创意应当来自网站的名称和内容。比如:网站内有代表性的人物、动物、植物,可以用它们作为设计的蓝本,加以卡通化或者艺术化;专业网站可以以本专业有代表的物品作为标志。最常用和最简单的方式是用自己网站的英文名称作标志,采用不同的字体、字母的变形、字母的组合可以很容易制作好自己的标志。
●设计网站色彩。网站给人的第一印象来自视觉冲击,不同的色彩搭配产生不同的效果,并可能影响到访问者的情绪。“标准色彩”是指能体现网站型象和延伸内涵的色彩,要用于网站的标志,标题,主菜单和主色块。给人以整体统一的感觉。至于其它色彩也可以使用,但应当只是作为点缀和衬托,绝不能喧宾夺主。一般来说,一个网站的标准色彩不超过3种,太多则让人眼花缭乱。适合于网页标准色的颜色有:蓝色,黄/橙色,黑/灰/白色三大系列色。
●设计网站字体。和标准色彩一样,标准字体是指用于标志,标题,主菜单的特有字体。一般网页默认的字体是宋体。为了体现站点的“与众不同”和特有风格,可以根据需要选择一些特别字体。制作者可以根据自己网站所表达的内涵,选择更贴切的字体。需要说明的是:使用非默认字体只能用图片的形式,因为很可能浏览者的计算机里没有安装特别字体,那么辛苦设计制作便可能付之东流了。
●设计网站宣传语。也可以说是网站的精神、主题与中心,或者是网站的目标,用一句话或者一个词来高度概括。用富有气势的话或词语来概括网站,进行对外宣传,可以收到比较好的结果。
要领五:确定网站风格
“风格”是抽象的,是指站点的整体形象给浏览者的综合感受。这个“整体形象”包括站点的CI(标志,色彩,字体,标语)、版面布局、浏览方式、交互性、文字、语气、内容价值等等诸多因素,网站可以是平易近人的、生动活泼的也可以是专业严肃的。不管是色彩、技术、文字、布局,还是交互方式,只要你能由此让浏览者明确分辨出这是你网站独有的,这就形成了网站的“风格”。
风格是有人性的,通过网站的色彩、技术、文字、布局、交互方式可以概括出一个站点的个性:是粗犷豪放的,还是清新秀丽的;是温文儒雅的,还是执著热情的;是活泼易变的,还是墨守成规的。
总之,有风格的网站与普通网站的区别在于:在普通网站上你看到的只是堆砌在一起的信息,你只能用理性的感受来描述,比如信息量多少,浏览速度快慢等;在有风格的网站上你可以获得除内容之外的更感性的认识,比如站点的品位,对浏览者的态度等。
在明确自己想给人以怎样的印象后,要找出网站中最有特色的东西,就是最能体现网站风格的东西。并以它作为网站的特色加以重点强化、宣传。总之,风格的形成不是一次定位的,你可以在实践中不断强化、调整、改进。
要领六:有创意的内容选择
好的内容选择需要有好的创意,作为网页设计制作者,最苦恼的就是没有好的内容创意。网络上的最多的创意即是来自于虚拟同现实的结合。创意的目的是为了更好的宣传与推广网站,如果创意很好,却对网站发展毫无意义,那么,网站设计制作者也应当放弃这个创意。另外,主页内容是网站的根本之所在,如果内容空洞,即使页面制作地再怎样精美,仍然不会有多少用户。从根本上说,网站内容仍然左右着网站流量,内容为王(Content Is King)依然是个人网站成功的关键。
要领七:推广自己的网站
网站的营销推广在个人网站的运行中也占着重要的地位,在推广个人网站之前,请确保已经做好了以下内容:网站信息内容丰富、准确、及时;网站技术具有一定专业水准,网站的交互性能良好。一般来说,网站的推广有以下几种方式:
(1)搜索引擎注册与搜索目录登录技巧
注册著名的搜索引擎站点是在技术上推广网站的第一步。注册搜索引擎有一定的技巧,像AltaVista、搜索客这样的搜索引擎,它自动收录提交的网址。另外,注意Meta的使用,不要提交分栏Frame页面,大部分搜索引擎不识别Frame,所以一定要提交有内容的Main页面。
而像Yahoo、搜狐等搜索目录网站采用手工方式收录网址,以保证收录网站的质量,在分类查询时获得的信息相关性比搜索引擎站点(靠Spider自动搜索的)更强。由于搜索目录网站收录网站的人为因素相对较多,因此在提交网站时要注意遵守规则。如Yahoo要求注册站点描述不超过25个单词。在此要注意:将网址提交到最合适的目录下面,要认真详细的介绍网站,千万不要有虚假、夸张的成分。
(2)广告交换技巧
很多个人站点在相互广告交换时都提出了几个条件:第一,访问量相当;第二,首页交换。显而易见,这种做法是为了充分利用广告交换。以很多个人网站的经验,当与一个个人站点交换链接时,对方把网站的LOGO放到了友情连接一页,而不是首页时,很少有访客会来自那里。通常在首页,广告交换才会有很好的效果。
(3)目标电子邮件推广
使用电子邮件宣传网址时,主要有如下技巧:可以使用免费邮件列表来进行,只要你申请了免费邮件列表服务,你就可以利用邮件列表来推广你的网站;可以通过收集的特定邮件地址,来发送信息到特定的网络群体,在特定网络群体中推广自己的网站;发送HTML格式的邮件,即使其内容与接收者关系不大,也不会被被当作垃圾信件马上删掉,人们至少会留意一下发送者的地址。不过,在进行邮件推广的时候要注意网络道德。
要领八:支撑网站日常运行
当个人网站做到某一程度,就必须把赚钱提到议事日程上来,通常来说,个人网站获取资金通常有以下两个渠道:
(1)销售网站的广告位
要销售网站的广告位,一般来说,每日的流量少于1万人次的网站在目前是不会吸引广告主的。网站的专业性及商用性,以往的广告经验,技术以及设计要求等也会影响到广告的销售。
一般来说,WEB广告的收费有三种方式:
①CPM (Cost Per Million/Thousand)
放一个广告,它按每1,000人次来访问站点收费。这方法对网站经营者最为合适,只要有人浏览该网页,就得钱,不管访问者对广告有无反应——是否会看或点击该广告。
②点透(Click-through)
通过Banner广告点到了广告商的站点,这才算数,广告商青睐这个,他只为对自己广告感兴趣的人“套钱“。网站经营者就不合适了,据一些调查资料表明,只有3%的访问者会去“CLICK”广告。
③提成 (Commission)
根据访问者点击位于你站点上广告所带来的销售收入,从中跟做广告的厂商分成,这种方法对于网站的经营者来说,比上面两个都更加冒险。
通常的,个人网站的广告收费方法往往是第一、第二种方法的结合,站点和广告商都可少冒点险。
(2)与大型网站合作
另外,通过与大型网站合作,获取经费,也可以维持个人网站的日常运行。不过,个人网站很容易会成为商业网站的附属品。
有时间和充沛的体力,再加上对新技术和技巧的学习和应用,你就能为自己在网上建一个家了。