python學習---9.11---數據庫mysql

1、認識數據庫java

1.什麼是mysql?python

  數據庫mysql

  永久存儲數據的倉庫linux

  

1.管理不方便
2.文件操做效率問題
3.一個程序不太可能僅運行在同一臺電腦上
提升計算機性能的方式
    1.垂直擴展  指的是更換性能更好的硬件
    2.水平擴展  指的就是添加更多的計算機  把任務分配給每一臺 (分佈式計算)
        分佈式計算 的好處
        1.其中某一臺掛了 不會致使整個系統癱瘓  穩定性高
        2.理論上性能能夠無限擴展


分佈式計算其實也是總體 

數據須要被共享  這就須要socket技術
共享就存在競爭問題   加鎖處理
文件存取效率問題 

數據庫 本質上就是一套軟件 由服務器端 和 客戶端組成  C/S  B/S

早些年 沒有數據庫的時候  程序員要想實現功能 得本身寫一套socket 並解決上述問題 
因而就有了數據庫軟件公司 
問題

 

目前常見的數據庫

    關係型數據庫
        數據與數據之間能夠創建關聯關係(用戶數據和購買信息)
    SQLServer 
        僅支持windows
    MySQL
        免費 開源 性能也不差   mysql 前後被sun  和 oracle收購 
        mariaDB  mysql的創始人 擔心mysql的將來  因而推出mariaDB  使用起來徹底一致 

    
    Oracle
        目前最牛逼的數據庫 收費很高 
        

    DB2
        IMB 收費的  通常與計算機綁定銷售
    

    非關係型數據庫
        速度賊快
        key value 存取
    MongoDB
    redis
    memcache

 

 

 

    數據 用於記錄某事物狀態的符號 或 別的形式  數字 音頻
        age = 20
    記錄 就是一個事物的典型特徵的組合  在文件中體現爲一行文本
        yyh,20,man,180
    表  就是一個一個的文件

    庫  就是一個文件夾

    數據庫管理系統(DBMS) 就是一個軟件用來管理庫的  C/S程序

    數據庫服務器  運行着DBMS的計算機稱爲數據庫服務器
數據庫相關概念

 

2、安裝mysql程序員

  

1.下載安裝包
下載的時候提供了帶界⾯的和不帶界⾯的 ⽤哪一個呢?
你到公司後你想一想服務器是什麼系統?
linux 有界⾯嗎? 因此咱們安裝不帶界⾯的
2.mysql⽬錄解析
bin
mysqld
mysql
data
⽂件夾 庫
my-default.ini
3.啓動mysql服務器
cd ...... mysqld
這是⼀個socket程序 這時候至關於作了什麼事?
啓動服務器socket 並監聽端⼝ 默認綁定當前ip 端⼝默認3306
接下來作什麼呢?
啓動客戶端,
運⾏mysql 注意他是⼀個socket程序 要鏈接服務器須要什麼?
ip 和 端⼝
mysql -h ip -P port -uroot -p 密碼默認爲空
看到歡迎界⾯了是吧 說明socket連接成功了
這個命令提示符本質是什麼?
就是⼀個input 對不對
接受⼀條指令而後怎麼辦?
發送個服務器
服務器接收到以後呢?
解析指令 取出你要的數據在send給客戶端
那問題來了 指令確定不能隨便寫,不認服務器不認識,⼤家的有套規範
就是sql 
show databases;
對⽐data⽂件夾
那在講命令以前呢 你想一想 咱們每次要使⽤mysql都得先cd到這個⽬錄中
⾮常麻煩
怎麼解決呢?
4.加到環境變量
命令總結:
啓動服務器
mysqld
啓動客戶端
mysql -h -P -u -p
簡寫 mysql -u -p
關閉服務器
tasklist | findstr mysqld
taskkill /F /PID 8372
5.服務器的啓動和關閉都須要執⾏命令 仍是不夠⽅便 怎麼辦呢?
將mysql註冊到系統服務中
終端執⾏ mysqld --install
運⾏->services.msc 查看系統服務
三.修改管理員密
安裝過程

 

 

3、修改管理員密碼redis

 

