基本概念
数据库
database
什么是数据库:存放数据的仓库,用途就是存放,(永久存放)
Word也是永久存放数据的地方,那么word是数据库吗?
Word 文档文件—-从定义上说,word就是数据库,为什么?
其实数据库的本质就是文件
数据库发展史
层次型
什么是层次型数据库?
把数据分层,分类来存储好处,把数据归类了,层次分明
像一个倒立的树
现在你要找一个学生,那么必须从学校开始找 学校—-班级—-学生或学校—-教师—学生
出现了一个导航问题找C必须通过A再B
出现了重复数据
网状型
好处:解决了数据的重复
坏处:但是导航问题没有根本的解决
关系型
什么是关系型数据库
其实就是有关系的二维表
数据表
关系型数据库中的二维表就是数据表,是二维的另外一个名字
记录
数据表中一行就是一条记录
字段
数据表中一列就是一个字段
数据
一行和一列交差的地方就是数据
数据库管理系统(软件)
Managerment database system
平时说的MySQL数据库这个定义不对 其实MySQL是管理数据库的,是一个数据库管理系统
常见的一些数据库管理系统有如下几个;
Oracle mysql sqlserver sqllite db2 access
如上的一些数据库管理系统都有一个特点—–都是管理关系型数据库的
用途:数据库管理系统就是用来管理数据库的
SQL
Sql就是数据库管理系统管理数据库的一种命令
这里数据库管理系统可以不同但是sql命令确是可以共用的,说白了,SQL就是一种专门管理数据库的一种语言
数据库服务器(硬件)
数据库服务器:就是提供数据库服务的一个计算机,安装了数据库管理系统
数据库系统
数据库系统=数据库管理员+数据库管理系统+数据库
今日数据库操作步骤
- 数据库操作顺序
- 第一步:打开数据库服务
- 第二步:连接数据库
-
第三步:数据库的‘库操作’
-
- 对数据库的增删改查
-
- 第四步:进入数据库
- 第五步:表操作(增加,删除,修改)
数据库服务
启动数据库服务
第一种
右键计算机—管理—服务—MySQL数据库
第二种
Cmd 命令行方式启动
注意:配置path,net start mysql后没有分号;
关闭数据库服务
语法: net stop mysql
MySQL客户端
Windows命令窗口cmd
连接数据库
语法: mysql -h主机名 -P端口号 -u用户名 -p密码
- -h主机名,默认是localhost(127.0.0.1) ,如果是默认可以不填写
- -P端口号,默认是3306,如果是默认的可以不填写
- -u用户名
- -p密码
优化
退出数据库
\q
Exit
Quit
Windows界面客户端
Navicate (强烈不推荐使用)
Web界面(PHPadmin)
配置web站
解压放置到你的虚拟站点位置
配置虚拟主机
修改host
重启Apache访问站点
我的错误:配置路径的时候多了一个s
连接数据库
登录完成后的效果:
数据库操作
创建数据库
语法:create database 数据库名字;
注意;数据库命名有如下的规则
数据库名字是由字母,数字,下划线组成
数据库名字不能是纯数字
数据库名字不能是数据库的关键字
如果数据库名字是一个数据库关键字,那么用“(反引号)引起来
扩展;创建数据库的时候指定字符集
语法:create database 数据库名字 charset 字符集;
删除数据库
语法: drop database 数据库名字;
修改数据库
修改数据库的名字
这里没有直接修改数据库名字的语法,只能先删除数据库,再重建
修改数据库的字符集
- alter database 数据库名字 charset 新字符集
- alter database 数据库名字 charset = 新字符集
- alter database 数据库名字 default character set 新字符集名字
查看数据库
语法:show databases;
注意:系统数据库不要随意操作
查看数据库创建语句
语法:show create database 数据库名;
数据库保存目录
默认保存路径可以在my.ini中修改
表操作
创建数据表
Create table 表名
(
字段名 类型 [字段属性],
字段名 类型 [字段属性],
字段名 类型 [字段属性] — 最后一个字段后边不加逗号,
)[表属性]
创建表:只是创建了一个表的结构,而没有数据;
字段类型(介绍)
- 整形 tinyint smallint mediumint int bigint
- 小数 float double decimal
- 字符串 char varchar text set enum blob
- 时间 time date datetime timestamp
字段属性(介绍)
什么是字段属性:字段属性就是对字段的一种约束
- Not null/null 允许为不为空/空
- Primary key 主键
- Unque key 唯一建
- Comment 说明
- Atuo_increment 自动增长
表属性(介绍)
- Charset 表字符集
- Auto_increment 自动增长
- Collate 校对集
- Comment 说明
- Engine 数据表引擎
案例:创建一个简单表
第一步:数据表创建,是创建到数据库中的,所以呢创建数据表之前应该选定创建到哪个数据库
选择数据库语法: use 数据库名字;
第二步:创建表
英雄技能表案例:
查看数据表
查看当前数据库有哪些数据表(所有的表查看)
语法:show tables;
删除数据表
语法: drop table 表名;
扩展,一次删除多张数据表 drop table 表1,表2…..;
查看表结构
查看表的结构: desc 表名;
查看表创建语法
查看数据表的创建语句
语法; show create table 表名;、
数据简单操作
增加
提前准备:
删除老的hero表,创建新的hero表
执行命令 set names gbk 避免乱码错误
语法: insert [into] 表名 [(插入的字段列表)] values (字段值1,字段值2,字段值3……)
注意:后边的值和前边的字段列表的顺序一定要对应
- 错误案例:
- 正确案例:
- 扩展:省略字段列表插入表数据
表创建的顺序如下
扩展:Select 语句复制表
修改
语法形式如下:
Update 表名 set 字段名 =字段值 where修改条件
- 修改大头的英雄伤害
结果
注意:修改表数据的时候一般都要指定修改的条件,如果修改不指定条件的话会把整张表的数据都修改
- 数据多字段的修改
语法:update 表名 set 字段名=值1 ,字段名=字段值…. Where 修改条件
查找
- 语法:select * from 表名
说明:*代表所有的字段
- 我们还可已选择查看哪些字段的信息
语法: select 字段1,字段2,字段3,字段4…… from 表名;
- 查看技能伤害大于50的英雄信息
语法如下:select 字段列表 from 表名 where 条件
删除
语法:delete from 表名 where 删除的条件;
删除前数据
删除成功
删除后数据
注意;这里删除一般都需要制定删除的条件,如果不指定删除的条件那么整张表的数据都会被删除
- 没有条件的删除
删除前
表属性
表属性就是用来约束表的,限定一些东西
字符集(乱码的解决)
常见的字符集有:utf8 gbk latin1 gb2312
什么是字符集?
字符集就是字符和字符编码的对应关系
什么是字符?
像 a,b,A,V,1中文 等都是字符
什么是字符编码?
比如 ‘a’这个字符在计算机中是以什么形式存的
‘a’在计算机中是以二进制存储的,那么这个二进制的码值就是‘a’的字符编码
‘a’——-10110101 10110101就是a的字符编码
‘b’——-10110110 10110110就是b的字符编码
插入中文数据,插入失败
错误原因
错误解决
插入数据插入成功
查看数据
错误原因
错误解决
再次查看数据
校对集
什么是校对集:校对集就是字符集中的一种比较规则,主要用于排序
Show collation;查看所有的校对集
show collation like ‘utf8_%’;查看utf8的校对集
utf8的两种校对集使用
utf8_general_ci 不区分大小写 (a B c)
utf8_bin 二进制排序 (B a c)
B—-66
a—-97
c—-99
案例:
创建两张表
插入数据
insert into test1 values(‘a’);
insert into test1 values(‘B’);
insert into test1 values(‘c’);
insert into test2 values(‘a’);
insert into test2 values(‘B’);
insert into test2 values(‘c’);
排序查看
数据库引擎
什么是数据库引擎:就是数据库保存表数据的一种方式
常用的数据库引擎有 innodb myisam
默认的数据库引擎是innodb
默认的数据库引擎可以在配置文件中配置
数据库引擎的支持