数据库的基本概念
- 数据
描述事物的符号记录为数据(Data),包含数字,文字,图形,图像,声音,档案记录等,以“记录”形式统一的格式进行储存 - 表
将不同的记录组织在一起,就形成了“表”,是用来存储具体数据的 - 数据库
表的集合,是存储数据的仓库,以一定的组织方式存储的互相有关的数据 -
数据库管理系统(Database Management System DBMS)
实现对数据库资源有效组织、管理和存取的系统软件,具有以下功能:数据库的建立和维护功能、数据定义功能、数据操纵功能、运行管理功能、通信功能。 -
数据库系统(Database System,DBS)
是一个人-机系统,由硬件、操作系统、数据库、DBMS、应用软件和数据库用户组成。用户可以通过 DBMS 操作数据库,也可以通过应用程序操作数据库
数据库简单分为俩种
- 关系型数据库====>MySQL,Oracle,postgresql
- 关系型数据库简单来说就是:数据与数据之间是有关系的通过关系能够将一系列数据都提取出来
- 非关系型数据库===>Memcached和Redis
MySQL数据库简绍
MySQL属于传统关系型数据库产品,它开放式的架构使得用户选择性很强,同时社区开发与维护人数众多。其功能稳定,性能卓越,且在遵守GPL协议的前提下,可以免费使用与修改,也为MySQL的推广与使用带来了更多的利好。在MySQL成长与发展过程中,支持的功能逐渐增多,性能也不断提高,对平台的支持也越来越多。
MySQL是一种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,再将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓库里,这样的设计增加了MySQL的读取速度,而且灵活性和可管理性也得到了很大提高。访问及管理MySQL数据库的最常用标准化语言为SQL结构化查询语言。
MariaDB 数据库的诞生背景介绍
自甲骨文公司收购MySQL后,其在商业数据库与开源数据库领域市场的占有份额都跃居第一,这样的格局引起了业内很多的人士的担忧,因为商业数据库的老大有可能将MySQL闭源。为了避免Oracle将MySQL闭源,而无开源的类MySQL数据库可用,MySQL社区采用分支的方式来避开这个风险。MariaDB数据库就这样诞生了,MariaDB是一个向后兼容,可能在以后替代MySQL的数据库产品,其官方地址为:https://mariadb.org/ 。不过,这里还是建议大家选择更稳定,使用更广泛的MySQL数据库,可以先测试MariaDB数据库,等使用的人员更多一些,社区更活跃后再考虑使用为好。
编译安装MySQL
MySQL 的下载地址:https://dev.mysql.com/downloads/mysql/
还需要提前准备cmake包cmake-2.8.6.tar.gz
- 准备工作
[root@mysql ~]# yum -y install ncurses-devel
[root@mysql ~]# tar xf cmake-2.8.6.tar.gz -C /usr/src/
[root@mysql ~]# cd /usr/src/cmake-2.8.6/
[root@mysql cmake-2.8.6]# ./configure && gmake && gmake install
这是安装msyql的支持包
- 源码编译及安装
增加程序用户 mysql
[root@mysql ~]# useradd -M -s /sbin/nologin mysql
解压 mysql-5.5.22.tar.gz
[root@mysql ~]# tar xf mysql-5.5.22.tar.gz -C /usr/src/
cmake 配置,编译及安装
[root@mysql ~]# cd /usr/src/mysql-5.5.22/
[root@mysql 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 //主程序安装目录
-DDEFAULT_CHARSET=utf8 //默认字符集为 utf8
-DDEFAULT_COLLATION=utf8_general_ci //默认的字符集校对规则
-DWITH_EXTRA_CHARSETS=all //安装所有字符集
-DSYSCONFDIR=/etc //配置文件存放目录
-
安装后优化操作
[root@localhost ~]# cd /usr/local/mysql/
修改 mysql 安装目录的属主与属组
[root@mysql mysql-5.5.22]# chown -R mysql:root /usr/local/mysql/
创建修改 my.cnf 配置文件
[root@mysql mysql-5.5.22]# /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 小数据量
添加系统服务
[root@mysql mysql-5.5.22]# /bin/cp support-files/mysql.server /etc/init.d/mysqld
[root@mysql mysql-5.5.22]# chmod +x /etc/init.d/mysqld
[root@mysql ~]# chkconfig mysqld --add
[root@mysql ~]# chkconfig mysqld --list
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
添加 MySQL 命令执行的路径到 PATH 环境变量
[root@mysql ~]# echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
[root@mysql ~]# . /etc/profile
[root@mysql ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lo
cal/mysql/bin
这是把mysql里所有的命令加到系统变量中,让系统可以找到命令
执行 mysql_install_db 脚本初始 化数据库
[root@mysql ~]#/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 服务,并查看运行状态
[root@mysql ~]# /etc/init.d/mysqld start
Starting MySQL... [确定]
[root@mysql ~]# netstat -anpt |grep :3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
22858/mysqld
连接并登录到 mysql 操作环境
mysql -u 指定用户名
-p 指定密码
-h 指定主机
-P 指定端口
[root@mysql ~]# mysql
[root@mysql ~]# mysql -uroot -p
设置数据库用户名密码
[root@mysql ~]# mysqladmin -uroot password '123123'
数据库操作
SQL语句概括
SQL 语言是(Structured Query Language 的缩写,即结构化查询语言),是关系型数据库的标准语言,用于维护管理数据库,如数据查询、数据更新、访问控制、对象管理等功能
SQL 分类:
·DDL:数据定义语言,用于增删改数据库的对象,如库、表、索引等
·DML:数据操纵语言,用于对表中的数据进行增删改
·DQL:数据查询语言,用于数据查询
·DCL:数据控制语言
MySQL 数据库表的管理操作
- 查看数据库结构
格式:show databases;
查看数据库中的数据表信息
格式:use 数据库名;
show tables ;
显示数据表的结构(字段
格式:describe [ 数据库.] 表名
create创建新库,创建新表
格式:create database ;
create table 表名 ( 定义字段);
mysql> use yunjisuan; //使用yunjisuan这个数据库
mysql> create table users (user_name char(20) not null, user_passwd char(30) default '', primary key (user_name));// 在 yunjisuan 库中,创建名为 users 的表,表内两个字段为(user_name 最多 20 个字节 不能为空 ,user_passwd 最多 30 个字节 默认为空,索引关键字 user_name
insert 插入新数据
格式:insert into 表名( 字段 1, 字段 2,……) values(‘ 字段 1 的值’,’ 字段 2 的值’……);
在 users 表的(字段 user_name ,字段 user_passwd )中添加(‘zhangsan ’,调用函数 password(‘123123 ’));
update更改原有数据
格式 :update 表名 set 字段名 1=值 值 1 [, 字段 2=值 值 2] where 条件表达式;
有时显示不出来需要用 flush privileges;这是刷新的意思
select查询语句
格式 :select 字段名 1, 字段名 2,……from 表名;
select 字段名 1, 字段名 2,……from 表名 where 条件表达式;
delete删除不需要的数据
格式:delete from 表名 where 条件表达式;
delete from mysql.user where user=''; //在 在 mysql 库中的 user 表中,删除空的用户
名的记录
drop删除库,删除表
格式:drop table [ 数据库名.] 表名;
drop database 数据库名;