如今密碼默認爲空 這樣安全嗎?
不安全 萬⼀誰過來把你數據刪了 怎麼辦? 改密碼
怎麼改:
mysqladmin -uroot -p舊密碼 password "123'
警告 不要緊
破解密碼:
萬⼀你不⼩⼼把密碼忘記了 怎麼辦?不可能卸載重裝吧
因此咱們下來說的是如何破解密碼,如何破解呢?
那你就要想 這個密碼它確定要找地⽅存儲起來 ,那存客戶端仍是服務器呢?
服務器 ,那存在內存仍是硬盤呢? 必然是硬盤,既然如此,⼀定有⼀⽂件⽤於⼲嘛
? 存放密碼信息
那你有沒有什麼思路?
⽅式1:刪⽂件
沒問題 簡單粗暴 可是,這個⽂件⾥不僅有你的帳號信息 還有別⼈帳號數據 還
有受權相關的數據
因此你最好不要這麼⼲!
那你在思考⼀下,服務器驗證⽤戶的本質是什麼,是否是讀取⼀個⽂件的數據來
和你輸⼊的數據進⾏對⽐,
那你可不能夠這樣⼦ 我告訴我服務器說你不要去讀那個受權⽂件,能夠!
⽅式2: 跳過受權表 進⼊系統修改受權表
跳過這個操做是服務器相關的操做因此 咱的先關掉服務器從新開 在從新開的
時候來告訴它
1.停⽌服務
2.啓動服務器並添加參數
mysqld --skip-grant-tables
3.使⽤客戶端登陸服務器 執⾏修改命令 此時不須要輸⼊密碼
update mysql.user set password = password("123123") where
user="root" and host="localhost"
刷新權限
flush privileges
命令⾏中重啓服務器驗證新密碼
View Code

 

 

4、編碼設置sql

  

來看⼀下 當前服務器的設置信息
使⽤客戶端執⾏\s
來看⼀下 這邊latin1 gbk 什麼意思 是否是就是編碼?
那這樣有沒有什麼問題? 服務器是拉丁 客戶端是 GBK
亂碼 如何解決亂碼?
保證編碼⽅式⼀致!
如何設置呢?
在mysql安裝⽬錄下有個my_default.ini 他就是配置⽂件,可是他不是正在使⽤
的
⽽是⼀個模板⽂件,咱們若是要⾃⼰編寫配置⽂件,須要⾃⼰複製⼀個叫作
my.ini的⽂件來編寫
編寫格式? 你已經學習過了
configpaser 回顧⼀下 conf⽂件包含什麼?
分區 和 選項
[section]
option = value
要設置客戶端的內容就寫在mysql分區
要設置服務器的內容就寫在mysqld分區下
原理:mysql在啓動的時候會⾃動到安裝⽬錄下找my.ini⽂件 找到命令對應的標
題加載⾥⾯的設置項
在思考⼀下 咱們在登陸的時候是否是每次都須要輸⼊⽤戶信息 麻不麻煩?
麻煩 那怎麼解決?
你看在mysql -uroot -p123 中 -u -p是否是參數 
是在你執⾏命令是⼿動傳的參數,那既然是參數可不能夠定義到配置⽂件中呢?
能夠! 來看看如何定義
[mysql]
user = "root"
pasword = "123"
下⾯咱們來測試⼀下看⾏不⾏?
ok 報錯了 說明他確實讀取了配置⽂件 報錯緣由 名字寫錯了
思考
好如今我問你: 你如今這個配置⽂件是給誰⽤的 是客戶端仍是服務端?
便是客戶端也是服務器端 由於咱們如今客戶端和服務器端在同⼀臺電腦上
正常狀況下 咱們不會這麼⼲ 你客戶端想要⽤你就在客戶端安裝⽬錄中建⼀個
my.ini
只寫客戶端相關的內容
一樣服務器要⽤就在服務器端建 只寫服務器相關內容
最終結果
[mysqld]
character-set-server = utf-8
collation-server = utf-8_general_ci
[mysql]
default-character-set = utf-8
[client]
default-character-set = utf-8
思考?
client是什麼意思呢?
就是客戶端的意思
和mysql有什麼區別?
mysql也是客戶端的其中⼀種
除了它 還有python客戶端 java客戶端等等
client是全部客戶端的總稱
若是都有的話 同時設置了兩個的話 哪一個⽣效呢?
固然是mysql 由於他指名道姓說了mysql這個程序
驗證⼀下
將client中加⼀個不存在的⽤戶名
user = xxxxxxxxx
看看是否能成功登錄
刪除mysql分區 再次驗證
注意:修改了mysqld配置須要重啓服務器
View Code

 

 

5、基本sql語句數據庫

  1.庫相關windows

  增安全

    create database mydb charset utf8;

  查

    show databases;

     show creat databases mydb;

  改

    alter database mydb charset gbk

  刪

    drop database mydb;

  2.表相關

  

    切換文件夾(選擇數據庫)

    use mydb;

    create table t1(id int,name,char)

  查

    show tables;

    show create table t1;

    desc t1;

  改

    改字段

    alter table 表名 add | modify | drop | change

      add 跟列名和類型

      modify 跟列名和類型

      drop 跟列名

      change 跟 舊列名 新列名 類型

    改字符編碼

    alter table 表名 default character 類型

    更名稱

    rename table  tname1 to tname2

  刪

    drop table 表名

  3.記錄相關

  

    insert into tablename values(data,...),(data)

  查 

    select id,name from t1;  列名可用*號表示通配符

  改

    update 表名 set 列名 =值 where 條件;可同時修稿多個字段

    用逗號隔開 列名=值,列名=值....

  刪

    delete from 表名 where 條件;

    沒有條件則刪除全部;

    truncate table t1;

    重建表,清空全部數據;

相關文章
相關標籤/搜索