|
停止命令:net stop mysql
啟動(dòng)命令:net start mysql
mysql登錄命令mysql -h ip -P 端口 -u 用戶(hù)名 -p
mysql --version 或者mysql -V用于在未登錄情況下,查看本機(jī)mysql版本
select version();:登錄情況下,查看鏈接的庫(kù)版本
顯示所有數(shù)據(jù)庫(kù):show databases;
進(jìn)入指定的庫(kù):use 庫(kù)名;
顯示當(dāng)前庫(kù)中所有的表:show tables;
查看其他庫(kù)中所有的表:show tables from 庫(kù)名;
查看表的創(chuàng)建語(yǔ)句:show create table 表名;
查看表結(jié)構(gòu):desc 表名;
查看當(dāng)前所在庫(kù):select database();
mysql語(yǔ)法規(guī)范
SQL的語(yǔ)言分類(lèi)
主要包括以下五大類(lèi)
整數(shù)類(lèi)型:bit、bool、tinyint、smallint、mediumint、int、bigint
浮點(diǎn)數(shù)類(lèi)型:float、double、decimal
字符串類(lèi)型:char、varchar、tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext
日期類(lèi)型:Date、DateTime、TimeStamp、Time、Year
其他數(shù)據(jù)類(lèi)型:暫不介紹,用的比較少。
類(lèi)型(n)說(shuō)明在開(kāi)發(fā)中,我們會(huì)碰到有些定義整型的寫(xiě)法是int(11),這種寫(xiě)法個(gè)人感覺(jué)在開(kāi)發(fā)過(guò)程中沒(méi)有什么用途,不過(guò)還是來(lái)說(shuō)一下,int(N)我們只需要記住兩點(diǎn):
decimal采用的是四舍五入
float和double采用的是四舍六入五成雙
什么是四舍六入五成雙?
char類(lèi)型占用固定長(zhǎng)度,如果存放的數(shù)據(jù)為固定長(zhǎng)度的建議使用char類(lèi)型,如:手機(jī)號(hào)碼、身份證等固定長(zhǎng)度的信息
數(shù)據(jù)類(lèi)型選擇的一些建議
權(quán)限生效時(shí)間用戶(hù)及權(quán)限信息放在庫(kù)名為mysql的庫(kù)中,mysql啟動(dòng)時(shí),這些內(nèi)容被讀進(jìn)內(nèi)存并且從此時(shí)生效,所以如果通過(guò)直接操作這些表來(lái)修改用戶(hù)及權(quán)限信息的,需要重啟mysql或者執(zhí)行flush privileges;才可以生效。
用戶(hù)登錄之后,mysql會(huì)和當(dāng)前用戶(hù)之間創(chuàng)建一個(gè)連接,此時(shí)用戶(hù)相關(guān)的權(quán)限信息都保存在這個(gè)連接中,存放在內(nèi)存中,此時(shí)如果有其他地方修改了當(dāng)前用戶(hù)的權(quán)限,這些變更的權(quán)限會(huì)在下一次登錄時(shí)才會(huì)生效。
創(chuàng)建用戶(hù)語(yǔ)法:
create user 用戶(hù)名[@主機(jī)名] [identified by '密碼'];
通過(guò)修改mysql.user表修改密碼
use mysql;
update user set authentication_string = password('321') where user = 'test1' and host = '%';
flush privileges;
給用戶(hù)授權(quán):
grant privileges ON database.table TO 'username'[@'host'] [with grant option]
grant命令說(shuō)明:
查看用戶(hù)有哪些權(quán)限show grants for '用戶(hù)名'[@'主機(jī)']
show grants -- 查看當(dāng)前用戶(hù)的權(quán)限
撤銷(xiāo)用戶(hù)的權(quán)限:revoke privileges ON database.table FROM '用戶(hù)名'[@'主機(jī)'];
刪除用戶(hù):
1.drop user '用戶(hù)名'[@'主機(jī)’]
2.delete from user where user='用戶(hù)名' and host='主機(jī)';
授權(quán)原則說(shuō)明
總結(jié)
修改列alter table 表名 modify column 列名 新類(lèi)型 [約束];
或者
alter table 表名 change column 列名 新列名 新類(lèi)型 [約束];
2種方式區(qū)別:modify不能修改列名,change可以修改列名
delete單表刪除delete [別名] from 表名 [[as] 別名] [where條件];
示例-- 刪除test1表所有記錄delete from test1;
-- 刪除test1表所有記錄delete test1 from test1;
-- 有別名的方式,刪除test1表所有記錄delete t1 from test1 t1;
-- 有別名的方式刪除滿(mǎn)足條件的記錄delete t1 from test1 t1 where t1.a>100;
多表刪除
delete [別名1,別名2] from 表1 [[as] 別名1],表2 [[as] 別名2] [where條件];
示例1delete t1 from test1 t1,test2 t2 where t1.a=t2.c2;
drop,truncate,delete區(qū)別
別名中有特殊符號(hào)的,比如空格,此時(shí)別名必須用引號(hào)引起來(lái)。
不等于符號(hào)的使用:
<> 這個(gè)是最早的用法。
!=是后來(lái)才加上的。
兩者意義相同,在可移植性上前者優(yōu)于后者
故而sql語(yǔ)句中盡量使用<>來(lái)做不等判斷
like(模糊查詢(xún))select 列名 from 表名 where 列 like pattern;
查詢(xún)運(yùn)算符、like、between and、in、not in對(duì)NULL值查詢(xún)不起效
<=>(安全等于)<=>:既可以判斷NULL值,又可以判斷普通的數(shù)值,可讀性較低,用得較少
總結(jié)
語(yǔ)法:
select 列 from 表 limit [offset,] count;
limit中不能使用表達(dá)式,limit后面的2個(gè)數(shù)字不能為負(fù)數(shù)字段存在相同的值,當(dāng)排序過(guò)程中存在相同的值時(shí),沒(méi)有其他排序規(guī)則時(shí),mysql懵逼了,不知道怎么排序了;
建議:分頁(yè)排序時(shí),排序不要有二義性,二義性情況下可能會(huì)導(dǎo)致分頁(yè)結(jié)果亂序,可以在后面追加一個(gè)主鍵排序
where 多字段同時(shí)限制:
SELECT
user_id 用戶(hù)id,
price 最大金額,
the_year 年份
FROM
t_order t1
WHERE
(t1.user_id , t1.price)
IN
(SELECT
t.user_id, MAX(t.price)
FROM
t_order t
GROUP BY t.user_id);
現(xiàn)在我們來(lái)討論java輸出的順序?yàn)楹魏蛃ql不一致?
那mysql是如何優(yōu)化的呢?
delimiter關(guān)鍵字 sql語(yǔ)句結(jié)束符delimiter用來(lái)設(shè)置結(jié)束符,當(dāng)mysql執(zhí)行腳本的時(shí)候,遇到結(jié)束符的時(shí)候,會(huì)把結(jié)束符前面的所有語(yǔ)句作為一個(gè)整體運(yùn)行,存儲(chǔ)過(guò)程中的腳本有多個(gè)sql,但是需要作為一個(gè)整體運(yùn)行,所以此處用到了delimiter
/*在執(zhí)行過(guò)程中出任何異常設(shè)置hasSqlError為T(mén)RUE*/
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET hasSqlError=TRUE;
根據(jù)hasSqlError判斷是否有異常,做回滾和提交操作
mysql使用binlog和relaylog記錄數(shù)據(jù)庫(kù)的變化
binlog有三種格式:ROW STATEMENT MIXED ,ROW記錄national數(shù)據(jù)被修改了,修改成了什么樣子;STATEMENT 記錄修改的sql到binlog;MIXED就是以上兩種模式的混合。
binlog是一個(gè)二進(jìn)制文件,解析binlog有兩種方式:
1.在命令行使用,show binlog events in 'binlog-filename';方式查看
2.下載分析binlog,然后通過(guò)mysqlbinlog工具進(jìn)行解析
扇區(qū):磁盤(pán)存儲(chǔ)的最小單位,扇區(qū)一般大小為512Byte
磁盤(pán)塊:文件系統(tǒng)與磁盤(pán)交互的最小單位(計(jì)算機(jī)系統(tǒng)讀寫(xiě)磁盤(pán)的最小單位),一個(gè)磁盤(pán)塊由連續(xù)幾個(gè)扇區(qū)組成,塊一般大小為4KB
二分法查找數(shù)據(jù)的優(yōu)點(diǎn):定位數(shù)據(jù)非???,前提是:目標(biāo)數(shù)組是有序的。
總結(jié)一下使用索引的一些建議
|
|
|
來(lái)自: 頭號(hào)碼甲 > 《待分類(lèi)》