데이터 베이스 MySQL 튜토리얼 mysql数据库总结复习_MySQL

mysql数据库总结复习_MySQL

Jun 01, 2016 pm 01:35 PM
ecshop 제어 장치 데이터 베이스 방아쇠

bitsCN.com

mysql数据库总结复习

 

1.mysql数据库复习加强  

2.mysql事务触发器  

3.mysql 索引外键加强 

4.zendstudio 的安装使用 

5.svn版本控制器的使用

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 =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=2;

select avg(score),name from score where name in(select name from score where score =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进行更新

bitsCN.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Go 언어는 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업을 어떻게 구현합니까? Go 언어는 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업을 어떻게 구현합니까? Mar 27, 2024 pm 09:39 PM

Go 언어는 효율적이고 간결하며 배우기 쉬운 프로그래밍 언어입니다. 동시 프로그래밍과 네트워크 프로그래밍의 장점 때문에 개발자들이 선호합니다. 실제 개발에서 데이터베이스 작업은 필수적인 부분입니다. 이 기사에서는 Go 언어를 사용하여 데이터베이스 추가, 삭제, 수정 및 쿼리 작업을 구현하는 방법을 소개합니다. Go 언어에서는 일반적으로 사용되는 SQL 패키지, Gorm 등과 같은 타사 라이브러리를 사용하여 데이터베이스를 운영합니다. 여기서는 sql 패키지를 예로 들어 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업을 구현하는 방법을 소개합니다. MySQL 데이터베이스를 사용하고 있다고 가정합니다.

Hibernate는 어떻게 다형성 매핑을 구현합니까? Hibernate는 어떻게 다형성 매핑을 구현합니까? Apr 17, 2024 pm 12:09 PM

Hibernate 다형성 매핑은 상속된 클래스를 데이터베이스에 매핑할 수 있으며 다음 매핑 유형을 제공합니다. Join-subclass: 상위 클래스의 모든 열을 포함하여 하위 클래스에 대한 별도의 테이블을 생성합니다. 클래스별 테이블: 하위 클래스별 열만 포함하는 하위 클래스에 대한 별도의 테이블을 만듭니다. Union-subclass: Joined-subclass와 유사하지만 상위 클래스 테이블이 모든 하위 클래스 열을 통합합니다.

iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다. iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다. Jul 18, 2024 am 05:48 AM

Apple의 최신 iOS18, iPadOS18 및 macOS Sequoia 시스템 릴리스에는 사진 애플리케이션에 중요한 기능이 추가되었습니다. 이 기능은 사용자가 다양한 이유로 손실되거나 손상된 사진과 비디오를 쉽게 복구할 수 있도록 설계되었습니다. 새로운 기능에는 사진 앱의 도구 섹션에 '복구됨'이라는 앨범이 도입되었습니다. 이 앨범은 사용자가 기기에 사진 라이브러리에 포함되지 않은 사진이나 비디오를 가지고 있을 때 자동으로 나타납니다. "복구된" 앨범의 출현은 데이터베이스 손상으로 인해 손실된 사진과 비디오, 사진 라이브러리에 올바르게 저장되지 않은 카메라 응용 프로그램 또는 사진 라이브러리를 관리하는 타사 응용 프로그램에 대한 솔루션을 제공합니다. 사용자는 몇 가지 간단한 단계만 거치면 됩니다.

PHP에서 MySQLi를 사용하여 데이터베이스 연결을 설정하는 방법에 대한 자세한 튜토리얼 PHP에서 MySQLi를 사용하여 데이터베이스 연결을 설정하는 방법에 대한 자세한 튜토리얼 Jun 04, 2024 pm 01:42 PM

MySQLi를 사용하여 PHP에서 데이터베이스 연결을 설정하는 방법: MySQLi 확장 포함(require_once) 연결 함수 생성(functionconnect_to_db) 연결 함수 호출($conn=connect_to_db()) 쿼리 실행($result=$conn->query()) 닫기 연결( $conn->close())

PHP에서 데이터베이스 연결 오류를 처리하는 방법 PHP에서 데이터베이스 연결 오류를 처리하는 방법 Jun 05, 2024 pm 02:16 PM

PHP에서 데이터베이스 연결 오류를 처리하려면 다음 단계를 사용할 수 있습니다. mysqli_connect_errno()를 사용하여 오류 코드를 얻습니다. 오류 메시지를 얻으려면 mysqli_connect_error()를 사용하십시오. 이러한 오류 메시지를 캡처하고 기록하면 데이터베이스 연결 문제를 쉽게 식별하고 해결할 수 있어 애플리케이션이 원활하게 실행될 수 있습니다.

HTML이 데이터베이스를 읽는 방법에 대한 심층 분석 HTML이 데이터베이스를 읽는 방법에 대한 심층 분석 Apr 09, 2024 pm 12:36 PM

HTML은 데이터베이스를 직접 읽을 수 없지만 JavaScript 및 AJAX를 통해 읽을 수 있습니다. 단계에는 데이터베이스 연결 설정, 쿼리 보내기, 응답 처리 및 페이지 업데이트가 포함됩니다. 이 기사에서는 JavaScript, AJAX 및 PHP를 사용하여 MySQL 데이터베이스에서 데이터를 읽는 실제 예제를 제공하고 쿼리 결과를 HTML 페이지에 동적으로 표시하는 방법을 보여줍니다. 이 예제에서는 XMLHttpRequest를 사용하여 데이터베이스 연결을 설정하고 쿼리를 보내고 응답을 처리함으로써 페이지 요소에 데이터를 채우고 데이터베이스를 읽는 HTML 기능을 실현합니다.

PHP를 사용하여 데이터베이스에서 중국어 왜곡 문자를 처리하기 위한 팁과 사례 PHP를 사용하여 데이터베이스에서 중국어 왜곡 문자를 처리하기 위한 팁과 사례 Mar 27, 2024 pm 05:21 PM

PHP는 웹사이트 개발에 널리 사용되는 백엔드 프로그래밍 언어로, 강력한 데이터베이스 운영 기능을 갖추고 있으며 MySQL과 같은 데이터베이스와 상호 작용하는 데 자주 사용됩니다. 그러나 한자 인코딩의 복잡성으로 인해 데이터베이스에서 잘못된 한자를 처리할 때 문제가 자주 발생합니다. 이 기사에서는 잘못된 문자의 일반적인 원인, 솔루션 및 특정 코드 예제를 포함하여 데이터베이스에서 중국어 잘못된 문자를 처리하기 위한 PHP의 기술과 사례를 소개합니다. 문자가 왜곡되는 일반적인 이유는 잘못된 데이터베이스 문자 집합 설정 때문입니다. 데이터베이스를 생성할 때 utf8 또는 u와 같은 올바른 문자 집합을 선택해야 합니다.

Golang을 사용하여 원격 데이터베이스에 연결하는 방법은 무엇입니까? Golang을 사용하여 원격 데이터베이스에 연결하는 방법은 무엇입니까? Jun 01, 2024 pm 08:31 PM

Go 표준 라이브러리 데이터베이스/sql 패키지를 통해 MySQL, PostgreSQL 또는 SQLite와 같은 원격 데이터베이스에 연결할 수 있습니다. 데이터베이스 연결 정보가 포함된 연결 문자열을 생성합니다. sql.Open() 함수를 사용하여 데이터베이스 연결을 엽니다. SQL 쿼리 및 삽입 작업과 같은 데이터베이스 작업을 수행합니다. 리소스를 해제하기 위해 defer를 사용하여 데이터베이스 연결을 닫습니다.

See all articles