上班之余抽点间时出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家起一学习一下宋体查询
1.mysql数据库温习增强
1,导出mysql数据库里ecshop到d盘
mysqldump 指令和 mysql指令是一样的
引出一个环境变量:
就是统系找到要需运行的程序的路径
Mysqldump -u root -p 数据库名 > 导出的文件名
1,找到mysqldump.exe这个程序,它是用来份备的
2,行执份备命令
E:\wamp\mysql\bin>mysqldump -u root -p ecshop > d:/ecshopbak.sql
(2)份备数据库中某个数据表
1,找到mysqldump.exe这个程序,它是用来份备的
2,行执份备命令
E:\wamp\mysql\bin>mysqldump -u root -p ecshop ecs_goods > d:goodsbak.sql
导入外部数据库文件
source 指令是属于mysql的
删除数据表
drop table ecs_goods;
清空数据表中的数据:
delete from 表名
delete 和 drop 区分:
delete q清空数据表中的数据(构结)
drop 删除个整表
编码:
utf-8 同一的编码,它支撑中文和英文,议建建表的时候都是用utf-8,利于网站国际化
gb2312 支撑大陆的中文,
gbk 括包gb2312,支撑韩文,日文,香港。。。
mysql 数据库数据类型(列类型)
1,数值类型(整型,浮点型,定点型)
2,字符串类型(char, varchar,text,enum(枚举类型))
但是enum类型由于兼容性和移植性,不太议建应用
3,日期和间时类型
datetime()------年月日时分秒
date----------年月日
time--------时分秒
间时戳示表间时---------timestamp---------now()
int示表的范围是 --- 0---
tinyint 示表的范围------0-255
smallint--------
有号符 signed ------正负数 -128 到 127 示表的范围也是255个长度
无号符 unsigned------没有正负数 0 -255
如果给全班同窗建表
unsinged
字符串类型
char 定长(牢固长度)字符串----- 0-65535
varchar 可变长度----varchar (255)多少个节字 ,最多255个
text 大的文本数据
间时日期类型
date()
剖析这个数据库函数
timestamp ------------不剖析-----所以速度要比mysql日期函数快
我议建应用间时戳示表间时
训练:
给我们的同窗建一张数据表,段字括包
生学id
姓名
学入间时
tinyint 255 -128 127 0-255
unsigned
varchar(10) 可变长度,最多10个节字,真正应用几个给你分配几个
char() ---------定长 0-65535,不管字符串或多或少都占用 65535长度
name
time
date, datetime mysql置内的日期函数,mysql引擎查询的时候要先剖析 函数,速度慢
timestamp 字符串(‘2013-04-16’)
化优表注意事项:
1,创立id-----尽量表前缀连上id,假如 商品表 goods_id 分类表 cat_id
2,创立表的时候---指定存储引擎------如果查询为主的话,engine=myisam ,为了免避乱码----指定utf8 default charset
3,尽量应用间时戳或字符串 示表日期和和间时
4,段字(数值,字符串)
(2)查询语句:
取得商品id为 3 5 7 8 的商品信息
group by 分组的应用
1,商品表和商品分类表,通过在商品表中加增 cat_id段字,联关起来了
2,ecs_category分类表,保存的是商品的分类 id
注意:
//查询不同cat_id,上面对应的不同的商品数量
(1)先根据分类,分组
(2)再统计分组面里的商品的数量
group by 根据xx来分组,
如果计合函数,和group by 起一应用的话,统计的是当前分组内的数据
训练题:
查询不同的商品分类上面,商品格价的总和
查询不同的商品分类上面,格价最高的商品
查询不同的商品分类上面,商品格价的平均数
计合函数:
Max:最大值
M1in:最小值
Count():统计总的录记数
Avg:平均数
Sum:乞降
having 和 where 区分:
where:制约的是个整数据表中段字
select goods_name from ecs_goods where goods_id=9;
having: 制约的件条是:后面查询的结果,这个结果有什么件条
union查询
union 合联 连接
union可以将多个查询语句连接起来,select 1 union select2
(select goods_name from ecs_goods where cat_id=3 order by shop_price desc limit 3)
union (select goods_name from ecs_goods where cat_id=4 order by shop_price asc li
mit 3);
//查询手机类型上面的全部的手机品牌
mysql> select cat_name from ecs_category where cat_id=1 union select cat_name fr
om ecs_category where parent_id=1;
子查询
如果一个select查询语句 包含了一另select查询语句 就称之为子查询
(1)select型子查询
select goods_name from ecs_goods where cat_id=(select cat_id from ecs_cat
egory where cat_name = 'GSM手机');
(2)from型子查询
要需注意:
from面后的子查询表列 要有自己的别名
select goods_name from(select * from ecs_goods where cat_id in(3,5)) as tem_goods where goods_name like '诺基亚%';
路思1:
select avg(score),name from score where name in(select name from score where score < 60 group by name having count(*)>=2) group by name;
路思2:
1,统计每一个分组中,分数小于60的课功数量
select count(subject) as na from score group by subject having na >=2;
路思3:
1,统计每一个分组中,分数小于60的课功数量
select sum(score<60) as su from score group by name having su>=2;
select avg(score),name from score where name in(select name from score where score < 60 group by name having count(*)>=2) group by name;
2.mysql务事触发器
1,连接查询
union 连接的是多个select 语句
join 连接查询:
当我们期望的结果不再同一张表上时,我们要需应用join连接查询
语法:
table1 join table2 on table1的某个段字 = table2的某个段字
件条是 商品表中商品的分类id = 分类表中这个分类的id
当查询语句中,多次应用某个表,或者这个表名别特长的时候,我们议建给这个表加添一个别名
mysql> select goods_name,shop_price,cat_name from ecs_goods as g join ecs_catego
ry as c on g.cat_id = c.cat_id where g.shop_price>=1000;
join的分类:
左连接查询 left join:查询的结果是只要边左有的录记,会都表现,边右没有的表现为null
右连接查询 right join
内连接查询 inner join : 查询的结果是两个表都有的数据
务事:
什么是务事?
务事是逻辑上的一组操纵,构成这组操纵的各个元单,要不全都功成要不全都失败,这个性特就是务事
注意:mysql数据支撑务事,但是求要必须是innoDB存储引擎
处理这个题问:
mysql的务事处理这个题问,因为mysql的务事性特,求要这组操纵,要不全都功成,要不全都失败,这样就免避了某个操纵功成某个操纵失败。利于数据的安全
如何应用:
(1)在行执sql语句之前,我们要开启务事 start transaction;
(2)常正行执我们的sql语句
(3)当sql语句行执毕完,存在两种情况:
1,全都功成,我们要将sql语句对数据库成造的影响提交到数据库中,committ
2,某些sql语句失败,我们行执rollback(回滚),将对数据库操纵赶忙撤销
php代码:
开启务事后,只要不行执commit,sql语句不会对实真的数据库成造影响
只有行执commit以后,才会对实真数据库成造影响
触发器:
触发器是数据库的一个程序,他是用来听监着数据表的某个行为,一旦数据表的这个行为产生了,马上行执响应的sql语句
触发器的语法构结:
create trigger 触发器的称名 触发器件事 on 听监的表名 for each row 行为产生后行执的sql语句
触发器件事构成:;两部分构成:
触发器件事产生的间时-----是在听监的表的行为 after before 经常使用的是after
触发器行执的容内:增编削
创立order 表的时候,要需注意,因为order在mysql中是一个关键字 排序,为了免避错误的产生,我们可以加添反引号,明表这不是一个关键字
如何应用触发器:
案例究研:
一旦成生订单,对应的库存表要减去响应的数据
(1)建商品表和订单表
订单表
(2)给订单表定绑触发器,一旦订单表加增订单,马上行执sql语句,将商品库存表减去响应的数据
在现有个题问:
每次下订单后,库存表都是减去响应的数量牢固死的,但是我们的需求是:用户下几个订单,库存表减去几个库存
如在何触发器中应用触发数据?
什么是触发的数据:就是用户在订单表中买购的数量
new 关键字代表新加增的数量,订单表中新下的订单数量
old 关键字代表是旧的录记(从前的录记,取消的订单数量)
new 的应用:
old的应用:
旧的从前的录记,之前买了几个商品,但是又不想要了,取消订单
取消订单后,库存中要加增的响应的数量
update中new 和 old的应用
在现的需求是:
之前买购了5个samsung手机,在现想买10个,要需更新订单表
这个时候,触发器就要需听监着 update这个行为
先将之前下的订单撤销,再从新下订单
触发器是什么?
用来听监数据表的某个行为(insert,delete,update),一旦这个行为产生了,马上行执响应的sql语句
删除触发器:
drop trigger 触发器的称名
3.mysql 引索外键增强
1,引索
什么是引索?
引索------搜索---导引------导引着我去搜索到某个录记的
义定:
没有引索的情况下,我们查询一条录记,要需从第一条录记直一往下查询,晓得找查到我们要需的录记,如果录记数别特大的话,相当于铁树开花,速度别特慢
引索:建一个引索-----向指的是数据的位置-----映反到新华字典-----录记在所的页数
优势:
查询速度快了,但是缺乏:
加增了维护引索的工作量-----每加增一条录记----我就要在引索表列中加增一个引索号向指这条录记的位置
查询速度快了,但是增 删除 更新 速度慢了
扩展一点
数据库中引索保存在哪里?
保存在
引索的分类:
1,主键引索:当我们创立一个表后,指定主键后,动自将主键设置为主键引索
2,通普引索:就是在一个通普的段字上建立引索
3,独一引索:数据表中的某个段字是独一的,没有复重----
4,全文引索:在某个段字上建立全文引索,将录记内的关键字抽取出来,然后对每一个关键字停止引索 sphinx-----可以建立全文引索
创立引索:
(1)create [引索类型] index 引索名 on 表名(表的某个段字上)
(2)alter table 表名 add [引索类型] index (表的段字)
创立引索之前查询的录记数
创立引索以后查询一条录记,经过的录记数
删除引索:
改修引索:
只能是先删除在加增
外键:
什么是外键:
生学举例:
每一个生学对应一张
个人信息表(姓名,学号)
生学详细信息表(绩成,违纪录记,取得励奖,家庭地址,膏火,)
这两个表通过外键联关以后,如果有一天你毕业了,应当将你姓名,学号删除,这个生学上面对应的详细信息(绩成,违纪录记,取得励奖,家庭地址,膏火)动自删除
应用外键的件条:
(1)证保数据表的存储引擎必须是innoDB
(2)外键系关的两个表的列必须数据类型似相 int tinyint int----------varchar
外键义定的语法:
create table tem(id int, name varchar, foreign key(id) references outTable(id) on delete cascade on update cascade )
听监的外键表的行为:delete update
foreign key(id) 指定当前表哪个段字是外键
references 和外部哪个表联关
constrict ‘’; 指定一个称名,(外键联关的称名,为了来将删除这个外键的话,通过这个称名来删除)约束的称名
mysql> create table xiaodi(id int primary key auto_increment,foreign_id int,name
varchar(32),constraint xiaodi_for foreign key(foreign_id) references dage(id) o
n delete cascade on update cascade)engine=innodb default charset=utf8;
(1)应用外键将两个表联关
在当前表创立外键段字------和外部表的某个段字可联关:foreign key(foreign_id) references dage(id)
联关起来以后听监着外部那个表,如果他删除了,我要做什么?如果他更新了,我又要做什么
on delete (参数3个) on update (参数3个)
当前表听监着 外键联关的那个表,听监的行为有两种(delete,update),一旦这些行为产生以后,我(xiaodi)要做哪些操纵
操纵分为3中(经常使用的有3中),cascade:瀑布,示表追随着外键联关的哪个表
restrict 严厉,示表外部联关的那个表删除了,我自己严厉求要自己(不追随化变)
NO ACTION -------- 无动作,没有映反
删除外键:
alter table 表名 drop foreign key 外键称名
重置数据库码密
(1)我们要明白数据库的码密保存在哪里?
mysql数据库 的 user表
要想改修码密,先进入mysql口窗,然后改修user表的password段字
步调:
(1)先闭关mysqld服务器端的进程
(2)再次开启mysqld这个服务,以不带权限验证式形开启(再打开一个口窗,开启mysqld-nt.exe这个进程以后不要闭关口窗)
(3)通过客户端 链接到mysql服务器端,这个时候我们录登的是root用户
(4)赶忙改修码密 注意:要需应用mysql的password()加密函数加密
(5)赶忙把跳过权限验证录登的式形 闭关(结束进程,从新开启服务进程)
4.zendstudio 的安装应用
同如dw notepad 的结合体~
5.svn版本控制器的应用
括包服务器端, 客户端
服务器端在根目录创立repository库放存库文件 如 weibo
在cmd口窗 运行 svnserve -d -r create 路径
在客户端创立文件夹并从相干路径获得便可
改修文件后 应用commit 交托给服务器
更新时应用update 选择响应version停止更新
文章结束给大家分享下程序员的一些笑话语录:
一程序员告老还乡,想安度晚年,于是决定在书法上有所造诣。省略数字……,准备好文房4宝,挥起毛笔在白纸上郑重的写下:Hello World