《九、mysql数据表的操作》由会员分享,可在线阅读,更多相关《九、mysql数据表的操作(21页珍藏版)》请在金锄头文库上搜索。
1、PHP动态网页设计教程,九、MySQL数据表的操作,黄迎久内蒙古科技大学工程训练中心,主要内容,本讲主要内容 (1)MySQL数据表的操作;,一、表记录的更新操作,1、添加记录 insert into table_name (字段列表) values (值列表);,* 值列表应与字段列表个数与顺序对应,值列表的数据类型必须与表字段的数据类型保持一致;,下面两条语句向表xj添加记录: insert into xj (xh,xm,bj,nl) values(12010101,张三,机械2012,23);,一、表记录的更新操作,2、修改记录 update table_name set 字段名1=值1
2、,字段名2=值2,字段名n=值n where 条件表达式,* where 子句指定被修改记录的条件,只有满足条件的记录才被修改;若省略,则表中的全部纪录相应字段的值都会被修改;,例如:将学籍表(xj)中学号=12010102的姓名改为李四,班级改为自动化2012: update xj set xm=李四 , bj=自动化2012 where xh=12010102;,一、表记录的更新操作,3、删除记录 delete from table_name where 条件表达式;,* 若省略where子句,则表中的记录全部被删除;但表结构还在; * 有自动编号的记录被删除后,字段编号不会重新排列,被删
3、除的自动编号不能被重新添加的记录使用;,例如:将学籍表(xj)中学号=12010102的记录删除: delete from xj where xh=12010102;,一、表记录的更新操作,3、查询记录 在数据表的操作中,表记录的查询是使用频率最高的操作; select 字段列表 from 数据源 where 过滤条件 group by 分组表达式 having 分组过滤条件 order by 排序表达式 asc|desc;,* 字段列表格式: *:数据源的全部字段; 表名.*:多表查询时,指定某个表的全部字段; 字段列表:指定所需要显示的字段; 字段列表可以指定字段名也可以指定表达式,还可以
4、为字段名指定别名,多个列之间用逗号隔开,字段的顺序任意。,一、表记录的更新操作,3、查询记录 查询MySQL服务器的当前时间: select now(); 查询学籍表(xj)中的全部记录: select * from xj; 查询学籍表中学生姓名及学号信息: select xm,xh from xj;,一、表记录的更新操作,3、查询记录 *使用谓词限制记录的行数 (1)使用distinct过滤重复记录 select语句查询记录时,会出现记录重复的情况,若只希望查询那些具有不同记录值的记录信息,可以使用distinct select distinct 列名,例如:查询学籍表中学生姓名信息 sel
5、cet distinct xm from xj;,一、表记录的更新操作,3、查询记录 *使用谓词限制记录的行数 (2)使用limit查询某几行记录 select 字段列表 from 数据源 limit start, length;,* limit接收一个或两个参数,start表示从第几行记录开始输出,length表示输出的记录的行数; * 表中第一条记录的start值为0(不为1); select * from xj limit 0, 3 等价于 select * fom xj 3; 查询学籍表中从第2条记录开始的3条记录信息: select * from xj limit 1, 3;,一、表
6、记录的更新操作,3、查询记录 *使用from子句指定多个数据源 在实际语言中,一个select查询语句往往需要从多个数据库表中提取数据,通过from子句使用各种连接运算,就可以将不同数据源表中的记录组合起来。 MySQL中的连接可以分为内连接(inner join)和外连接(outer join),外连接又分为左连接(left join)和右连接(right join)。,一、表记录的更新操作,3、查询记录 (1)内连接(inner join) 内连接是将两个表中满足连接条件的记录连接成新的记录,舍弃不满足连接条件的记录。 from 表1 inner join 表2 on ;,例如将学籍表和班
7、级表内连接: select * from xj inner join bj on xj.bj=bj.code;,一、表记录的更新操作,3、查询记录 (2)外连接(outer join) 外连接只限制一个表,对另一表不限制(该表的记录已出现在结果中)外连接又分为左连接和右连接 左连接(left join) 左连接表A和表B意味着取A的全部记录按指定的连接条件与表B中满足条件的记录进行连接,若表B中没有满足条件的记录,则表A中的相应字段填入NULL。 from 表1 left join 表2 on ;,例如:将学籍表与班级表左连接: select * from xj left join bj on
8、 xj.bj=bj.code;,一、表记录的更新操作,3、查询记录 右连接(right join) 右连接表A和表B意味着取B的全部记录按指定的连接条件与表A中满足条件的记录进行连接,若表A中没有满足条件的记录,则表B中的相应字段填入NULL。 from 表1 right join 表2 on ;,例如:将学籍表与班级表左连接: select * from bj right join xj on xj.bj=bj.code; 右连接表B和表A与左连接表A和表B的结果是一样的。,一、表记录的更新操作,3、查询记录 * 内连接和外连接的区别:内连接将去除不符合条件的记录,外连接则保留其中的部分;
9、* 左连接与右连接的区别:若用表A左连接表B,则表A的全部记录会保留在结果中,表B只有符合条件的记录在结果中;右连接相反;,一、表记录的更新操作,3、查询记录 * 使用where子句过滤记录 数据库存储着大量的信息,用户往往需要的是满足特定条件的部分记录,这就需要对记录进行过滤。 where ,例如:在学籍表中查询年龄大于22岁的记录: selct * from xj where nl22;,例如:在学籍表中查询年龄介于22至23的记录: selct * from xj where nl between 21 and 23;,例如:在学籍表中查询姓名为张姓的记录: selct * from x
10、j where xm like 张%;,例如:在学籍表中查询学号包含“102”的记录: selct * from xj where xh like %102%;,一、表记录的更新操作,3、查询记录 * 使用order by子句对记录排序 order by子句用于设置查询结果的排序。升序(asc),降序(desc)。 worder by asc|desc, asc|desc,:用于指定排序的依据;既可以是字段名,也可以是字段名在字段列表中位置,order by子句可以指定多个字段作为排序的依据,此时首先按前面的字段值进行排序,然后在该字段值相同的记录中按照后面的字段值进行排序。,例如:在学籍表中
11、按学号降序排序: selct * from xj order by xh desc;,例如:在学籍表中按学号降序,年龄升序排序: selct * from xj order by xh desc,nl ;,一、表记录的更新操作,3、查询记录 * 使用聚合函数返回汇总值 聚合函数用一组值进行计算并返回一个汇总值。常用的函数有:sum、avg、count、max、min等。, sum: 如 统计成绩总和: select sum(score) from xj;, avg: 如:统计成绩的平均值: selct avg(sacore) from xj ;,count: 如:统计成绩在70分以上的记录的数
12、量: selct count(*) from xj where score70;,一、表记录的更新操作,3、查询记录 * 使用group by子句对记录分组 group by将字段值相同的记录作为一组,该子句通常与聚合函数一起使用。,如 查询每个学生的平均成绩 select * from score group by xh ;,一、表记录的更新操作,3、查询记录 * 使用having子句提取符合条件的分组 having子句用于指定组或聚合的查询条件,该子句通常与group by一起使用,having子句和where子句都用于指定查询条件,不同的是where子句查询条件在分组操作前应用;having子句查询条件则在分组操作之后应用。,如 查询每个学生平均成绩高于70的记录: select * from score group by xh having avg(score)70 ;,本讲总结,本讲总结 (1) 了解MySQL数据库的基本特点; (2) 掌握MySQL数据库字符集的配制方法; (3) 掌握MySQL数据库的管理系统phpmyadmin的使用方法;,