数据库简介
概念 什么是数据库?简单来说,数据库就是存储数据的“仓库”, 但是,光有数据还不行,还要管理数据的工具,我们称之为数据库管理系统!
数据库系统 = 数据库管理系统 + 数据库 + 数据库管理员
DataBase System (DBS)= DataBase Management System (DBMS) + DataBase(DB) + DataBase Administrator(DBA)
数据库: 对大量的信息进行管理的高效的解决方案,按照数据结构来组织、存储和管理数据的载体!
关系型数据库 MySQL
关系型”的含义
所谓的关系型数据库,就是基于关系模型的数据库,一个关系模型就对应着一张二维表,而一张二维表也往往对应着现实世界中的一个实体集!
什么是实体与实体集?
实体是观念世界中描述客观事物的一个概念,可以是具体的事物,比如一个人,一本书,一部手机等,也可以是抽象的事物,比如一种感受、一个订单等!
同一类实体的所有的实例就构成了一个实体集,简单来说,实体集就是实体的集合,而每个实体都是该实体集的一个实例!实体与实体集之间的关系有点类似于数学上的元素与集合之间的关系!
非关系型数据库 MongoDB
特点:
1, 使用键值对保存和表示数据库(有点类似于数组中键值对)
2, 保存数据的介质是内存,所以数据库运行的效率比关系型数据库要高很多(关系型数据库保存数据库的介质是磁盘)
3, 运行的时候,会进行数据同步(将内存中的数据写入到磁盘)
因为运行在内存,所以安全性不如关系型数据库
SQL语言 是一种关系型数据库操作语言,也是一种数据库编程语言
概念 SQL:Structured Query Language,结构化查询语言!
DDL Data Definition Language,数据定义语言! 主要是用来定义和维护数据库的各种操作对象,比如库、表、索引、视图 主要的操作关键字有:create、drop、alter等
DML Data Manipulation Language,数据操作语言其中,“查询”部分,有可以叫作DQL
DQL Data Query Language,数据查询语言! 关键字:select
DCL Data Control Language,数据控制语言 主要是对数据库进行统一管理和统一控制,比如并发控制,存取控制,安全控制等;具体的有数据库的权限管理(创建用户,给用户分配权限,回收权限等),数据的备份与恢复等!
MySQL的软件架构
MySQL是基于C/S架构的,也就是说,要想访问MySQL服务器,必须先有MySQL客户端!
MySQL安装完之后,分成了两个部分:一个是服务器端软件,还有一个客户端软件!
所以,要想正常的使用MySQL服务器,要完成两个步骤:
1, 开始MySQL服务器
2,客户端连接服务器
开启MySQL服务器
有以下的几种方式:
1, 通过windows管理的方式进行开启
window+R打开命令行,输入services.msc,打开本地服务,找到MySQL打开
2, 通过dos命令行开启
window+R打开命令行,输入cmd , 输入net start mysql打开,输入net stop mysql停止
3,直接找到安装目录下的bin目录下的mysqld.exe来打开
客户端连接服务器
MySQL的注释符
单行注释:
#
-- 注释内容 ,注意,其中—与注释内容之间有一个空格!
多行注释:
/* 注释内容 */
数据库操作
创建数据库(增) 关键字:create 语法形式:create database 数据库名[数据库选项] 数据库选项主要有两个:一个是字符集,一个是校对规则,不写就表示用默认!
查看数据库(查) 关键字:show 语法形式:show databases;查看所有的数据库。 show create database 数据库名; 查看指定的数据库
删除数据库(删) 关键字:drop 语法形式:drop database 数据库名;
注意:删除数据库一定要慎重!因为整个数据库文件(包括里面所有的数据表以及表中所有的数据)都会被删除,过程默认不可逆!
修改数据库(改) 关键字:alter 语法形式:alter database 数据库名 新的库选项;(alter database 数据库名 default charset 字符集;)
注意:数据库的名称不可以修改!只能修改库选项信息!
数据表操作
首先,所有的数据表都应该属于某一个具体的数据库!所以,有关数据表的任何操作都需要先指定其所属的数据库!
1, 显示的指定数据库 就是在任何有关数据表的操作的时候,都要在表的前面加上库名,形式为:库名.表名
2, 指定默认的数据库 也是最常用的方法,就是事先进入到某个数据库的操作环境,语法为:use 库名;
创建数据表(增)
语法:表选项信息不写及默认
create table 表名(
字段1 字段1类型,
字段2 字段2类型,
字段3 字段3类型,
字段n 字段n类型
)表选项信息;
注意:
表不能脱离字段存在!字段也不能脱离表存在,所以,所有的表的操作都是表和字段同时操作!
查看数据表(查) 关键字:show
查看所有的数据表:show tables;
模糊查询:关键字:like 通配符:_可以代表任意的单个字符,%可以代表任意的字符!
比如查看php开头的:show tables like 'php%';
查看具体某个数据表:show create table 数据表名;
查看表的结构:desc 数据表名;
删除数据表(删) 关键字:drop 语法:drop table 表名;
-- 比较完整的语法
drop table if exists 表名;
-- 其他完整的语法
create database if not exists 库名;
drop database if exists 库名;
create table if not exists 表名(字段列表);
drop table if exists 表名;
修改数据表(改) 语法:alter table 旧表名 rename to 新表名;
数据表中有哪些是可以修改的? 表名、表选项、列定义(又有很多,比如增加一列,删除一列,修改列类型等)
注意:虽然数据表中可以修改的地方有很多,命令也有很多,但是都可以分成上级命令+下级命令来记忆,其中的上级命令都是一样的:
alter table 表名 而各个下级命令的关键字又不一样!
修改表名 上级命令:alter table 表名 下级命令关键字:rename
修改列定义 有可以分成很多操作,比如:增加字段,删除字段,重命名字段,修改字段类型,修改字段的排序等
其中,上级命令还是:alter table 表名下级命令的关键字:增加:add 删除:drop 重命名:change 修改:modify
修改表选项 语法:alter table 表名 default charset 字符集;
数据操作
插入数据(增) 关键字:insert 语法形式:insert into 表名(字段列表) values(值列表);
注意:1, 这里的字段列表可以是全部字段,也可以是部分字段(也就是只插入部分数据,其他的默认为null,表示什么都没有)
2, 字段列表与值列表应该是一一对应的,字段列表中的顺序可以和表中的顺序不一样,但是必须与值列表后面的顺序一样就行了!
3,当为全部的字段插入数据的时候,字段列表可以省略的,此时的值列表就必须按数据表中的顺序一一对应!
4,也可以一次插入很多条数据,中间以逗号隔开
查询数据(查) 关键字:select 语法:select *|字段列表 from 表名[查询条件];
注意:
1,当查询所有的字段的时候,可以用*代替
2,查询条件可以省略,默认就是查询所有的记录,相当于where 1;
删除数据(删) 关键字:delete 语法:delete from 表名[删除条件];
注意:这里的删除条件往往不会省略,如果省略掉,默认的就是删除了表中的全部的记录!
修改数据(改) 关键字:update 语法:update 表名 set 字段1=新值1,字段2=新值2……[修改条件];
注意:和删除数据一样,这里的修改条件也往往是必须的!