数据库系统
DataBase System = 数据库管理系统(DBMS,DataBase Management System) + 数据库(DataBase) + 管理员
DBS = DBMS + DB
定义:对大量信息进行管理的高效解决方案,按照数据结构来组织、存储和管理数据的库
关系型数据库系统
建立在关系模型上的数据库系统。
关系模型:
当将日常生活中的实体(学生),和实体的属性(学生的学号,姓名)保存到数据中时,应该如何处理该实体结构。
1,数据结构可以规定,同类数据,结构一致。就是一个二维的表格。
2,数据之间的关系可以设置。实体之间的联系。
Nosql
Not only sql
非关系型数据库系统
mongoDB,MemBase
对象型数据库
关系型数据库的典型概念:
数据库databse:数据的仓库。
表table:数据是保存在表内,保存在一个表内的数据,应该具有相同的数据格式。
行&列:行用于记录数据,列用于规定数据格式。
记录:行内的数据
字段:数据的某个列。
SQL:数据库管理系统,用来管理数据的语言。结构化查询语言(SQL,Structured Query Language)。
MySQL
数据库(管理+数据) + 谁能向数据库系统发出如何管理的命令。
MySQL是基于C/S架构的。客户端/服务器 Client/SERVER
安装
2013年4月15日星期一
08:57
下载最新的相应的mysql版本。
安装 + 配置。
选择自定义
安装的组件信息:
服务器软件目录:
数据目录:
点击install安装即可:
配置:
机器类型
是否支持事务功能:
innodb表空间:
连接数量:
字符集设定:
配置windows管理相关:
配置安全选项:
最后执行配置即可:
配置后,会启动服务。
提示,如果出现配置失败,很大的可能性由于 存在Mysql服务。不能安装服务成功。
典型的可以将已有的卸载,再重新安装即可。
使用
2013年4月15日星期一
11:44
|
|
|
|
|
|
|
|
|
|
mysql的执行目录 |
|
|
|
|
管理MySQL服务器端程序
1,通过windows提供的服务管理完成
打开服务:
命令行形式管理windows的Mysql服务:
Net start 服务名
Net stop 服务名
2,直接使用mysqld来运行服务
图例
2013年4月15日星期一
12:03
客户端/服务端 交互流程
已使用 Microsoft OneNote 2010 创建
一个用于存放所有笔记和信息的位置
库操作
|
|
|
|
|
|
|
|
|
2013年4月15日星期一 10:16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
TIP:语句 要求使用语句结束符 ; 来结束。
|
|
|
|
|
|
创建数据库: Create database db_name [数据库选项]; 标识符(数据库名)命名规则: 大小写取决于当前操作系统。(认为是区分的) 见名知意。推荐使用下划线方式。 标识符的字符: 使用任意字符,数字,符号,甚至是中文。但是一些特殊的组合,例如纯数字组合,特殊符号,包括mysql是内部关键字 应该使用标识符 限定符来包裹。 限定符: 反引号。 中文可以:但是要求客户端编码
|
|
|
|||
|
|
|
|
|||
|
|
|
||||
|
|
|
|
|
|
|
|
|
在mysql的数据目录,形成一个目录,目录名是数据库名。 如果是特殊字符,则使用编码的形式保存
目录内,存在一个文件,用于保存 数据库的选项信息。Db.opt |
|
|
|
|
|
|
|
|
|
数据查询
查看当前存在的数据库:
Show databases;
注意 ,并不是只有 用户可以创建数据库,mysql内部维护自己数据库。
查看数据的创建语句:
Show create database db_name;
数据库删除:
Drop database db_name;
修改数据库信息
Alter database db_name [修改指令]
指令:数据库属性的修改。
修改名字:
简单的可以直接修改目录名
将数据库内容全部导出,新建一个数据库,将内容导入,删除旧数据库。
创建一个新数据库,将旧数据库内的表,都移动(重命名)到新数据库内,删除旧数据库。
表操作
2013年4月15日星期一
10:17
确定表的所属数据库
数据库是表的容器,
表,必须属于某个数据库。
可以通过 . 语法,指明 数据表所属的数据库
库.表 database.table 如果任何的标识符,出现的特殊字符,需要使用反引号包裹。不同的标识符,分别包裹:
进行表操作时,都会指定当前的默认数据库:
Use db_name;只是设定了默认数据库,不会影响操作其他数据库
注意:选择了默认的数据库,只会影响默认行为。可以操作任意的数据库。
表名前缀
为了区分相同逻辑表名的不同应用,给逻辑表名,增加前缀,形成真实表名。
TIP:
可以使用\ G 作为语句结束符。
查看表结构(描述表结构):
Describe tbl_name;
简写 是 desc tbl_name;
数据库对应的目录,
显然,数据库内容对应的就应该是 目录的内容,文件。
删除表:
drop table [if exists] tbl_name;
表不存在,不能删除,会报告错误。
适用于 database : drop database if exists db_name;
修改表:
修改表名
Rename table old_tbl_name to new_tbl_name;
支持同时修改多个表。
支持,跨数据库重命名。
可以利用 跨数据库重名名表,可以为数据库重命名。
创建一个新的数据库,旧数据库内的表,都rename到新的数据库内。删除旧的数据库。
修改列定义
修改表结构,上面的是子命令,上级是, alter table tbl_name [add|drop|change|modify]
增加一个新列
Add 新列的定义
删除一个列
Drop 列名
修改一个列的定义
Modify 列定义
重命名一个列
Change old_column 新列定义
修改表选项
Alter table tbl_name 新的表选项。
|
|
|
|
|
|
数据操作 |
|
|
|
|
|
Crud Create,read(retrieve),update,delete |
||
|
|
|
|
|
|
2013年4月15日星期一 10:17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
创建数据(插入数据) |
|
获得数据(查询数据) |
|
删除数据 |
|
修改数据 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
获得数据 Select 字段列表 from 表名 查询条件。 字段列表,可以使用 *代替,表示所有的字段。 查询条件可以省略,表示所有的记录都获得。相当于where 1; 有条件的: |
|
|
|
|
||
|
|
|
|
||||
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
删除数据 Delete from 表名 条件。 删除 需要在逻辑上严格给条件,否则 容易造成数据误操作。导致损失。 语法上可以没有where 可以:如果需要删除所有数据,使用where 1; |
|
|
|
|
|
|
|
|
|
|
修改数据 Update 表名 set 字段=新值, … 条件。 |
|
|
|
|
|
|
|
|
|
SQL
2013年4月15日星期一
14:04
结构化查询语言,Structured Query Language
分类:
针对的操作对象不同,分成不同的语言:
1,数据操作(管理)语言。DML
查询,获得数据。DQL
管理,增加,删除,修改数据。DML
2,数据定义语言(对保存数据的格式进行定义)DDL
3,数据库控制语言(针对数据库软件服务进行操作)DCL
字符集
2013年4月15日星期一
17:14
字符的集合
构成部分:
字符的集合,展示
字符的编码,保存和处理
|
|
|
|
|
|
|
|
|
|
|
Mysql支持的常见字符集: 通过命令: Show character set; 可以看到支持了好多!! |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
字符集决定的是 字段的数据,是何种形式保存的 |
|
|
|
|
|
|
|
|
|
如果通过客户端操作服务器,那么客户端与服务器之间进行数据通信,要保证编码一致。可以将互相发送的数据,转换成 目标可以接收的编码。
通过mysql的配置:
Character_set_client 客户端发送数据编码
Character_set_results客户端接收数据的编码
通过 指令 show variables like 'character_set_%';
设置变量:
Set 变量名=值
Set character_set_client = gbk;
告知服务器,客户端发送的数据是gbk编码
执行 没有返回数据的语句没有问题了。
如果需要从服务器返回数据,还需要设置服务器发送给客户端的编码
Set character_set_results = gbk;
服务器在发送数据时,才能转成客户端认识的编码
统一的操作可以用 set names gbk可以完成。(简单项目通用的做法)
其实还有一个有影响:连接层编码。
Set character_set_connection = gbk;
Set names 可以设置上面的三个。
典型的情况,setnames即可。如果情况复杂,需要分开设置。
转换的过程
Client->connection->[服务器内部编码]->result
|
|
|
|
|
|
图例 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013年4月15日星期一 14:06 |
|
||
|
|
|
|