mySQL 黑窗口運行命令


‘mysql’不是內部或外部命令,也不是可運行的程序或批處理文件。

解決:

  1.     配置壞境變量,指定mysql\bin目錄
  2.     第次進入到mysql\bin目錄,再運行mysql

 如何鏈接服務器

服務器地址(可用IP域名):端口(3306) 用戶名   密碼

Mysql -h localhost -u UserName -p password

    如: mysql -h localhost -u root -p 

           mysql -h localhost -u root -p 123456

           mysql -hlocalhost -uroot -p123456

-h如果不寫,則默認連localhost

    如:mysql  -u root -p

 


 顯示數據庫 :show databases

information_schema 數據庫的一些基本信息;mysql 關於用戶的一些信息;performace_schema 性能優化的一些基本信息。

新建數據庫:create database myDatabase chartset utf8

選中某個數據庫:use myDatabase

  •  刪除一個數據庫:drop database test;  mysql的數據庫名字不能修改
  • 顯示表:show tables;
  • 新建一個表:create table class (ID int,name varchar(20),age tinyint(M),area varchar(20));
  • 刪除一個表:drop database table1;
  • 修改一個表的名字:rename table oldName to newName; 
  • 顯示表的所有字段:desc tableName;

\c退出當前語句

解決字符集問題:默認建表一般用utf-8,而我們在windows下窗口是GBK的,因些需要聲音字符集:set names gbk

 給表插入一條數據:如 insert into msg (id,title,content) values (1,'標題","內容“);


 整型 

  • tinyint:默認是帶符號位的(-128 到127);
  • tinyint unsigned: 不帶符號位(0到255);
  • tinyint(M): 在0填充的時候才有意義, 只有在zerofill設置時才有意義,不影響數據泛微;
  • tinyint zerofill:0填充,默認無符號;
  • defalut:默認值;
  • not null:不能為空;

如:alert table msg add ages     tinyint(5)    zerofill    not null    default 0;

      creat table  msg (id tinyint(4) zerofill not null default 0,title varchar(20),content varchar(20)) charset utf8;


 浮點數

  • float(M,D):M代到總位數,D 代表小數位;
  • decimal(M,D):M代到總位數,D 代表小數位;decimal的精確度更高

如:float(4,2) 表示(99.99到 -99.99),float(4,2)unsigned 表示(0 到99.99);


 字符型 char、vachar、text

  • char(M):指定長M,
  • varchar(M):是變長M,最長為M;速度上char更快些;
  • text:文本類型,可以存比較大的文本段,搜索速度稍慢。text不用加時默認值,加了也沒用。

 日期時間類型

  • year 年;(1901-2155年),如果輸入2位,‘00-69’表示2000-2069,‘70-99’表示1970-1999
  • data類型:日期類型1000-01-01 到9999-12-31
  • time類型:典型格式 hh:mm:ss,日期類型范圍:“-838:59:59”到“+838:59:59”
  • datatime類型:yyyy-MM-DD hh:mm:ss,范圍:1000-01-01 00:00:00到9999-12-31 23:59:59
  • 時間戳:是1970-01-01:00:00:00到當前的秒數。一般存注冊時間,商品發布時間等,羡慕不是用datetime存儲,而是用時間戳。

注意:

在開發中,很少用日期時間類型來表示一個需要的精確到秒的列

原因:日期時間類型能精確到秒,而且 方便查看,但是不方便計算。用int存時間戳更方便計算

枚舉類型enum(’男‘,’女‘);

id primary key auto_increment :主鍵、自動增長;


 左鏈接

select * from tba left join tbb on tba.catId=tbb.catId;左鏈接以左邊表為主表,當不能在tbb表里面匹配到相關信息時,顯示NULL.


 UNION

將兩個表連接起來,要求連接的兩個表列數一樣,每列的類型一致。

select * from ta union select * from tb 


 視圖

視圖是表的查詢結果,自然表的數據改變了,影響視圖結果;

視圖改變了,影響表,但是視圖並不總是能增刪改,只有當視圖的數據與表的數據一一對應時才可以更改

注:插入視圖時,視圖必須包含表中沒有默認值的列

  • 創建:create  algorithm= temptable view 視圖名 as select 語句;
  • 使用: select * from 視圖名;
  • 刪除:drop view 視圖名

視圖的 algorithm=merge/temptable/undefined

  •  merge:當引用視圖時,引用視圖的語句與定義視圖的語句合並。merge意味着視圖只是一個規則,語句規則,當查詢視圖時,把查詢視圖的語句與創建時的語句where子句等合並,分析形成一條select語句。
  • templtable:當引用視圖時,根據視圖的創建語句建立一個臨時表
  • undefined:未定義,自動、讓系統幫你選。

字符集和校對集

某一個級別沒有指定字符集則集成上一級的字符集。

  • 服務器,我給你發送的數據是什么編碼的:set character_set_client=gbk;
  • 轉換器,轉換成什么編碼:set character_set_connection=gbk;
  • 查詢的結果是用什么編碼:set character_set_results=gbk;

注:如果以上3者都為字符集N,則可以簡寫為set names N
出現亂碼的情況:client聲明與事實不符,results與客戶端字符集不符的時候

校對集 collation 

create table tem(name varchar(10) ) charset utf8 collate utf8_bin;  指字符集的排序規則,一種字符集可以有一個或者多個排序規則。

注:聲明的校對集必須是字符集合法的校對集

 


 觸發器

四要素:監視地點、監視事件、觸發時間、觸發事件。

創建:create trigger triggerName after|before  insert|update|delete on 表名

           for each row       #行觸發器,mysql里面是固定的

           begin   sql語句    end

注:    delimiter $      將結束符由‘;’改成‘$’符,修改語句不用加結束符

刪除: drop trigger  triggerName;

查看: show triggers ;

  •  對於insert而言,新增的行用 new來表示,行中每一列的值用new.列名來表示。
  •  對於delete而言,刪除的行用old來表示,行中的每一列的值用old.列名來表示。
  •  對於update而言,修改的行,修改前的用old來表示,修改后的值用new來表示。
delimiter $    //更改結束符為$,不用加結束符

create trigger tg1 after insert on goods      for each row

begin

update tb2 set num=num-1 where tb2.id=new.id;

end $

before例子:

create trigger tg2 befor insert on goods for each row

begin 

     if new.num >5  then

     set  new.much=5

     end if ;

     update g set num =num-new.muchh where id=new.gid;

end$

  

 


事務

事務指:一組操作,要么都成功執行,要么都不執行

事物的ACID特性:

  • 原子性(atomicity):原子意為最小的粒子,或者說不能再分的事物。數據庫事務的不可再分的原則即為原子性;組成事務的所有查詢必須:要么全部執行,要么全部取消(就像上面的銀行例子)。
  • 一致性(consistency):指數據的規則,在事務前/后應保持一致。
  • 隔離性(Isolation):簡單點說,某個事務的操作對其他事務不可見的。
  • 持久性(Durability):當事務完成后,其影響應該保留下來,不能撤消。

存儲引擎的種類和特點

顯示所有的存儲引擎:show engines;

指定存儲引擎:create table tb (id int primary key auto_increment ) engine=innodb|myisam charset utf8;

 

 支持事務案例的數據庫引擎才有事務

開啟事務:start transaction ;  注意:兩個start transaction,前面的那個就隱式的提交了

sql語句......

commit提交、 rollback回滾   //當一個事務commit\rollback就結束 了


 備份與恢復

增量備份、整體備份

系統自帶的備份工具:mysqldump.exe,可以導出庫也可以導出表

  • 導出一個庫下面的所有表:mysqldump -u 用戶名 -p 密碼  庫名> 地址/備份的文件名稱 
  • 備份多個庫的方法:mysqldump -u 用戶名 -p 密碼  庫名1 庫名2  庫名3 > 地址/備份的文件名稱 

如:mysqldump -uroot -p111111 mydatabase goods > D:\\goods.sql    // 導出mydatabase數據庫下的goods表,會在D盤下生成一個SQL文件

  •  執行恢復:source    D:\\mydatabase.sql;
  • 對於表級的備份:use 庫名  --------source 備份的文件地址

 


 

索引

  • 好處:加快了查詢速度;
  • 壞處:降低了增、刪、改的速度,增大了表的文件大小(索引文件甚至可能比數據文件還大)。

注意:大數據處理辦法:先去掉索引,再導入,最后再統一加索引。

  1. 不能過度索引;
  2. 索引條件列(where 后面最頻繁的條件比較適宜索引)
  3. 索引散列值,過於集中的值不要索引;如性別加索引,意義不大;

索引的類型:

  • 普通索引(index):僅僅是加快查詢速度;
  • 主鍵索引(primary key):不能重復;主鍵必唯一,唯一索引不一定是主鍵,一張表只能有一個主鍵,可以有一個或多個唯一索引
  • 唯一索引(unique):行上的值不能重復;
  • 全文索引(fulltext)

查看索引:

        show index from 表名;

        show index from 表名 \G         //用另一種格式顯示

建立索引:

        alter table 表名   add index|unique|fulltext【索引名】(列名);

         alter table 表名   add primary key   (列名);   //添加主鍵索引

 刪除索引:

        alter table  表名  drop index 索引名;

        alter table 表名 drop primary  key; //刪除主鍵

查詢索引:

        select * from member where match (pro) against ("china");

        

        查詢匹配度  select  id,email,   match (pro ) against ("china") from member;

        

        注:全文索引不針對非常頻繁的詞做索引,全文索引對中文意義不大


 

存儲過程

     概念類似於函數,就是把一段代碼封裝起來,在封裝語句里面,可以用if/else,case,while等控制結構,可以進行sql編程。

  • 查看:show procedure status 或 show procedure status \G;
  • 刪除:drop procedure 存儲過程名字 ;
  • 使用:call 存儲過程名字;
delimiter $
create procedure p(n int)
    begin
declare i int;
declare s int;
set i=1;
set s=0;
while i<=n do
set s=s+i;
set i=i+i;
end while;
select s;
end$
call p(5)$ //調用

 

 


免責聲明!

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



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