‘mysql’不是內部或外部命令,也不是可運行的程序或批處理文件。mysql
解決:sql
如何連接服務器數據庫
服務器地址(可用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
\c退出當前語句
解決字符集問題:默認建表通常用utf-8,而咱們在windows下窗口是GBK的,因些須要聲音字符集:set names gbk;
給表插入一條數據:如 insert into msg (id,title,content) values (1,'標題","內容「);
整型
如: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(4,2) 表示(99.99到 -99.99),float(4,2)unsigned 表示(0 到99.99);
字符型 char、vachar、text
日期時間類型
注意:
在開發中,不多用日期時間類型來表示一個須要的精確到秒的列
緣由:日期時間類型能精確到秒,並且 方便查看,可是不方便計算。用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
視圖
視圖是表的查詢結果,天然表的數據改變了,影響視圖結果;
視圖改變了,影響表,可是視圖並不老是能增刪改,只有當視圖的數據與表的數據一一對應時才能夠更改
注:插入視圖時,視圖必須包含表中沒有默認值的列
視圖的 algorithm=merge/temptable/undefined
字符集和校對集
某一個級別沒有指定字符集則集成上一級的字符集。
注:若是以上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 ;
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特性:
存儲引擎的種類和特色
顯示全部的存儲引擎: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 -uroot -p111111 mydatabase goods > D:\\goods.sql // 導出mydatabase數據庫下的goods表,會在D盤下生成一個SQL文件
索引
注意:大數據處理辦法:先去掉索引,再導入,最後再統一加索引。
索引的類型:
查看索引:
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編程。
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)$ //調用