svn1

1,导出mysql数据库里ecshop到d盘

mysqldump 指令和 mysql指令是一样的

引出一个环境变量:

就是系统找到需要运行的程序的路径

 

Mysqldump -u root -p 数据库名 > 导出的文件名

1,找到mysqldump.exe这个程序,它是用来备份的

2,执行备份命令

E:\wamp\mysql\bin>mysqldump -u root -pecshop > d:/ecshopbak.sql

 

(2)备份数据库中某个数据表

1,找到mysqldump.exe这个程序,它是用来备份的

2,执行备份命令

E:\wamp\mysql\bin>mysqldump -u root -pecshop ecs_goods > d:goodsbak.sql

 

导入外部数据库文件

source 指令是属于mysql的

 

删除数据表

 droptable 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日期函数快

 

 

优化表注意事项:

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 wheregoods_id=9;

having:限制的条件是:前面查询的结果,这个结果有什么条件

 

union查询

union 联合连接

union可以将多个查询语句连接起来,select 1 union  select2

 

(select goods_name from ecs_goods wherecat_id=3 order by shop_price desc limit 3)

union (select goods_name from ecs_goodswhere cat_id=4 order by shop_price asc li

mit 3);

 

//查询手机类型下面的所有的手机品牌

mysql> select cat_name from ecs_categorywhere 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 wherecat_id=(select cat_id from ecs_cat

egory where cat_name = 'GSM手机');

(2)from型子查询

需要注意:

from后面的子查询列表要有自己的别名

select goods_name from(select * fromecs_goods where cat_id in(3,5)) as t

em_goods where goods_name like '诺基亚%';

 

1,连接查询

当我们期望的结果,不能在一个表中获得时,就需要使用连接查询

通常使用join,在两个表中产生关联

语法:

table1 join table2 on table1的某个字段 = table2的某个字段

table1的某个字段需要使用表明.字段名的形式

 

(1)获得如下列表

商品名  商品价格  商品分类名称

mysql> selectgoods_name,shop_price,cat_name from ecs_goods join ecs_category on

 ecs_goods.cat_id = ecs_category.cat_id;

 

(3)注意在处理字段时,如果出现字段名不唯一的情况,我们需要使用表名 来表示当前字段属于哪个表

select goods_name, shop_price, cat_name,cat_id from cz_goods join cz_category on cz_goods.cat_id=cz_category.cat_id;

应该这样:

 

(3)在连接的语句中,由于要频繁的使用表名,当碰到表名很长,或者表名很接近时,容易产生表名错误,为了避免这种错误,我们可以给表起别名

select g.goods_name, g.shop_price,c.cat_name, g.cat_id from cz_goods as g join cz_category as c ong.cat_id=c.cat_id  where g.shop_price>= 1000;

 

 

join的分类:

inner join 将左表和右表同时存在的数据,最终在结果中显示

left join 只要左表存在数据,就会最终在结果中显示

right join 只要右表存在数据,就会最终在结果中显示

事务:

我们在实际处理某个问题的时候,需要多条sql语句在一起才能完成某个操作,这组sql语句的关系是,要不都执行成功,要不都执行失败,这个特性就是事务

定义:

事务是指逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败

有了事务,可以保证数据在业务逻辑上是安全的

一旦我们成功的生成订单,意味着库存量要减少

在转账系统中,需要保证一个人将钱从帐号中移除,另一个人在帐号中增加某些金额

 

使用事务:

mysql本身支持事务,但是与mysql的存储引擎相关,只有innoDB型的存储引擎才支持事务

 

完成转账小例子:

(1)mysql> create table bank(namevarchar(20),money decimal(10,2))engine=innodb;

(2)mysql> insert into bankvalues('zhao',1000),('qian',400);

 

开始转账:

(1)先扣钱

mysql> update bank set money = money-200where name='zhao';

(2)再加钱

mysql> update bank set money = money+200where name = 'qian';

 

但是,如果在执行过程中,某个sql语句出现错误

(1)还是先扣钱

mysql> update bank set money=money-200where name = 'zhao';

(1)再加钱

mysql> update bank set mony= money+200where name = 'qian';

ERROR 1054 (42S22): Unknown column 'mony'in 'field list'

其中,第二条语句的字段名错误导致钱没有增加到 ‘qian’用户当中

整个系统就少了 200

 

 

使用事务解决这个问题:

如果我们发现有执行失败的操作,我们应该将整个过程中所有执行sql语句产生的影响,全部撤销,我们将整个操作称之为回滚

 

使用事务的步骤:

(1)开启事务,应该在这组sql执行之前,开启事务

(2)正常执行我们的sql语句

(3)当sql语句执行完毕后,存在两种可能:

