mySQL 黑窗口運行命令

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

解決:sql

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

 如何連接服務器數據庫

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

Mysql -h localhost -u UserName -p passwordwindows

    如: 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)$ //調用

 

相關文章
相關標籤/搜索