Mysql數據庫(一)
在以前按寫的選課系統或則是ftp項目中,咱們都引用了db這個文件夾,那麼數據量太大,或則須要快速對文件進行操做時,單一的文件已經沒法進行處理,這是就引出了咱們的數據庫,數據庫是屬於C/S架構html
- 數據庫:是一個能夠在一臺機器上獨立工做的,而且能夠給咱們提供高效、便捷的方式對數據進行增刪改查的一種工具。
1、數據庫概述:
-
什麼是數據(Date):
-
描述事物的符號記錄稱爲數據,描述事物的符號既能夠是數字,也能夠是文字、圖片,圖像、聲音、語言等,數據由多種表現形式,它們均可以通過數字化後存入計算機。
在計算機中描述一個事物,就須要抽取這一事物的典型特徵,組成一條記錄,就至關於文件裏的一行內容,如:
xiaomage,male,18,1999,山東,計算機系,2017,oldboy
-
單純的一條記錄並無任何意義,若是咱們按逗號做爲分隔,依次定義各個字段的意思,至關於定義表的標題node
這樣咱們就能很清晰的看清楚一條命令所描述的信息了mysql
-
-
什麼是數據庫(DateBase,簡稱DB):linux
- 數據庫即存放數據的倉庫,只不過這個倉庫是在計算機存儲設備上,並且數據是按必定的格式存放的,過去人們將數據存放在文件櫃裏,如今數據量龐大,已經再也不適用;數據庫是長期存放在計算機內、有組織、可共享的數據便可。;數據庫中的數據按必定的數據模型組織、描述和儲存,具備較小的冗餘度、較高的數據獨立性和易擴展性,並可爲各類 用戶共享。
-
什麼是數據庫管理系統(DateBase Management System 簡稱DBMS):redis
-
在瞭解了Data與DB的概念後,如何科學地組織和存儲數據,如何高效獲取和維護數據成了關鍵,這就用到了一個系統軟件---數據庫管理系統,實際上是一個軟件sql
如MySQL、Oracle、SQLite、Access、MS SQL Servermongodb
mysql:主要用於大型門戶,例如搜狗、新浪等,它主要的優點就是開放源代碼,由於開放源代碼這個數據庫是免費的,他如今是甲骨文公司的產品。 oracle: 主要用於銀行、鐵路、飛機場等。該數據庫功能強大,軟件費用高。也是甲骨文公司的產品。 sql server:是微軟公司的產品,主要應用於大中型企業,如聯想、方正等。數據庫
數據庫管理軟件分兩大類:
關係型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql語句通用
非關係型:mongodb,redis,memcache
能夠簡單的理解爲:
關係型數據庫須要有表結構
非關係型數據庫是key-value存儲的,沒有表結構
-
-
數據庫服務器:編程
- 服務器:本質就是一臺電腦;當一臺計算機上安裝了某個軟件可以對外提供服務的時候,那麼這臺機器就成爲服務器
- 數據庫服務器:這臺機器上安裝的服務是一個數據庫的server端的時候,咱們就獲得了一臺數據庫服務器
-
什麼是數據庫管理員(DateBase Administrator,簡稱:DBA)windows
- 也就是管理數據庫的工做人員,每每涉及到數據庫的結構安全和規劃。
-
數據庫的優點
1.程序穩定性 :這樣任意一臺服務所在的機器崩潰了都不會影響數據和另外的服務。
2.數據一致性 :全部的數據都存儲在一塊兒,全部的程序操做的數據都是統一的,就不會出現數據不一致的現象
3.併發 :數據庫能夠良好的支持併發,全部的程序操做數據庫都是經過網絡,而數據庫自己支持併發的網絡操做,不須要咱們本身寫socket
4.效率 :使用數據庫對數據進行增刪改查的效率要高出咱們本身處理文件不少
-
數據庫的特色
數據庫系統的特色:
1 數據結構化(如上圖odboy_stu)
2 數據共享,冗餘度低,易擴充
3 數據獨立性高
4 數據由DBMS統一管理和控制
a:數據的安全性保護
b:數據的完整性檢查
c:併發控制
d:數據庫恢復
2、Mysql數據庫的安裝和配置
須要注意的是,安裝的時候若是遇到下列狀況:
緣由是MRVCR.dll沒法找到,是系統缺乏插件,能夠下載插件安裝便可
若是實在找不到緣由,或則各類沒法解決的問題,那麼能夠在網上下載VC運行庫,這個庫爲咱們虛擬了一個Mysql管理系統,咱們能夠直接用。
# mysqld install
# mysqld.exe install 要安裝mysql的server端
# net start mysql 啓動server端
# mysql -uroot -p 啓動client端
# 重啓server
# net stop mysql
# net start mysql
3、Mysql配置和登錄
剛安裝的mysql後:
-
一、打開終端,使用root登錄,輸入:mysql -uroot -p;回車,最開始是沒有密碼的直接回車就行。
-
查看當前用戶
select user(); #查看當前用戶
-
退出
exit # 也能夠用\q quit退出
-
-
管理員爲root(擁有最高權限,管理員帳號),密碼爲空,以無密碼的方式登陸了管理員帳號,是很是危險的一件事情,因此要爲管理員帳號設置密碼
-
設置root用戶密碼
mysql> set password = password('root'); # 給當前數據庫設置密碼,這是在mysql內部設置
windonws> mysqladmin -uroot -p password "123" #設置初始密碼 因爲原密碼爲空,所以-p能夠不用
-
修改root用戶密碼
windows> mysqladmin -uroot -p"123" password "456" #講舊密碼修改成456
忘記mysql密碼:
1、以管理員身份打開cmd;
2、net stop mysql 關掉mysql
3、執行下列命令跳過受權表:
C:\WINDOWS\system32> mysqld --skip-grant-tables #執行完後,窗口會掛起,先別關閉
4、新開一個窗口登錄:mysql -uroot # 此時會跳過密碼直接登錄
5、使用select user() # 查看當前用戶
6、如今能夠任意的更改密碼,執行下面的代碼,講密碼設置爲空:
update mysql.user set authentication_string = password('') where user = 'root';
7、刷新權限,執行下面的命令:
flush privileges;
8、關閉全部窗口,(退出mysql,關閉掛起的窗口);新開個窗口讓用戶加載權限,以管理員身份進入cmd,查看 當前mysql進程
tasklist |findstr mysql #查看當前mysql的進程
9、殺死當前的進程,(固然也能夠在任務管理器中關閉)
taskkill /F /PID 6052 # 殺死當前的進程pid
10、重啓mysql,使用新密碼登錄
-
-
統一字符編碼:有時mysql的配置默認字符編碼不是utf8,此時就要咱們手動切換
-
進入mysql界面:執行\s,能夠查看相應的配置信息
-
-
咱們在my.ini文件中配置信息,直接保存,重啓便可(在MySQL文件中默認有個ini文件,可是裏面是一些提示信息,就是指導咱們本身寫)
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
#設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=D:\mysql\mysql-5.6.43-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=D:\mysql\mysql-5.6.43-winx64\data
# 容許最大鏈接數
max_connections=200
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 建立新表時將使用的默認存儲引擎
default-storage-engine=INNODB
-
-
4、基本的使用方法
#進入mysql客戶端
$mysql
mysql> select user(); #查看當前用戶
mysql> exit # 也能夠用\q quit退出
# 默認用戶登錄以後並無實際操做的權限
# 須要使用管理員root用戶登錄
$ mysql -uroot -p # mysql5.6默認是沒有密碼的
#遇到password直接按回車鍵
mysql> set password = password('root'); # 給當前數據庫設置密碼
# 建立帳號
mysql> create user 'eva'@'192.168.10.%' IDENTIFIED BY '123'; # 指示網段 相應網段的人能夠訪問,且給用戶配置了密碼
mysql> create user 'eva'@'192.168.10.5' # 指示某機器能夠鏈接
mysql> create user 'eva'@'%' #指示全部機器均可以鏈接
mysql> show grants for 'eva'@'192.168.10.5';查看某個用戶的權限
# 遠程登錄
$ mysql -uroot -p123 -h 192.168.10.3 -p
# 給帳號受權
mysql> grant all on *.* to 'eva'@'%';
mysql> flush privileges; # 刷新使受權當即生效
# 建立帳號並受權
mysql> grant all on *.* to 'eva'@'%' identified by '123'
# grant 權利 on 數據庫名.表名 to '用戶名'@'ip地址' identified by '123'; 建立某個密碼的用戶有對某文件的某權力
#(權利 : SELECT INSERT UPDATE DELETE ALL)
# select * from performance_schema.users; #能夠查看管理員用戶
設想一下,當咱們想要從文件中存取數據的時候,是一個很是繁瑣的過程,主要是由於文件中全部的內容對咱們來講是連續的,沒有規則的。若是咱們將數據按照規則存在一個文件中,在設計一種規則能夠拼湊組合成咱們須要的操做,並經過這些指示在文件中存取數據,那麼操做數據是否是可以變得更加簡單快速呢?這串規則就被咱們成爲SQL。
SQL : 結構化查詢語言(Structured Query Language)簡稱SQL(發音:/ˈes kjuː ˈel/ "S-Q-L"),是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統
SQL語言主要用於存取數據、查詢數據、更新數據和管理關係數據庫系統,SQL語言由IBM開發。SQL語言分爲3種類型:
一、DDL語句
數據庫定義語言: 數據庫、表、視圖、索引、存儲過程,例如CREATE DROP ALTER
二、DML語句
數據庫操縱語言: 插入數據INSERT、刪除數據DELETE、更新數據UPDATE、查詢數據SELECT
三、DCL語句
數據庫控制語言: 例如控制用戶的訪問權限GRANT、REVOKE
-
操做文件夾(庫)
-
增 : create database 文件名; (create database db1 charset utf8; #這裏能夠指定編碼)
-
查 :
-
查看當前建立的數據庫
show create database db1; #也就是查看對應庫裏的詳細信息
-
查看全部的數據庫mysql
show databases;
-
-
改:
alter database db1 charset gbk;
#這裏修改的是文件的屬性,如編碼等 -
刪:
drop database db1;
#刪除某個文件(庫)
-
-
操做文件(表):
-
切換文件夾:
use db1; #切換文件夾
select database(); #查看當前所在文件夾
-
增:create table t1(id int,name char); # 建立一個文件,裏面具備id ;name 屬性且帶有相應的字節類型,還能夠指定長度如:char(6)……
-
查:這裏是查找文件夾裏面文件,當咱們進入文件後,須要查看裏省得內容時,使用show tables,查看詳細信息是desc 表名。
#查看當前的這張t1表
show create table t1;
# 查看全部的表
show tables;
# 查看錶的詳細信息 ,有什麼屬性,什麼字段
desc t1;
-
改: 修改文件內某個表內屬性
# modify修改的意思
alter table t1 modify name char(6);
# 改變name爲大寫的NAME
alter table t1 change name NAME char(7);
-
刪除表:
drop table t1;
-
-
操做具體內容(表內)
-
增:對錶內每一個屬性添加值
# 插入3條數據,規定id,name數據,一次能夠插入多個,插入一條使用value
insert t1(id,name) values(1,"mjj01"),(2,"mjj02"),(3,"mjj03");
#使用set
insert into t1 set id=4,name='wang';
-
查:查找表內的某些字段,返回主目錄 >use mysql
#只顯示id字段:
select id from db1.t1;
#執行顯示2個字段
select id,name from db1.t1;<br>
#查詢全部字段
select * from db1.t1;
-
-
改:經過條件修改數據
#修改表中的全部行,name等於zhang。很是危險,當心使用
update db1.t1 set name='zhang';
#修改id爲2的行,name等於alex。推薦使用!
update db1.t1 set name='alex' where id=2;
-
刪:刪除某個數據
xxxxxxxxxx
#清空表<br>delete from t1;<br>#刪除表
delete from t1 where id=2;