①全部成功,如果全部成功,我们执行的操作叫commit(将以上sql语句对数据库的影响添加到数据库中)

②某些语句执行失败,如果某些sql语句执行失败,我们执行的操作叫rollback,将以上sql语句对数据库的影响撤销

 

如果我们开启了事务,在真个事务执行过程中,是不会对真实的数据库中的数据产生影响的,因此即使成功,也不会影响真实的数据库中的数据,因此我们需要将正确的执行结果,提交到数据库内,对真实的数据产生影响

触发器:

一旦我们成功的提交订单,意味着商品的库存量要减少

触发器(触发程序的定义)

触发器是保存在数据库中的程序,用于监听某个表的行为,一旦这个行为发生,就去执行相应的sql语句

这些行为包括:增加  删除  修改

 

 

例子:一旦我们生成订单,意味着商品的库存量要减少

监听的对象:order 数据表

监听的行为:生成订单(订单增加)

监听后的操作:修改goods表中的某条记录(update)

 

定义触发器的语法:

createtrigger 触发器名 触发器事件 ON 监听的表名 for each row 要执行的操作(sql语句)

触发器事件:

事件的组成:事件发生的时间,事件的内容

触发器发生的时间:before 还是after,某个行为发生之前还是之后,常用的是after

事件的内容:增加,删除,修改

for eachrow    监听每一行       必须写

 

(1)创建商品表:

mysql> insert into goodsvalues(3,'nokiaN85',3500,35),(5,'iphone4S',5000,30),(7,

'Lumia',4500,20);

 

(3)创建订单表:

模拟生成订单后,在order表中增加记录的操作

如何在触发程序中,使用触发的数据?

上面是写死的,我购买的是3号商品,购买了5个,那么商品表中3号商品就应该减去5个

old关键字----- 代表的是过去的记录(被删除掉的记录,更新前的记录)

new关键字---------代表新的记录(新增加的记录,或者更新后的记录)

触发程序所监听表的某个记录,不管是new还是old都是代表记录的

既然是记录,都有对应的字段

old的使用:

如果我们需要撤销订单的话,意味着将order表中的某条记录删除,此时意味着要将订单表中所关联的商品库存,再加回去

撤销订单时,会将订单表中购买的数量加回去,恢复goods表中的库存

在update更新语句中,可以使用new和old

我们在修改订单order信息时,需要先讲购买数量撤销,再增加新的购买数量

那么商品表中,先加上撤销的数量,再减去重新购买的数量

删除触发器:

drop trigger 触发器名

一个表的一个事件,只存在一个触发器

索引

什么是索引?

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

定义:

没有索引的情况下,我们查询一条记录,需要从第一条记录一直往下查询,知道查找到我们需要的记录,如果记录数特别大的话,相当于大海捞针,速度特别慢

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

 

优势:

查询速度快了,但是不足:

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

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

外键:

什么是外键:

学生举例:

每个学生对应一张

个人信息表(姓名,学号)

学生详细信息表(成绩,违纪记录,获得奖励,家庭地址,学费,)

这两个表通过外键关联之后,如果有一天你毕业了,应该将你姓名,学号删除,这个学生下面对应的详细信息(成绩,违纪记录,获得奖励,家庭地址,学费)自动删除

 

使用外键的条件:

(4)保证数据表的存储引擎必须是innoDB

(5)外键关系的两个表的列必须数据类型相似  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 intprimary key auto_increment,foreign_id int,name

 varchar(32),constraint xiaodi_for foreignkey(foreign_id) references dage(id) o

n delete cascade on updatecascade)engine=innodb default charset=utf8;

 

(4)使用外键将两个表关联

在当前表创建外键字段------和外部表的某个字段可关联:foreignkey(foreign_id)  references dage(id)

关联起来之后监听着外部那个表,如果他删除了,我要做什么?如果他更新了,我又要做什么

on delete (参数3个)   on update  (参数3个)

 

 

删除外键:

alter table 表名 drop foreign key 外键名称

 

 

1,安装服务器端的软件 

傻瓜式安装,但是需要注意:

(4)安装软件----安装路径不要尽量不要有中文,不要有特殊字符,不要有空格

(5)安装svn服务器的时候,区分开仓库和服务器,单独创建一个server目录

 

安装完成之后,如何测试是否安装成功:

打开cmd窗口,运行svn测试

 

开始使用svn:

需求:

两个程序员,小白(项目经理)和小黑(程序员),一起开发一个微博项目.

       让小白在服务器创建一个仓库,一定是先创建一个仓库,然后把最原始的项目源码提交到仓库去,让小黑下载(checkout)一份源码并进行开发

 

初始化仓库、

(1)通过指令创建 svnadmin create 仓库路经

(2)(2)可视化工具创建(svn客户端创建)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值