Mysql数据库简介

一、认识数据库

1.数据库的由来

  之前所认识的数据都是存存某一个文件当中,但是一个文件只能存在于一台机子上,但在现实中不可能所有的数据都是存放在一台机子上的。

  (1)现实中是不可能将所有的应用程序放在一台机子上的

  假设所有的应用程序只安装在一台机子上,若该机子崩掉,则意味着数据永久性的消失,所以除非煞笔,要不然没有人会这么做的。并且一台机子的性能是有限的,有些人就想到了给机子添加硬件,关键是你再怎么添加硬件来提升性能,到最后肯定是会达到一个极限的,所以,将所有的应用程序都安装在一台机子上的做法是不可取的。

  (2)数据的安全型没有保障

  数据若之存放于单独某一台机子上,数据的共享性就必然不一致了。所以,尽量不要将所有的数据存放于一台机子上。

  (3)并发效果

  必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:

#1.远程连接(支持并发)
#2.打开文件
#3.读写(加锁)
#4.关闭文件

  总结上述几点:

    在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的
处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数
据管理中解脱出来,专注于自己的程序逻辑的编写。
二、数据库概述
1.数据的概念
  世界中用来描述一切事物状态的记录符号称之为数据,它可以是图片、视频、文件等等。
2.数据库的概念
  数据库即存放所有数据的一个仓库,只是这个仓库是位于计算机上的,并且是按照一定的格式来储存的。
3.数据库管理系统(DataBase Management System-DBMS)

  为了科学地组织和存储数据,高效获取和维护数据,这就用到了一个系统软件---数据库管理系统,如MySQL、Oracle、SQLite、Access、MS SQL Server。

4. 数据库服务器、数据管理系统、数据库、表与记录的关系--重点理解

  记录:1 张大胖  324245234 22(多个字段的信息组成一条记录,即文件中的一行内容)

  表:student,scholl,class_list(即文件)

  数据库:oldboy_stu(即文件夹)

  数据库管理系统:如mysql(是一个软件)

  数据库服务器:一台计算机(对内存要求比较高)

总结:

    数据库服务器-:运行数据库管理软件

    数据库管理软件:管理-数据库

    数据库:即文件夹,用来组织文件/表

    表:即文件,用来存放多行内容/多条记录

三、Mysql介绍

  1.mysql是什么?

  MySQL是一个关系型数据库管理系统,是一个基于socket编写的c/s架构软件。

  客户端的软件:MySQL自带>>如MySQL命令,mysqldump命令等

         python模块>>如pymysql

  2.数据库管理软件的分类

  主要分成两大类:

    关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用

    非关系型mongodb,redis,memcache

  可以理解成:

    关系型数据库需要有表结构

      非关系型数据库是key-value存储的,没有表结构
四、安装
linux版本
1.解压tar包
cd /software
tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.21

2.添加用户与组
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql mysql-5.6.21

3.安装数据库
su mysql
cd mysql-5.6.21/scripts
./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 --datadir=/software/mysql-5.6.21/data

4.配置文件
cd /software/mysql-5.6.21/support-files
cp my-default.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql   #若mysql的安装目录是/usr/local/mysql,则可省略此步
修改文件中的两个变更值
basedir=/software/mysql-5.6.21
datadir=/software/mysql-5.6.21/data

5.配置环境变量
vim /etc/profile
export MYSQL_HOME="/software/mysql-5.6.21"
export PATH="$PATH:$MYSQL_HOME/bin"
source /etc/profile

6.添加自启动服务
chkconfig --add mysql
chkconfig mysql on

7.启动mysql
service mysql start

8.登录mysql及改密码与配置远程访问
mysqladmin -u root password 'your_password'     #修改root用户密码
mysql -u root -p     #登录mysql,需要输入密码
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;     #允许root用户远程访问
mysql>FLUSH PRIVILEGES;     #刷新权限

源码安装mysql
源码安装mysql

1. 解压
tar zxvf  mariadb-5.5.31-linux-x86_64.tar.gz   
mv mariadb-5.5.31-linux-x86_64 /usr/local/mysql //必需这样,很多脚本或可执行程序都会直接访问这个目录

2. 权限
groupadd mysql             //增加 mysql 属组 
useradd -g mysql mysql     //增加 mysql 用户 并归于mysql 属组 
chown mysql:mysql -Rf  /usr/local/mysql    // 设置 mysql 目录的用户及用户组归属。 
chmod +x -Rf /usr/local/mysql    //赐予可执行权限 

