一,数据库的基本概念
1,数据
描述事物的符号记录为数据(Data),包括数字、文字、图形、图像、声音、档案记录等,以“记录”的形式统一的格式进行储存;
2,表
将不同的二级路组织在一起,就形成了“表”是用来存储具体数据的;
3,数据库
表的集合,是存储数据的仓库,以一定的组织方式存储的互相有关的数据;
4,数据库管理系统
实现对数据库资源有效组织、管理和存取的系统软件,具有一下功能:数据库的建立和维护功能、数据定义功能、数据操纵功能、运行管理功能、通信功能;
5,数据库系统
是一个人-机系统,由硬件、操作系统、数据库、DBMS、应用软件和数据库用户组成,用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。
二,当今主流数据库介绍
1,当今主流的关系型数据库:
(1)SQLServer (微软公司产品)
面向Windows操作系统
简单,易用
(2)Oracle(甲骨文公司产品)
面向所有主流平台
安全、完善、操作复杂
(3)DB2(IBM公司产品)
面向所有主流平台
大型、安全、完善
(4)MySQL(甲骨文公司收购)
免费、开源、体积小
三,非关系数据库介绍
1,非关系型数据库的优点
可满足数据库高并发读写的需求
对海量数据高效率存储与访问
数据库的高扩展性与高可用性的需求
2,非关系型数据库的存储方式
(1)键-值 方式,以键为依据存储、删除、更改数据
(2)列存储(Column-oriented),将关系的数据存储在列族中
(3)文档方式,数据库由一系列数据项组成,每个数据项都有对应的值
(4)图形方式,尸体为顶点,关系为变,数据保存为一个图形
3,非关系数据库产品
(1)Memcached-----是一个开源的,高性能的,具有分布式内存对象的缓存系统,以key-value方式存储数据。
特点:缓存数据以减轻数据库压力并能加快访问速度
加速动态Web应用
缓存的内容保存在内容中
(2)redis----也是一个以key-value方式存储数据,数据也是保存在内存中,但会
定期将数据写入磁盘中。
特点: 支持内存缓存
支持持久化
数据类型更多
支持集群,分布式
支持队列
四,MySQL数据库介绍
1,特点:
性能卓越,服务稳定
开源,无版权限制,成本低
多线程,多用户
基于c/s(客户端/服务端)架构
安全可靠
五,编译安装MySQL
1,准备工作
卸载rpm方式安装的mysql-server,mysql
查看命令:rpm -qa | grep mysql
若存在,用rpm -e mysql-server mysql --nodeps命令卸载
(最小化装机没有安装mysql)
安装ncurses-devel与cmake包
命令:yum -y install ncurses-devel
tar xf cmake-2.8.6.tar.gz -C /usr/src/
cd /usr/src/cmake-2.8.6/
source /etc/configure && gmake && gmake install
2,源码编译机安装
增加程序用户mysql=====>>useradd -s /sbin/nologin -M mysql(不能登录,没有家目录)
解压mysql-5.5.22.tar.gz=====>>tar xf mysql-5.5.22.tar.gz -C /usr/src/
cmake配置,编译及安装
cd /usr/src/mysql-5.5.22/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all && make && make install
注释: -DCMAKE_INSTALL_PREFIX=/usr/local/mysql====>>主程序安装目录
-DSYSCONFDIR=/etc =======>> 配置文件存放目录
-DDEFAULT_CHARSET=utf8=====>>默认字符集为utf8
-DDEFAULT_COLLATION=utf8_general_ci=====>>默认的字符集校对规则
-DWITH_EXTRA_CHARSETS=all=====>>安装所有字符集
3,安装后优化操作
修改mysql安装目录的属主与属组=====>>chown -R mysql:root /usr/local/mysql/
创建修改mu.cnf 配置文件=====>>/bin/cp support-files/my-medium.cnf /etc/my.cnf
***********************************************************************************
my.cnf 配置文件相关介绍 ,在mysql 解压路径support-files/下提供的模板:
my-huge.cnf========>>巨大数据量
my-innodb-heavy-4G.cnf=====>> innodb引擎
my-large.cnf=====>>大数据量
my-medium.cnf=====>>测试使用
my-small.cnf=====>> 小数据量
MySQL数据库存储引擎:myisam innodb
***********************************************************************************
添加系统服务
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld======>>给文件添加执行权限
chkconfig mysqld --add
chkconfig mysqld --list
添加MySQL命令执行的路径到PATH环境变量
ecjo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
执行mysql_install_db脚本初始化数据库
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/
--datadir=/usr/local/mysql/data/
***************************************************************************
注释:--basedir=/usr/local/mysql/=====>>指定安装目录(产品目录)
--datadir=/usr/local/mysql/data/=====>>指定数据目录
--user=mysql =====>> 指定用户身份
***************************************************************************
启动mysql服务======>>/etc/init.d/mysqld start
查看运行状态======>> netstat -anpt | grep :3306
设置数据库用户名及密码======>>mysqladmin -uroot password'123123'
连接并登录到mysql操作环境=====>>mysql -uroot -p123123
mysql -u 指定用户名
-p(小写)指定密码
-h 指定主机IP
-P(大写) 指定端口
退出登录=====>>quit或exit或ctrl+D
六,MySQL数据库操作
(一),SQL语言=====>>是关系型数据库的标准语言,用于维护管理数据可,如增,删,改,查;
SQL分类:
DDL:数据定义语言,增删改===>>库,表,索引=====>>create,drop
DML:数据操纵语言,增删改===>>数据=====>>insert,update,delete
DQL:数据查询语言,查询数据=====>>select
(二),MySQL数据库表的管理操作
注:大部分命令不区分大小写
1,查看数据库结构
查看数据库列表信息=====>> 命令格式 show databases;
查看数据库中的数据表信息=====>>命令格式 show tables;
显示数据表的结构:describe 数据库名.表名;
或者先use 数据库名;(进入数据库)再describe 表名;
2,DDL语句操作=====>>数据定义语言,用于增删改数据库,表,索引等
create 创建新库=====>> create database 数据库名;
创建新表=====>>create table 表名;
示例:create database auth; =====>>新建一个名为auth的数据库
use auth;=====>> 使用auth这个数据库
创建表示例:create table users (user_name char(20) not null,user_passwd char(30)
default ' ',primary key (user_name));===>> 创建名为users的表,表内两个字
段为(user_name 最多20字节,不能为空,user_passwd 最多30字节 默认为空
,索引关键字user_name)
drop删除表======>>drop table 数据库名.表名
删除库======>>drop database 数据库名
示例:drop table auth.users;=====>> 删除auth库的users表
drop database auth;=====>> 删除auth数据库
3,DML 语句操作 =====>>数据库操纵语言,用于对表中的数据进行增删改
insert插入新数据 格式:insert into 数据库名.表名(字段1,字段2,。。。) values('字段1的值','字段2的值'...)
update更改原有数据 格式:update 数据库名.表名 set 字段A='值A' where 字段B='值B'
示例:update auth.users set user_passwd=password('') where user_name='lisi'
解释:清空lisi的密码
delete删除不需要的数据 格式:delete from 数据库名.表名 where 字段1='值1';
示例:delete from auth.users where user_name='lisi'
解释:在authentic库中的users表中,删除用户名为lisi的记录
4,DQL语句操作 =====>> 数据查询语句,用于数据查询
select查询语句 格式:select 字段名 from 数据库名.表名
示例:select * from auth.users; 查看所有数据
select user_name from auth.users;在users表中查看user_name数据
select * from auth.users where user_name='zhangsan'查看表中名 字为zhangsan的所有信息
强制刷新:flush privileges
七,MySQL用户权限设置grand
1,mysql账号由两部分组成:用户名和登录IP,中间用@连接 ,表示此用户只能在此IP地址上登录
示例:grant all on *.* to 'root'@'192.168.200.130' identified by '123456';
解释:grant all =====>>赋予所有权限(增删改查)
*.* =====>>所有库所有表
identified by '密码'=====>>设置用 户同时设置密码
select user();=====>>查看当前登录账号
show grants ;=====>>查看当前用户权限
show grants for '用户名'@'IP' 查看指定用户权限
revoke select on 空间名.表名 from '用户名'@'IP'=====>>撤销用户的读权限
MySQL通配符:
_:任意单个字符
%:任意长度的任意字符