宋体查询1.mysql数据库复习加强 2.mysql事务触发器 3.mysql 索引外键加强 4.zendstudio 的安装使用 5.svn版本控制器的使用-java教程

上班之余抽点间时出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家起一学习一下宋体查询

     

    1.mysql数据库温习增强  

    1,导出mysql数据库里ecshopd

    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, varchartextenum(枚举类型)

    但是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段字,联关起来了

    2ecs_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查询语句 就称之为子查询

    1select型子查询

    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代码:

    开启务事后,只要不行执commitsql语句不会对实真的数据库成造影响

    只有行执commit以后,才会对实真数据库成造影响

    触发器:

    触发器是数据库的一个程序,他是用来听监着数据表的某个行为,一旦数据表的这个行为产生了,马上行执响应的sql语句

    触发器的语法构结:

    create trigger 触发器的称名 触发器件事 on 听监的表名 for each row 行为产生后行执的sql语句

    触发器件事构成:;两部分构成:

    触发器件事产生的间时-----是在听监的表的行为 after  before  经常使用的是after

    触发器行执的容内:增编削

    创立order 表的时候,要需注意,因为ordermysql中是一个关键字 排序,为了免避错误的产生,我们可以加添反引号,明表这不是一个关键字

    如何应用触发器:

    案例究研:

    一旦成生订单,对应的库存表要减去响应的数据

    (1)建商品表和订单表

    订单表

    (2)给订单表定绑触发器,一旦订单表加增订单,马上行执sql语句,将商品库存表减去响应的数据

    在现有个题问:

    每次下订单后,库存表都是减去响应的数量牢固死的,但是我们的需求是:用户下几个订单,库存表减去几个库存

    如在何触发器中应用触发数据?

    什么是触发的数据:就是用户在订单表中买购的数量

    new 关键字代表新加增的数量,订单表中新下的订单数量

    old 关键字代表是旧的录记(从前的录记,取消的订单数量)

    new 的应用:

    old的应用:

    旧的从前的录记,之前买了几个商品,但是又不想要了,取消订单

    取消订单后,库存中要加增的响应的数量

    updatenew 和 old的应用

    在现的需求是:

    之前买购了5samsung手机,在现想买10个,要需更新订单表

    这个时候,触发器就要需听监着 update这个行为

    先将之前下的订单撤销,再从新下订单

    触发器是什么?

    用来听监数据表的某个行为(insertdeleteupdate),一旦这个行为产生了,马上行执响应的sql语句

    删除触发器:

    drop trigger 触发器的称名

    3.mysql 引索外键增强  

    1,引索

    什么是引索?

    引索------搜索---导引------导引着我去搜索到某个录记的

    义定:

    没有引索的情况下,我们查询一条录记,要需从第一条录记直一往下查询,晓得找查到我们要需的录记,如果录记数别特大的话,相当于铁树开花,速度别特慢

    引索:建一个引索-----向指的是数据的位置-----映反到新华字典-----录记在所的页数

    优势:

    查询速度快了,但是缺乏:

    加增了维护引索的工作量-----每加增一条录记----我就要在引索表列中加增一个引索号向指这条录记的位置

    查询速度快了,但是增  删除  更新  速度慢了

    扩展一点

    数据库中引索保存在哪里?

    保存在

    引索的分类:

    1,主键引索:当我们创立一个表后,指定主键后,动自将主键设置为主键引索

    2,通普引索:就是在一个通普的段字上建立引索

    3,独一引索:数据表中的某个段字是独一的,没有复重----

    4,全文引索:在某个段字上建立全文引索,将录记内的关键字抽取出来,然后对每一个关键字停止引索    sphinx-----可以建立全文引索

    创立引索:

    1create [引索类型] index 引索名 on 表名(表的某个段字上)

    2alter 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个)

    当前表听监着 外键联关的那个表,听监的行为有两种(deleteupdate,一旦这些行为产生以后,我(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)赶忙改修码密  注意:要需应用mysqlpassword()加密函数加密

    (5)赶忙把跳过权限验证录登的式形 闭关(结束进程,从新开启服务进程)

    4.zendstudio 的安装应用 

    同如dw notepad 的结合体~

    5.svn版本控制器的应用

    括包服务器端, 客户端

    服务器端在根目录创立repository库放存库文件 如 weibo 

    cmd口窗 运行 svnserve -d -r create 路径

    在客户端创立文件夹并从相干路径获得便可

    改修文件后 应用commit 交托给服务器

    更新时应用update 选择响应version停止更新

文章结束给大家分享下程序员的一些笑话语录: 一程序员告老还乡,想安度晚年,于是决定在书法上有所造诣。省略数字……,准备好文房4宝,挥起毛笔在白纸上郑重的写下:Hello World

posted @ 2013-04-24 13:29  坚固66  阅读(199)  评论(0编辑  收藏  举报