3. 拷贝配置文件
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf     //复制默认mysql配置 文件到/etc目录 

4. 初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql          //初始化数据库 
cp  /usr/local/mysql/support-files/mysql.server    /etc/init.d/mysql    //复制mysql服务程序 到系统目录 
chkconfig  mysql on     //添加mysql 至系统服务并设置为开机启动 
service  mysql  start  //启动mysql

5. 环境变量配置
vim /etc/profile   //编辑profile,将mysql的可执行路径加入系统PATH
export PATH=/usr/local/mysql/bin:$PATH 
source /etc/profile  //使PATH生效。

6. 账号密码
mysqladmin -u root password 'yourpassword' //设定root账号及密码
mysql -u root -p  //使用root用户登录mysql
use mysql  //切换至mysql数据库。
select user,host,password from user; //查看系统权限
drop user ''@'localhost'; //删除不安全的账户
drop user root@'::1';
drop user root@127.0.0.1;
select user,host,password from user; //再次查看系统权限,确保不安全的账户均被删除。
flush privileges;  //刷新权限

7. 一些必要的初始配置
1)修改字符集为UTF8
vi /etc/my.cnf
在[client]下面添加 default-character-set = utf8
在[mysqld]下面添加 character_set_server = utf8
2)增加错误日志
vi /etc/my.cnf
在[mysqld]下面添加:
log-error = /usr/local/mysql/log/error.log
general-log-file = /usr/local/mysql/log/mysql.log
3) 设置为不区分大小写,linux下默认会区分大小写。
vi /etc/my.cnf
在[mysqld]下面添加:
lower_case_table_name=1

修改完重启:#service  mysql  restart
源码安装mariadb
window版本
#1、下载:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/

#2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.7.16-winx64

#3、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
 
#4、初始化
mysqld --initialize-insecure

#5、启动MySQL服务
mysqld # 启动MySQL服务

#6、启动MySQL客户端并连接MySQL服务
mysql -u root -p # 连接MySQL服务器
安装

上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:



注意:--install前,必须用mysql启动命令的绝对路径
# 制作MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install
 
# 移除MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove



注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
# 启动MySQL服务
net start mysql
 
# 关闭MySQL服务
net stop mysql
将MySQL服务做成window服务
五、软件管理
待更。。
六、初识 sql 语句
mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他模块来连接到mysqld,
然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql(Structured Query Language 即结构化查询语言)
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
#1、DDL语句    数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
#2、DML语句    数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
#3、DCL语句    数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
语句类型
1.登录MySQL数据库
mysql -u root -p
登录
2.库的操作
# charset:给数据库指定编码格式
增: create database db charset utf8;

# 查询数据库中所有的库
查: show databases;

# 因还未增添数据,故只能修改字符编码
改: alter database db charset gbk;

# 删除指定的库
删: drop database db;
对库的操作
3.文件夹的操作
# 首先得切换至需要操作的文件夹下
use db;

# 创建文件夹,并指定表字段数据类型
增:create table student(id int,name char);
      create table db.student(id int,name char);

# 查询当前库下的所有文件夹
查:show tables;

      # 只能改表字段下的数据
改:alter table student modify name char(15);
      # 更改表字段的同时可以更改表字段下的数据
      alter table student change name new_name char(10);

删:drop table student;
对文件夹的操作

4.文件的操作
# 增加数据是最后一个一定不能加逗号
增:insert into student values(1,'Luffy'),(2,'Namy'),(3,'Brooke');

查:
表格式化:desc student;
指定条件查找:select * from student where id>1;
查所有:select * from student;

改:update student set name='LUFFY' where id =1;

删:
# 如果有自增id(即id默认主动增加),新增的数据,仍然是以删除前的最后一条记录作为起始
delete from student where id=1;
# 数据量大,删除速度比上一条快,且新增的记录直接从零开始
truncate table student;

auto_increment 表示:自增(即在默认情况下,往表格中加一条数据,id会自动加1)
primary key 表示:约束(不能重复且不能为空--not null unique);加速查找
对文件的操作

 

 

 

 

 

posted @ 2018-07-19 23:54  Smart1san  阅读(1290)  评论(0编辑  收藏  举报