mysql学习之路_基础知识
Mysql
php阶段将数据库分为三个阶
基础阶段:
mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储过程等),PHP操作没有sql数据库。
优化阶段:
如何提高数据库效率,如索引,分表等。
部署阶段:
如何搭建真实的系统环境,如服务集群,负载均衡。
数据库基础
什么是数据库:
数据库:database ,存储数据的仓库(高效的存储和处理数据库的介质如磁盘、内存)
数据库分类:
1,关系型数据库:(sql型)
2,非关系型数据库(nomysql型)not only
不同数据卡产品:
关系型数据库:大型:Oracle ,DB2
中型:SQLserver,Mysql
小型:access
非关系型数据库:mencahed,moogodb,redis2
数据库的区别->两种阵营
关系型database:安全(保存在磁盘,不会丢失),浪费空间。
非关系型数据库:效率高(不够安全)
关系型数据库:
1,什么是关系型数据库:
建立在关系模型上的数据库(数学模式)
关系模型:建立在关系上的模型,三个方面。
1,数据结构:数据存储问题,二维表的行列结构
2,Sql指令集合:sql语句。
3,完整性约束:表内数据约束,表与表之间的约束。
2,关系型数据库的设计:
关系型数据库:从需要存储的数据需求分析,如果是一类数据(实体)->设计成二维表->表头(字段名field)和数据部分(实际存储单元);
二维表:行与列,
例:
|
表头 |
字段1 |
字段2 |
字段3 |
|
数据单元 |
数据1 |
数据2 |
数据3 |
实际案例:教师负责讲学,教学生,在教室。
1,找出实体。教师表,学生表,教室表。
2,找出实体数据信息: (教师)姓名,性别,年龄,工资
(学生)姓名,性别,年龄,学号
(班级)班级编号,教室号
3,关系型数据库:维护实体内部、实体与实体之间的联系。
1,实体内部的联系:每个学生都有姓名、性别、学科、学号。
学生表
|
姓名 |
性别 |
学号 |
学科 |
班名 |
|
张三 |
男 |
001 |
软件工程 |
软件工程001 |
|
小强 |
女 |
001 |
机械工程 |
机械工程001 |
第二行所有字段:都是在描述张三这个学生(内部联系)第二列只能是性别(内部约束)。
关系型数据库特点之一:如果表对应的某个字段没有值(数据),但是系统依然要分配存储空间;关系型数据库比较浪费空间。
实体与实体之间的联系:每个学生肯定属于某个班级,每个班级肯定有多个学生。
|
班名 |
教室编号 |
|
软件工程001 |
001 |
|
机械工程001 |
002 |
班级实体与学生实体之间的联系:实体与实体之间的联系
3,关键字说明:
数据库:database
数据库系统:DBS (database system):虚拟系统,将多种内容关联起来的称呼
DBS=DBMS+DB
DBMS:database mangerment system数据库管理系统,专门管理数据库。
DBA:database Administrator 数据库管理员。
行/记录:row/record本质是一个东西->表中的一个记录,行是从结构角度出发,记录从数据角度出发。
列/字段 column/filed,本质是一个东西。
SQL:
Structured Query language(结构化查询语言)数据库以查询为主,98%都是查询操作。
SQL分为三个部分:
DDL:data Definition Language 数据定义语言-->用来维护存储数据的结构(数据库,表)
代表指令:create ,drop ,alter
DML:data manipulation Language 数据库操作语言-->用来对数据进行操作(数据表中的内容)
代表指令:insert delete updata等其中DML内部又进行分类:DQL(database Query Language)数据查询语言,如select。
DCL:data contral Language 数据控制语言-->主要负责权限的管理(用户)
代表指令:grant ,revoke等。
SQL简介:
Sql是关系型数据库的操作指令
Sql是一种约束,但不强制(类似玩w3c组织)如Oracle,mysql内部有细微的区别。
Mysql:
Mysql数据库是一种c/s结构,客户端/服务端若想要访问服务器必须通过客户端(服务器一直运行,客户端在需要的时候运行),
交互方式
1,客户端连接认证:连接服务器认证身份
2,发送sql指令
3,服务器接受服务器指令,处理sql指令返回操作结果。
4,客户端接受操作结果,显示结果。
5,断开连接(释放资源,服务器并发限制)。
Mysql服务器对象
没有办法完全理解服务器内部的内容:
只能粗略的分析数据库服务器内部结构
将mysql数据库分为四层:
系统(DBMS)->数据库(BD)->数据表(table)->字段(filed)
SQL基本操作:
基本操作:CRUD
将sql的基本操作根据对象分为三类
1,库操作2,表操作3,数据操作
库操作:
数据库的增删改查。
新增数据库:create database 库名 [库选项]
库选项:约束数据库,分为两个选项。
字符集的设定:charset /character set +具体字符集(数据存储的编码格式,一般两种格式GBK和utf8)
校对集设定:collate +具体校对集(数据库比较规则)
-- 双中下划线注释(单行注释,也可以用#)
其中数据库不能用关键字(已经被使用的字符或保留字(将来可能会用到))。
mysql学习之路_基础知识的更多相关文章
- mysql学习之路_事物_存储过程_备份
数据备份与还原 备份:将当前已有的数据保留. 还原:将已经保留的数据恢复到对应表中 为什么要做数据备份 1,防止数据丢失,被盗,误操作 2,保护数据记录 数据备份还原方式有多种:数据表备份 单表数据备 ...
- mysql学习之路_高级数据操作
关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...
- mysql学习之路_字段类型与属性
回顾 数据库基本知识:关系型数据库与非关系型数据库 关系型数据库:安全(磁盘) 非关系型数据库:高效(内存) 关系型数据库:建立在关系模型上的数据库, 数据结构:二维表(浪费空间) 数据库操作指令:s ...
- MySQL学习笔记01_数据库基础知识
01_1 mysql数据库启动与停止 以<管理员权限>启动cmd: 输入net stop mysql停止mysql服务: 输入net start mysql启动mysql服务: 输入mys ...
- mysql学习之路_联合查询与子查询
联合查询 联合查询:将多次查询(多条select语句)在记录上进行拼接(字段不会增加). 语法:多条select语句构成,每条select语句获取的字段必须严格一致(但是字段类型无关). Select ...
- mysql学习之路_外键
回顾4 连接查询: 连接多张表到一起,不管记录数如何,字段数一定会增加. 分类:内连接,外连接.自然连接,交叉连接, 交叉连接:cross join (笛卡尔积) 内连接:inner join,左右两 ...
- mysql学习之路_字段类型与属性2
字段属性: 主键,唯一键,自增长. 主键: Primary key 主要的键,一张表只能有一个字段能使用对应的键,用来唯一约束该字段里面的数据不能重复,称之为主见. 一张表最多只有一个主键. 增加主键 ...
- Javascrpit学习之路一——基础知识
1.DOM 文档对象模型 定义:一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态的访问和修改文档的内容.结构和样式. 2.Javascript 区分大小写.弱类型语言 变量小写:va ...
- mysql学习之路_视图
视图 视图:view是一种有结构的但是没有结构来源的虚拟表,虚拟表的结构来源不是自己定义的而是从对应的基表中产生(来源) 创建视图 基本语法: Create view 视图名字 as select 语 ...
随机推荐
- 【linux】常见问题&常用命令笔记
1.重启以及关机命令: Linux centos重启命令: (1)reboot 普通重启 (2)shutdown -r now 立刻重启(root用户使用) (3)shutdown -r 10 过 ...
- linux命令学习之:df
df命令用于显示磁盘分区上的可使用的磁盘空间.默认显示单位为KB.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 语法 df (选项) (参数) 选项 -a或--all:包含全部 ...
- Django模板如何用一个变量查找字典值
mydict = {"key1":"value1", "key2":"value2"} 在Django模板中查找字典值的 ...
- Repeater控件添加序号列
在项目开发过程中,会经常遇到ASP.NET repeater控件添加序号列,有些新手可能还不会,网上搜集整理了一些,需要的朋友可以参考下 ASP.NET repeater添加序号列的方法 1.< ...
- Angular5学习札记
1.使用cnpm安装jQuery和bootstrap后,页面没有加载的问题 -使用cnpm安装的路径和使用npm安装路径不一样,解决如下: 把css路径改成"../node_modules/ ...
- 有关JVM处理Java数组方法的思考
在Java中,获取数组的长度和String的长度是两种不同的方法,这引起了本文作者的一番思考.本文从JVM的角度,探讨了Java数组在JVM中是什么对象,有哪些成员,以及声明方法. 作者:jarfie ...
- Numpy copy & deep copy
1. '='的赋值方式会带有关联性 >>> import numpy as np >>> a = np.arange(4) >>> b = a & ...
- sFlow-rt安装部署
sFlow技术是一种以设备端口为基本单元的数据流随机采样的流量监控技术,不仅可以提供完整的第二层到第四层甚至全网范围内的实时流量信息,而且可以适应超大网络流量(如大于10Gbit/s)环境下的流量 ...
- Shell脚本中$0、$?、$!等的意义
变量说明$$ Shell本身的PID(ProcessID)$! Shell最后运行的后台Process的PID$? 最后运行的命令的结束代码(返回值)$- 使用Set命令设定的Flag一览$* 所有参 ...
- python中的迭代器 生成器 装饰器
什么迭代器呢?它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了__iter__和__next__()(python2中实现next())方法的对象都是迭代器,_ ...