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);加速查找
對文件的操作

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM