数据库定义: 储存数据的仓库
高效的存储和处理数据的介质 (介质是磁盘和内存)
数据库分类
关系型数据库(SQL)
非关系型数据库(NoSQL:Not Only SQL)
关系型数据库
大型: Oracle DB2
中型: SQL Server MySQL
小型: Accerss SQLite等
非关系型数据库
Memcached MongoDb Redis
二者区别
关系型数据库:安全(保存磁盘,基本不可能丢失),容易理解,比较浪费空间(二维表)
非关系型数据库:效率高,不安全(断电丢失)
关系型数据库
是一种建立在关系模型(数学模型)上的数据库
关系模具:一种所谓建立在关系上的模型
关系模型包含
1数据结构:用于解决数据储存的问题,二维表(有行和列)
2操作指令集合:所有的SQL语句
3完整型约束L:表内数据约束(字段与字段),表与表之间的约束(外键)
从需要储存的数据需求中分析,如果是一类数据(实体)应该设计成一张二维表L:表是由表头和数据部分组成
表头:即字段名,用来规定数据与的名字
数据部分:实际储存的数据单元
关系型数据库,需要维护实体内部,实体与实体之间的联系
二维表
表头 字段名1 字段名2
数据单元 数据1 数据2
关系型数据库浪费空间原因
如果表中对应的某个字段没有值(数据),但是系统依然要分配空间
关键字说明!!!!!!!
数据库database
数据库系统 DBS (Database System)
是一种虚拟系统,将多中中内容关联起来的称呼
DBS = DBMS + DB
DBMS:Database Management System 数据库管理系统,专门管理数据库
DBA: Database Administeator ,数据库管理员
行/记录 row/record
列/字段 column/field
SQL 结构化查询语言
SQL分为三个部分
DDL 数据定义语言 用来维护存储数据的结构(数据库,表),代表指令 create ,drop , alter
DML 数据操作语言 用来对数据的操作(数据表重的内容),代表指令 insert。delete。update 等 其中DML内部有单独进行了分类:DQL 数据查询语言 如 selecr
DCL 数据控制语言 主要负责权限管理(用户),代表指令 grant。revoke等
交互方式:
1 客户端链接认证 :链接服务器,认证身份(mysql.exe -hPUp)
2 客户端发送SQL指令
3 服务器接收SQL指令,并处理SQL指令,返回操作结果
4 客户端接收结果,并显示结果
5 断开连接
M有SQL服务器对象
系统(DBMS)
数据库(DB)
数据表(Table)
字段(Field)
SQL基本操作
SQL分类
库操作
表操作(包含字段操作)
数据操作
库操作
新增数据库 create database 数据库名字【库选项】
库选项:用来约束数据库
字符集设定 charset/characterset 具体字符集(数据存储的编码格式常有GBK和UTF8)
校对集设定 collate 具体校对集(数据比较规
数据库名字不能用关键字(已经被系统使用的字符)或者保留字(将来系统可能会用到的字符)
创建结果:
在数据库系统中,增加了对应的数据库信息
会在保存数据的文件下(Data目录),创建一个对应数据库名字的文件夹
每个数据库下都有一个opt文件,保存了库选项
查看数据库
查看所有的数据库 :show databases
查看指定部分的数据库(模糊查询) : show databases like'pattern'
pattern是匹配模式
%表示匹配多个字符
_表示匹配单个字符
查看数据库的创建语句 show create database 数据库名字
更新数据库
数据库名字不可以修改
数据库的修改仅限库选项,即字符集和校对集(校对集依赖字符集)
alter database 数据库名字【库选项】
charset/characterset 【=】 字符集
collate 校对集
删除数据库
drop database 数据库名字
表操作
create table【if not exists】表名(字段名字 数据类型 。。。。字段名字 数据类型)【表选项】
表选项: 控制表的表现
字符集:charset/character set 具体字符句 ---保证表中数据存储的字符集
校对集:collate具体校对集
存储引擎:engine具体的存储引擎(innodb和myisam)
方案一
显示地指定表所属地数据库:
create table 数据库名。表名();
方案二;
隐藏地指定表所属数据库
进入数据库环境:use数据库名字
查看数据表
查看所有表 show tables
查看部分表(模糊查询) show tables llike'pattern'
pattern是匹配模式
% 表示匹配多个字符
_表示匹配单个字符
查看数据库的创建语句 show create database 数据库名字
查看表结构(表中地字段信息) dasc/describe/show columnsfrom 表名
修改数据表
修改表本身
修改表名 rename table 旧表名to新表名
修改表选项(字符句,校对集,存储引擎都可以修改)L: alter table 表名 表选项【=】值
修改字段
删除数据表 drop table 表名1 表名2
字段操作
新增字段 alter table 表名 add 【column】字段名数据类型【列属性】【位置】
first 第一位置
after 在哪个字段后 after字段名
修改字段 alter table 表名modify 字段名 数据类型【列属性】【位置】
重命名字段 alter table 表名 change 旧字段 行字段名 数据类型【列属性】【位置】
删除字段 alter table 表名 drop 字段名
数据操作
新增数据
方案一 给全表字段插入数据 不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致 凡事非数值数据,都需要使用引号(建议单引号)包裹
insert into 表名 calues(值列表)
方案二 给部分字段插入数据,需要选定字段列表,字段列表出现的顺序与字段顺序无关,但是值列表的顺序必须与选定的字段顺序一致
insert into 表名 (字段列表) values(值列表)【值列表】
查看数据
查看所有数据 select*from 表名【where条件】
查看指定字段,指定条件的数据 select字段列表 from表名【where条件】
更新数据
update表名 set字段 = 值【where条件】
建议都有where ,否则就是更新全部
删除数据
删除书不可逆的,谨慎删除
deletefrom 表名【where条件】