基本的mysql語句

數據庫概念

那Mysql能幹嗎呢?它就是一款軟件,安裝在任何一臺計算機或者服務器上的時候,只要我告訴它建立一個文件,新增一個數據,刪除一個數據它就能幫我去作想要的操做java

那咱們暫且能不能理解爲mysql就是用來幫咱們操做文件的!python

MySQL:用於管理文件的一個軟件(兩個程序)mysql

​ -服務端軟件c++

​ -socket服務端redis

​ -本地文件操做sql

​ -解析指令mongodb

​ -客戶端軟件數據庫

​ -socket客戶端編程

​ -發送指令

​ -解析指令

客戶端能夠有不少個,python,java,php,c++均可以編程一個客戶端,用代碼指定ip port連接上服務端便可操做

那麼問題來了,不一樣的客戶端練我一個服務端,語言不相同沒法實現交流。因此應該有共同的語言才行>>>解析指令(sql語句)

技能:

​ -安裝 服務端和客戶端

​ -連接

​ -學習sql語句規則,指定服務端作任何操做

mysql只是一種可以幫助咱們管理數據的軟件,還有其餘相似的軟件也是經過發送指令來幫你管理數據庫

其餘相似軟件:

​ 關係型數據庫:sqlite,db2,oracle,access,sql server,MySQl(必需要表格存儲,須要創建表格(k能夠就是user, v就是能夠是多類型的,好比說是大列表,大字典,大字典中又大字典等))

​ 非關係型數據庫:mongodb,redis (數據存儲方式k,v鍵值對的形式)

關係型:彼此之間有約束或者有聯繫

總結:mysql就是幫助咱們遠程在文件上作相應操做的

MySQL的安裝

mysqld服務端

mysql客戶端

軟件目錄結構初識

終端最好以管理員身份運行

切換到mysql目錄下啓動mysqld服務端(阻塞,監聽地址,固定的ip和端口)

cd D:\mysql56
D:

新開cmd窗口啓動mysql客戶端

連接mysql:

mysql -h 127.0.0.1 -P 3306 -uroot -p 密碼不輸,直接回車

若是是在本機登錄mysqld服務端,能夠簡寫爲mysql -uroot -p

客戶端服務端請求流程分析

show databases詮釋文件夾和庫概念

環節變量配置

系統服務製做(製做以前必定要先把mysql關閉)

# 查看mysqld進程
tasklist |findstr mysqld
# 殺死mysqld進程
taskkill /F /PID 'PID號'

將mysqld這款軟件作成系統服務軟件

mysqld --install

查看計算機當前運行程序數

services.msc

修改密碼與破解管理員密碼

mysqladmin -uroot -p password "123"

# 第一次修改完密碼之後,以後還修改密碼須要
mysqladmin -uroot -p123 password "123456"
# 爲了後續調試方便,這裏把密碼設爲空值
mysqladmin -uroot -p123 password "新密碼"

破解密碼

  • 先關閉mysqld服務端

  • 以跳過受權表的方式在命令行中啓動mysqld服務端

    mysqld --skip-grant-tables
  • 客戶端直接以無密碼的方式登錄root用戶修改密碼

    mysql -uroot -p
  • 修改管理員密碼

    update mysql.user set password=password("123") where user="root" and host="localhost";
    flush privileges;  # 刷新權限
  • 命令行殺死mysqld服務

    tasklist |findstr mysqld
    taskkill \F \PID 'PID'
  • 服務管理正常啓動mysqld

統一字符編碼

mysql命令:"\s" 查看編碼

修改配置文件,執行時會自動查找my.ini文件

mysql不輸用戶名和密碼,會默認以遊客模式登錄,很差!

# my.ini配置文件特色
[mysql]
#終端輸入mysql打頭的命令就會加載下面的配置
username='root'  # 演示確實加載改文件,可是username叫user才正確
password = '123'
[mysqld]

通用配置

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

mac系統

finder中切換到默認安裝路徑下/usr/local/mysql

下面就是一大堆文件目錄

配置文件是my.cnf,沒有int等windows上的配置文件

基本sql語句

對數據的增刪改查

sql書寫錯誤,只要沒加分號,能夠加\c使前面的sql語句失效

  • 針對文件夾的(庫)

    # 增
    create database db1 charset utf8;
    # 改
    alter database db1 charset gbk;
    # 查
    show databases;
    show create database db1;
    # 刪
    drop database db1;
  • 針對文件的(表)

    文件首先須要在文件夾下面,因此在操做文件以前,應該先肯定操做的是哪一個文件夾下面的文件

    # 切換文件夾
    use db1;
    select database();  # 查看當前所在的庫
    # 增
    create table t1(id int,name char);  # 建立出來的多是多個文件,解耦管理
    # 改   
    alter table t1 modify name char(16);
    # 查
    show tables;
    show create table t1;     # 查看錶的詳細信息
    describe t1; == desc t1;  # 查看錶結構
    select name from userinfo where name='egon' or id=3
    # 刪
    drop table t1;
  • 針對(記錄)

    # 增
    insert into db1.t1 values (1,'egon'),(2,'kevin'),(3,'jason');  # into可加可不加,db1能夠不指定,默認就是在當前庫下
    # 改
    update db1.t1 set name='DSB' where id > 1;
    update db1.t1 set name='DSB' where id = 2 or id = 3;
    # 查
    select id,name from db1.t1;  # db1可不指定,默認當前庫下
    select * from t1;
    select name from t1
    
    # 刪
    delete from db1.t1 where id >3;
    delete from db1.t1 where name='egon'  # 這裏注意若是少了一個引號,後面不管敲什麼都沒有用了須要將引號補全

庫相關操做參考egon博客便可

表操做

存儲引擎

支持多個客戶端來連,不一樣的編程語言c++,java等,鏈接池就是減緩硬件壓力的,保證數據庫的安全,客戶端接口來了先到鏈接池等着,而後到sql接口,數據管理語言和數據定義語言,存儲過程,視圖,觸發器等,而後到解析器,查詢\事務對象優先級,而後到優化訪問數據順序,而後到緩存和緩衝池,全局和具體引擎的緩存和緩衝地。之前的默認的引擎是myisam,如今就是innodb,innodb數據更安全,支持行鎖表鎖,myisam 查詢數據比innodb快,可是不安全,
show engines;查看引擎,結果中的memory就是根本不會刷入硬盤,都是隻存在內存,斷電就數據就沒了,還有backhole黑洞,往裏面丟什麼數據都沒有了,

文件格式有不少種,對應的軟件也有不少種txt,pdf等

針對不一樣類型的文件,須要對應有不一樣的軟件幫助咱們去操做

# 查看全部的存儲引擎
show engines;

# 查看不一樣存儲引擎存儲表結構文件特色
create table t1(id int)engine=innodb; 會有兩個文件,一個是t1.frm表結構;t1.ibd就是存在的真實的數據
create table t2(id int)engine=myisam;會有三個文件,一個是t2.frm表結構;t2.MYD表示存儲數據,D就是數據的意思,t2.MYI這個I表示index索引,查詢數據根據索引來查
create table t3(id int)engine=blackhole;只有一個表結構,t3.frm
create table t4(id int)engine=memory;只有一個表結構


insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);查看數據的時候沒有了
insert into t4 values(1);重啓服務端,查詢數據的時候也沒了
相關文章
相關標籤/搜索