
【html】sql.ppt
20页数据库技术,静态网页 文本-Html 元素定义 标签 工具 Dreamweaver FrontPage多媒体网页 内容 图像 视频、flash 工具: photoshop, Flash,动态网页 节点定义 DOM 访问方法 JS VBS交互式网页 交互技术 Asp Php Jsp Perl 后台数据库 SQL MySql,MYSQL,SQL:(structrured query language) 结构化查询语言 关系数据库管理系统标准语言 Oracle,ms sql server,access SQL标准自1986年以来不断演化发展,有数种版本 “SQL-92”指得是1992年发布的标准, “SQL:1999”指得是1999年发布的标准, “SQL:2003”指得是标准的当前版本 MySQL: 数据库服务软件 开放源码软件,历史,MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格不管怎样,在经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活 这导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。
MySQL这个名字是怎么来的已经不清楚了基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My这两个到底是哪一个给出了MySQL这个名字至今依然是个密,包括开发者在内也不知道 MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字主要命令,DDL(data definition language) 定义数据结构DML(data manipulation language) 修改数据DCL(data control language)控制: 定义权限,MySQL列类型,数字 Int, float,时期 Date:3字节,yyyy-mm-dd year:1字节,yyyy,1901-2155串 Char(n):n字节,空格补右 Varchar(n):存储所需字符,不补空 以上大小写不区分blob:64k mediumblob:4M longblob:4G,DDL,显示 显示当前存在的数据库 显示当前数据库中存在的表 显示表结构创建 定义表结构删除,DDL-show,显示 Show databases; 显示当前存在的数据库 Use tb_name; 选定数据库 Show tables from database_name; 显示当前数据库中存在的表 显示数据库结构 Show columns from table_name; 显示表结构 describe table_name; desc table_name;,DDL-create,drop,创建 create database database_name; create table table_name(c1_name c1_type,…);删除 drop table table_name;改动 alter table mytable add column c1_name c1_type; alter table t_old_name rename t_new_name;,DML,输入 查询 修改 删除,1、输入,逐条插入 按照定义顺序 Insert into tb_name values(,….); 设定顺序 Insert into tb_name (c1_name,….) values(,….); 推荐使用,便于db改动后,命令依然有效。
批处理 用文本文件方式将所有记录加入数据库表中 创建一个文本文件“mysql.txt”,以定义的列次序, 每行包含一个记录,列之间用 tab(默认方式) load data local infile “c:\\hi.txt“ into table table_name; 对于未知的值,可使用NULL值在文本文件使用\NINSERT INTO 表格名1 (列名11,列名12, .) SELECT 列名21, 列名22, . FROM 表格名2 insert into myindexno (sj) select count(id) as sm from myindexno where sj<3000 SELECT 列名1,列名2…… INTO 新表格名 FROM 表格名 要注意的一点是,新表格名在数据库中应该是不存在的,,2、查询-无条件,显示所有列内容 Select * from tb1,tb2 where conditions;条件语句,2、查询 条件,可以单条件,或者多条件condition: c2_name operator value and / or c3_name=“”; 例子:Username=“tom” and city=“shanghai” and birthyear=“1995”operator可能以下几种:=检查是否相等!=检查是否不等> (或>=)检查左边值是否大于(或大于等于)右边值< (或<=)检查左边值是否小于(或小于等于)右边值[not] between min and max检查左边值是否在某个范围内[not] in (v1,v2,….)检查左边是否某个特定集的成员[not] like ‘%子串%’ 检查包含子串(一般char、varchar)is [not] null检查左边是否为空值,2、查询-有条件,有条件查询 Select c1_name,c2_name from table1[,tb2] where conditions order by c3_name [desc] %排序 group by c4_name %分组 having多表查询:信息不再一个表中 表之间列名唯一,可直接用列名; 否则,写全称 table_name.column_nameselect title,writer,birthaddr,birth from mytable,title -> where mytable.name=title.writer and title='a2';,2、查询 GROUP BY 和 HAVING,聚合函数:sum,count,max, avg等 和其它函数区别:一般作用在多条记录上。
group by WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前. 而 HAVING子句在聚合后对组记录进行筛选SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region HAVING SUM(area)>1000000,聚合函数-count,提取记录数目 “select count(*) from table 返回table表里面的记录总数完整程序 $sql = “select count(*) as amount from table“; $result = mysql_query($sql); $r = mysql_fetch_row($result); $amount = $r['amount'];count是取总数的函数, as amount表示用amount表示返回出来表格的列名聚合函数-other,-> select-> min(emp_sal) as min_salary,-> max(emp_sal) as max_salary,-> sum(emp_sal) as sum_salary,-> avg(emp_sal) as avg_salary,-> count(*) as employee_num-> from emp;查询结果如下:+------------+------------+------------+------------+--------------+| min_salary | max_salary | sum_salary | avg_salary | employee_num |+------------+------------+------------+------------+--------------+| 4000 | 9000 | 21000 | 7000.0000 | 3 |+------------+------------+------------+------------+--------------+1 row in set (0.00 sec),分页显示,select * from table limit offset,rowsoffset是记录偏移量, 计算方法是offset=$pagesize*($page-1), rows是要显示的记录条数, 就是$page。
limit “.($page-1)*$page_size.“, $page_size select * from table limit 10,10 取出表里从第11条记录开始的20条记录,3、修改,更新; 修改字段(一个或多个记录) Update tb_name set c1_name=“c_new_value” ,c1_name=“c_new_value” where condition;update table01 set field04=19991022, field05=062218s where field01=1;update table01 set field05=152901 where field04>19990101;,4、删除,delete from tb_name where condition;,一般步骤,Show databases; create database db_name; Use tb_name; 选定数据库 create table tb_name(c1_name c1_type,…); Show columns from tb_name;显示表结构Insert into tb_name (c1_name,….) values(,….); Select * from tb1,tb2 Update tb_name set c1_name=“c_new_value” where condition;delete from tb_name where condition;,。
