Mysql應用年夜全 從基本到存儲進程。本站提示廣大學習愛好者:(Mysql應用年夜全 從基本到存儲進程)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql應用年夜全 從基本到存儲進程正文
平凡習氣了phpmyadmin等其他對象的的同伙有的基本就不會敕令,假如讓你口試去面試我看你怎樣辦,所以,進修一下照樣異常有效的,也能夠曉得你經由過程GUI對象的時刻對象究竟做了甚麼。Mysql用途很廣,是php最好拍檔,Java中應用也很便利。
我是經由過程Windows 7 操作的,所以翻開運轉-輸出cmd吧,然後輸出mysql -hlocalhost -uroot -p;回車後便可以輸出暗碼了,這裡可以*號顯示,固然也能夠和-p連寫的,這就是登錄mysql。修正暗碼mysqladmin -uroot -pold password new;這裡的root是用戶名 new是你的新暗碼。加入是甚麼敕令,曾有人問我,我說你直接點X好了,不外敕令是quit;加入到cmd情況,加入cmd情況敕令是exit;接著就是操作mysql的增刪改查,常稱為CURD操作。
#登錄數據庫
mysql -hlocalhost -uroot -p;
#修正暗碼
mysqladmin -uroot -pold password new;
#顯示數據庫
show databases;
#顯示數據表
show tables;
#選擇數據庫
use examples;
#創立數據庫並設置編碼utf-8 多說話
create database `examples` default character set utf8 collate utf8_general_ci;
#刪除數據庫
drop database examples;
#創立表
create table test(
id int(10) unsigned zerofill not null auto_increment,
email varchar(40) not null,
ip varchar(15) not null,
state int(10) not null default '-1',
primary key (id)
)engine=InnoDB;
#顯示表構造
describe
#刪除表
drop table test;
#重定名表
alter table test_old rename test_new;
#添加列
alter table test add cn int(4) not null;
#修正列
alter table test change id id1 varchar(10) not null;
#刪除列
alter table test drop cn;
#創立索引
alter table test add index (cn,id);
#刪除索引
alter table test drop index cn
#拔出數據
insert into test (id,email,ip,state) values(2,'
[email protected]','127.0.0.1','0');
#刪除數據
delete from test where id = 1;
#修正數據
update test set id='1',email='
[email protected]' where id=1;
#查數據
select * from test; #取一切數據
select * from test limit 0,2; #取前兩條數據
select * from test email like '%qq%' #查含有qq字符 _表現一個 %表現多個
select * from test order by id asc;#降序desc
select * from test id not in('2','3');#id不含2,3或許去失落not表現含有
select * from test timer between 1 and 10;#數據在1,10之間
#---------------------------表銜接常識------------------------------
#等值銜接又叫內鏈接 inner join 只前往兩個表中銜接字段相等的行
select * from A inner join B on A.id = B.id; #寫法1
select * from A,B where A.id = B.id; #寫法2
select a.id,a.title from A a inner join B b on a.id=b.id and a.id=1;#寫法3 表的暫時稱號
select a.id as ID,a.title as 題目 from A inner join B on A.id=B.id;#添加as字句
#左銜接又叫外銜接 left join 前往左表中一切記載和右表中銜接字段相等的記載
select * from A left join B on A.id = B.id;
select * from A left join (B,C,D) on (B.i1=A.i1 and C.i2=A.i2 and D.i3 = A.i3);#龐雜銜接
#右銜接又叫外銜接 right join 前往右表中一切記載和左表中銜接字段相等的記載
select * from A right join B on A.id = B.id;
#完全內部鏈接 full join 前往閣下表中一切數據
select * from A full join B on A.id = B.id;
#穿插銜接 沒有where字句 前往卡迪爾積
select * from A cross join B;
-------------------------表銜接停止------------------------------------------------------------
-----------------索引創立------------------------------------------------
show index from A #檢查索引
alter table A add primary key(id) #主鍵索引
alter table A add unique(name) #獨一索引
alter table A add index name(name) #通俗索引
alter table A add fulltext(name) #全文索引
alter table A add index name(id,name) #多列索引
#經常使用函數
abs(-1)#相對值
pi()#pi值
sqrt(2)#平方根
mod(-5,3)#取余-2
ceil(10.6)#進位+1 成果11 ceil(10.0)成果10
floor(10.6)#取整 10
round(2.5)#四捨五入到整數 成果3
round(2.5,2)#保存兩位小數 成果2.50
truncate(2.5234,3)#取小數後3位不四捨五入 2.523
sign(-2);#符號函數 前往-1 0照樣0 負數前往1
pow(2,3),exp(2);#2的3次冪 或e的2次冪
log(2),log10(2);#求對數
radians(180),degrees(0.618);#角度弧度轉換
sin(0.5),asin(0.5)#正弦和橫豎弦 相似cos acos tan atan
length('hi')#盤算字符長度
concat('1',1,'hi')#歸並字符串
insert('12345',1,0,'7890');#從開首第1個字符開端到0個停止,調換成後邊字符串,0表現在最前邊拔出
ucase('a'),lcase('A')#轉成年夜寫和小寫
left('abcd',2),right('abcd',2);#前往前兩個字符和後兩個字符
ltrim(' 0 '),rtrim(' 0 '),trim(' 0 ')#刪除空格
replace('1234567890','345678','0');#調換輸入12090
substring('12345',1,2)#取字符 輸入12 1是地位 2是長度
instr('1234','234');#獲得234地位是2
reverse('1234');#反序輸入4321
current()#前往日期
curtime()#前往時光
now()#前往日期時光
month(now())#以後月份 monthname 英文月份
dayname(now())#禮拜英文 dayofweek()1是禮拜天 weekday()1是禮拜二
week(now())#今年第若干周
dayofyear(now()),dayofmonth(now())#明天是今年第若干天 明天是本月第若干天
year(now()),month(now()),day(now()),hour(now()),minute(now()),second(now())#前往年代日 時分秒
time_to_sec(now()),sec_to_time(3600*8);#轉換時光為秒和復原
version()#mysql版本
database()#以後銜接的數據庫 沒無為null
user()#獲得用戶名
md5('a')#加密字符串
ascii('a')#ascii值97
bin(100),hex(100),oct(100)#前往二進制 十六進制 八進制
conv(10001,2,8);#各類進制互相轉換
rand()#生成0到1之間隨機數
sleep(0.02)#暫停秒數
數據庫優化
.開啟緩存,盡可能應用php函數而不是mysql
. explain select 語句可以曉得機能
.一行數據應用 limit 1;
.為搜刮字段重建索引 好比症結字 標簽
.表銜接join包管字段類型雷同而且有其索引
.隨機查詢應用php $r = mysql_query("SELECT count(*) FROM user");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1);
$r = mysql_query("SELECT username FROM user LIMIT $rand, 1");
.防止應用select * 應當應用詳細字段
.每張表都是用id主鍵,而且是unsigned int
.關於取值無限而固定應用enum類型,如性別 國度 名族 部分 狀況
.盡量應用not null ip存儲應用int(4),應用ip 轉化函數ip2long()互相long2ip()
.delete和insert語句會鎖表,所以可以采取分拆語句操作
while(1){操作語句;usleep(2000);}
.選擇准確的存儲引擎;MyISAM合適年夜量查詢 寫操作多用InnoDB支撐事務
#存儲進程
#存儲法式
delimiter #界說存儲法式
create procedure getversion(out params varchar(20)) #params是傳出參數 in傳進 out傳出 inout傳回
begin
select version() into params; #版本信息賦值params
end
call getversion(@a); #挪用存儲進程
select @a;
delimiter #界說存儲函數
create function display(w varchar(20)) returns varchar(20)
begin
return concat('hello',w);
end
select display('world');
drop procedure if exists spName; #刪除一個存儲進程
alter function spName [];#修正一個存儲進程
show create procedure spName;#顯示存儲進程信息
declare varName type default value;#聲明部分變量
#if語句
if 前提 then 語句
elseif 前提 then 語句
else 語句
end if
#case語句
case 前提
when 前提 then 語句
when 前提 then 語句
else 語句
end case
#loop語句
fn:loop
語句
end loop fn;
leave fn #加入輪回
#while語句
fn:while 前提 do
語句
end while fn
#mysql應用贊助材料
? contents; #列出贊助類型
? data types;#列出數據類型
? int;#列出詳細類型
? show;#show語句
? create table;#
#罕見表的比擬
Myisam BDB Memory InnoDB Archive
存儲限制 no no yes 64T no
事物平安 支撐 支撐
鎖機制 表鎖 頁鎖 表鎖 行鎖 行鎖
全文索引 支撐
外鍵支撐 支撐
myisam frm存儲表界說 MYD存儲數據 MYI存儲索引
InnoDB 用於事務處置
char 和 varchar保留和索引都不雷同
浮點數float(10,2) 定點數decimal(10,2)
長度必定下,浮點數表現更年夜數據規模,缺陷是惹起精度喪失,泉幣等應用定點數存儲
索引合適於where字句或許銜接字句列
關於獨一值應用獨一索引
添加新用戶 grant select,insert,update,delete on *.* to Yoby@localhost identified by 'mysql';
# *.* 數據庫名.表名,限制登錄某一個數據庫 test.* localhost是當地主機 收集可使用 '%'取代一切主機 'mysql'是暗碼 Yoby是用戶名 一切權限可以用 all取代
檢查用戶權限 show grants for 'root'@'localhost';
移除權限 revoke all on *.* from root@localhost;
group by id 分組
having 限制字句
select1 union select2 結合查詢有反復去失落保存一行
select2 union all select2 一切行歸並到成果集中去
這是一份最完全的mysql筆記,須要的可以復制保留了!
(原創 Yoby)