mysql的学习笔记
實踐成功的例子進入到C盤的mysql server 5.5下執行以下語句:
(1)備份和還原某個表:
備份語句:mysqldump -h192.168.32.89 -uwjf -p wjf teams>F:\wjd.sql //注意:在wjd.sql后面不要加分號。
或者:mysqldump -h192.168.32.89 -uwjf -p123456 wjf teams>F:\sda.sql//后面不加分號的喔。
還原語句:mysqldump -h192.168.32.89 -uwjf -p123456 wjf<F:\sda.sql//后面不加分號的喔。
**************************************************************************************************
【1】cmd命令進入到mysql指令中,然后登錄數據庫:mysql -h192.168.32.89 -uwjf -p123456回車ok.
【2】數據庫: SHOW DATABASES; use 數據庫名; CREATE DATABASE school; DROP DATABASE school;
【3】存儲引擎:查看mysql數據庫支持的存儲引擎:SHOW ENGINES;
查看mysql數據庫支持的存儲引擎:SHOW VARIABLES LIKE'have%';
查看你mysql默認的存儲引擎:SHOW VARIABLES LIKE'storage_engine';
查看某張表使用的存儲引擎:SHOW CREATE TABLE 表名;
修改存儲引擎ALTER TABLE teacherInfo ENGINE=MYISAM;
?
【4】字段(修改字段名用change,修改字段其它用modify)、表、外鍵
#修改字段類型ALTER TABLE teams MODIFY division CHAR(6);
#修改字段位置ALTER TABLE players MODIFY TOWN VARCHAR(30) AFTER STREET;
#增加字段并指定位置ALTER TABLE teams ADD long_time DATE AFTER division ;
#修改字段名字和類型;ALTER TABLE 表名 CHANGE 舊屬性名 新屬性名 數據類型(新或舊的)ALTER TABLE teams CHANGE long_time time_long DATETIME;
#刪除字段ALTER TABLE teacher DROP address;
?
#清除數據,不刪除數據結構的語句:truncate table 表名。
#刪除表名DROP TABLE department;
#修改表名ALTER TABLE teacher RENAME teacherInfo;#修改表名
?
CREATE TABLE grade(
id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,
course VARCHAR(10) NOT NULL ,
s_num INT(10) NOT NULL ,
grade VARCHAR(4),
CONSTRAINT grade_fk FOREIGN KEY (s_num)#創建表并指定外鍵:constraint 外鍵名 foreign key (指定
?
為外鍵的字段名) reference 父表(外鍵對應父表里的對應字段)
REFERENCES student(num)
);
#刪除表的外鍵ALTER TABLE worker DROP FOREIGN KEY worker_fk;
?
#增加主鍵:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID PRIMARY KEY (Id_P,LastName)#增加主鍵
)
?
【5】索引
普通索引:是最基本的索引,沒有任何限制。
唯一索引:與普通索引類似,不同在于索引列的值必須唯一但是允許有空值。
主鍵索引:是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時創建主鍵索引。
#創建索引create index index_name on table_name(字段屬性[字段長度]):CREATE INDEX index_name ON workInfo( name(10) )
#創建多字段索引:ALTER TABLE workInfo ADD INDEX index_t( type, address );
#刪除索引(注意on 表名一定要寫不然語法出錯)DROP INDEX index_id ON workInfo ;
?
【6】視圖
#創建視圖CREATE ALGORITHM=UNDEFINED VIEW
college_view (student_num視圖字段屬性1, student_name視圖字段屬性2, student_age視圖字段屬性3,
?
department視圖字段屬性4 )
AS SELECT 原表屬性1number, name, age, major FROM college
WITH LOCAL CHECK OPTION;
#查看視圖的詳細結構SHOW CREATE VIEW college_view。
#向視圖中插入記錄INSERT INTO college_view VALUES( 0901, '張三', 20, '外語' );
#修改視圖也可以用CREATE OR REPLACE ALGORITHM=UNDEFINED VIEW
college_view (student_num, student_name, student_age, department )
AS SELECT number, name, age, major
FROM college WHERE major='計算機'
WITH LOCAL CHECK OPTION;
#刪除視圖DROP VIEW college_view;
【7】觸發器
#創建觸發器
DELIMITER && #如果向licenseinfo 表中插入記錄說明該學員已經結業,那么studentinfo 表中的scondition只應該更新為“結業”。代碼如下
CREATE TRIGGER license_stu AFTER INSERT ON licenseinfo FOR EACH ROW
BEGIN
UPDATE studentinfo SET leave_time=new.receive_time,scondition='結業' WHERE sno=new.sno;
END &&
DELIMITER ;
附加:new.sno:表示新插入的記錄;OLD.sno:表示新刪除的記錄。
【8】存儲過程
例子1::
第一步創建存儲過程:DELIMITER &&
CREATE PROCEDURE matches_index(IN p_PLAYERNO INTEGER)
BEGIN
DELETE FROM matches WHERE PLAYERNO=p_PLAYERNO;
END &&
DELIMITER ;
第二步調用存儲過程:CALL matches_index(8);
第三步查詢表看結果是否正確:SELECT * FROM matches;
*******************************************************
例子2:計算兩個日期相差的年數的存儲過程代碼如下1980-1990年相差9年:
DELIMITER &&
CREATE PROCEDURE AGE(IN start_date DATE,IN end_date DATE,OUT years INTEGER)
BEGIN
DECLARE prev_date,next_date DATE;
SET years=0;
SET prev_date=start_date;
SET next_date=start_date+INTERVAL 1 YEAR;
WHILE next_date<end_date DO
SET years=years+1;
SET prev_date=next_date;
SET next_date=next_date+INTERVAL 1 YEAR;
END WHILE;
END &&
DELIMITER ;
CALL AGE('1980-01-01','1990-01-01',@years);
SELECT @years;
*************************************************************
例子3:結果是p1=4,p2=1
DELIMITER &&
CREATE PROCEDURE small_exit(OUT p1 INTEGER,OUT p2 INTEGER)
BEGIN
SET p1=1;
SET p2=1;
block1:BEGIN
LEAVE block1;//leave語句后面的set語句沒有執行,lock1語句結束后聲明的那條set語句實際執行了。
SET p2=3;
END;
SET p1=4;
END &&
DELIMITER ;
CALL small_exit(@p1,@p2);
SELECT @p1,@p2;
************************************************************
例子4:計算某一個球員的所有罰款的總額select into或set語句
DELIMITER &&
CREATE PROCEDURE amount(IN pn INTEGER,OUT total_amount DECIMAL(7,2))
BEGIN
#select sum(amount) into total_amount from wjf.penalties where pn=PLAYERNO;或
SET total_amount=(SELECT SUM(amount) FROM wjf.penalties WHERE pn=PLAYERNO);
END &&
DELIMITER ;
CALL amount(104,@total_amount);
SELECT @total_amount;
【9】存儲函數
DELIMITER &&
CREATE FUNCTION food_price_count1(price_info1 FLOAT,price_info2 FLOAT )
RETURNS INT READS SQL DATA
BEGIN
RETURN (SELECT COUNT(*) FROM food
WHERE price>price_info1 AND price<price_info2 );
END &&
DELIMITER ;
?
調用存儲函數
SELECT food_price_count1(2,18);
?
刪除存儲函數
DROP FUNCTION food_price_count1;
?
又例如2: -- Mysql 存儲過程
/*
set @result = 0;
create procedure login( -- 定義參數,有in、out、inout三種類型
in user varchar(10),
in pass varchar(10),
out result int
)
begin
declare passd varchar(10);-- declare 聲明臨時變量、類型,然后用set 進行賦值,declare 臨時變量只能放在begin end 區域中,而其作用域也只是在begin end 中, 而 set @ 定義的變量是全局變量
select password into passd from login where username=user;
if passd like pass then -- If 語句,后面要加上 End IF,就像是case 后也要加 End Case 一樣
select 'Login Success' as Massage;
set result = 1;
else
select 'Login Failed' as Message;
set result =0;
end if;
end;
*/
-- 調用存儲過程 call login('root','root',@result);
-- 刪除存儲過程 drop procedure login
?
【10】優化:
(其實實踐的效果差不多)用count(*)統計所有字段的一種優化方案是只計算id字段,速度比count(*)快,SQL語句可寫成:select count(emp_id) from emp_infor;
SELECT 'all',COUNt(*) FROM wjf.committee_members WHERE BEGIN_DATE>'1992-01-01' UNION SELECT 'like',COUNT(*) FROM wjf.committee_members WHERE BEGIN_DATE>'1992-01-01' AND POSITION='海' UNION SELECT 'not like',COUNT(*) FROM wjf.committee_members WHERE BEGIN_DATE>'1992-01-01' AND POSITION!='海';注釋:Mysql中的like不能帶有中文 字符,不兼容,但是可以用等號或不等號代替;Mysql中的in在mysql中也不兼容。(實 踐表明有時候可以有時候不兼容)
【11】OR、in和union all 查詢效率到底哪個快?
【12】查看是否自動提交:mysql默認自動提交即autocommit=1,查看語句:SHOW VARIABLES LIKE 'autocommit';或者SELECT @@autocommit;注意:有一點要注意,連 接mysql用戶的權限不能大于啟動mysql的用戶的權限,不然init_connect='SET autocommit=0'根本不會啟作用,也不會報任何錯誤。
【13】@var是用戶自定義變量(user defined vars),@@var是系統變量(system vars), @@var又分成兩種:一個是seesion的(local),一個是server的(global)。 declare 臨時變量只能放在begin end 區域中,而其作用域也只是在begin end 中, 而 set @ 定義的變量是全局變量.
【14】為什么wjf帳號不在user里卻依然能登錄進是為什么?
【15】PHP開發者常犯的幾個MySQL錯誤得出的結論:
?
要使用innoDB而不是MyISAM。Mysql默認數據庫存儲引擎是MyISAM,但是 MyISAM不支持外鍵約束也不支持事務(myisam會在在添加或者更新數據的時候將整 個表鎖住,擴展性不強)。
應該使用UTF-8。
一定要確保自動備份數據或者保存副本。
應該適量使用索引,避免索引不足或者過度索引。
要使用*在表中返回所有的字段,這會非常的慢。你只需要取出你需要的數據字段。
Myisam表級鎖:不會隨著SQL線程的增加而降多少。
Innodb行級鎖:隨著SQL線程的大幅度劇烈變化。
【16】日志:
mySQL默認是不開啟那些日志的,如:二進制日志,錯誤日志,慢日志,查詢日志等 。
查看二進制日志文件存放的目錄 :show variables like 'datadir';
當前的二進制日志文件 :show master status;
【17】問題:創建存儲函數DELIMITER $$
CREATE FUNCTION myfunction(in_string VARCHAR(255),in_find_str VARCHAR(20),in_repl_str VARCHAR(20))
RETURNS VARCHAR(255)
BEGIN
DECLARE l_new_string VARCHAR(255);
DECLARE l_find_pos INT;
?
SET l_find_pos=INSTR(in_string,in_find_string);
IF(l_find_pos>0) THEN
SET l_new_string=INSERT(in_string,l_find_pos,LENGTH(in_find_str),in_repl_str);
ELSE
SET l_new_string=in_string;
END IF;
RETURN(l_new_string);
END $$
DELIMITER ;時出錯信息:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable).原因:如果開啟了二進制日志(考慮需要復制,備份等),mysql從安全角度考慮(比如存儲函數里存在一些不特定的函數,會導致主從的數據可能不一致),存儲過程和函數需要遵守一些限制。參數如: 1 DETERMINISTIC 不確定的
2 NO SQL 沒有SQl語句,當然也不會修改數據
3 READS SQL DATA 只是讀取數據,當然也不會修改數據
4 MODIFIES SQL DATA 要修改數據
5 CONTAINS SQL 包含了SQL語句
解決方法:set global log_bin_trust_function_creators=1; 之后show variables like 'log_bin_trust_function_creators'; 該值為on,設置為on的時候數據庫也會存在風險的哦。
【18】使create_time的值默認是系統時間的設置是:變量是create_time 、類型是timestamp、default是current_timestamp、不為空即可。
【19】循環語句:while...do...en while。repeat...until...end repeat。loop...end loop。其中loop語句必須遇到leave才能停止循環。Mysql用--行注釋,/**/段注釋例子如下:
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `ww1`$$
CREATE DEFINER=`wjf`@`%` PROCEDURE `ww1`()
BEGIN
DECLARE i INT;
SET i=1;
WHILE i<5 DO
INSERT INTO stud(age,NAME)VALUES(i,'ff');
SET i=i+1;
END WHILE;
END$$
DELIMITER ;
CALL ww1();
********************************************************
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `ww2`$$
CREATE DEFINER=`wjf`@`%` PROCEDURE `ww2`()
BEGIN
DECLARE i INT;
SET i=1;
REPEAT
INSERT INTO stud(age,NAME)VALUES(i,'ff');
SET i=i+1;
UNTIL i>5
END REPEAT;
END$$
DELIMITER ;
CALL ww2();
*********************************************************
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `ww3`$$
?
CREATE DEFINER=`wjf`@`%` PROCEDURE `ww3`()
BEGIN
DECLARE i INT;
SET i=1;
loop1:LOOP
INSERT INTO stud(age,NAME)VALUES(i,'ff');
SET i=i+1;
IF i>5 THEN
LEAVE loop1;
END IF;
END LOOP;
END$$
DELIMITER ;
CALL ww3();
【20】mysql存儲過程使用repeat來打開游標讀取數據,因為stud表里邊的數據記錄有18條。代碼如下:
DELIMITER $$
CREATE PROCEDURE ww4(in_stud_id INT)
BEGIN
DECLARE l_id INT;
DECLARE l_name VARCHAR(15);
DECLARE l_age INT(4);
DECLARE l_status INT;
?
DECLARE ww_cursor CURSOR FOR SELECT id,NAME,age,STATUS FROM stud;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_status=1;
?
SET l_status=0;
OPEN ww_cursor;
loop1:REPEAT
FETCH ww_cursor INTO l_id,l_name,l_age,l_status; //從select的查詢結果中提取存入到l_id,l_name,l_age,l_status這三個變量中。
IF l_status=0 THEN SET l_age=l_age+1;
END IF;
SELECT l_id,l_name,l_age,l_status;
UNTIL l_status //此處不要分號,不然會出錯
END REPEAT loop1;
CLOSE ww_cursor;
SET l_status=0;
END$$
DELIMITER ;
結果出現一排18個結果。如下圖所示:
?
?
?
?
?
?
?
?
?
?
【21】Mysql分組統計問題:數據xinxi表如下圖
和右邊的結果
執行的sql語句:SELECT riqi,haoma ,COUNT(*)AS cishu FROM xinxi GROUP BY riqi,haoma ORDER BY riqi ;
【22】查詢與索引優化分析
可以通過show命令查看MySQL狀態及變量,找到系統的瓶頸:
Show status;//顯示狀態信息(擴展show status like ‘XXX’)
Show variables;//顯示系統變量(擴展show variables like ‘XXX’)
Show engine innodb status;//顯示 InnoDB存儲引擎的狀態
Show processlist;//查看當前SQL執行,包括執行狀態、是否鎖表等
慢查詢日志是否開啟:show variables like”slow%”;查詢慢查詢日志的時間:show variables like”long_%”:
EXPLAIN 關鍵字可以模擬優化器執行SQL查詢語句,從而知道MySQL是如何處理你 的SQL語句的 。例如:EXPLAIN SELECT num FROM stud WHERE num='a123' OR num='123';
?
第四列 type
這列很重要,顯示了連接使用了哪種類別,有無使用索引.
從最好到最差的連接類型為const、eq_reg、ref(引用)、range、indexhe和ALL
(1).system
這是const聯接類型的一個特例。表僅有一行滿足條件.
2).const
表最多有一個匹配行,它將在查詢開始時被讀取。因為僅有一行,在這行的列值可被優化器剩余部分認為是常數。const表很快,因為它們只讀取一次!
3). eq_ref
對于每個來自于前面的表的行組合,從該表中讀取一行。這可能是最好的聯接類型,除了const類型。它用在一個索引的所有部分被聯接使用并且索引是UNIQUE或PRIMARY KEY。
eq_ref可以用于使用= 操作符比較的帶索引的列。比較值可以為常量或一個使用在該表前面所讀取的表的列的表達式。
(4).ref
對于每個來自于前面的表的行組合,所有有匹配索引值的行將從這張表中讀取。如果聯接只使用鍵的最左邊的前綴,或如果鍵不是UNIQUE或PRIMARY KEY(換句話說,如果聯接不能基于關鍵字選擇單個行的話),則使用ref。如果使用的鍵僅僅匹配少量行,該聯接類型是不錯的。
ref可以用于使用=或<=>操作符的帶索引的列。
(5). ref_or_null
該聯接類型如同ref,但是添加了MySQL可以專門搜索包含NULL值的行。在解決子查詢中經常使用該聯接類型的優化。
在下面的例子中,MySQL可以使用ref_or_null聯接來處理ref_tables:
SELECT * FROM ref_table
WHERE key_column=expr OR key_column IS NULL;
(6). index_merge
該聯接類型表示使用了索引合并優化方法。在這種情況下,key列包含了使用的索引的清單,key_len包含了使用的索引的最長的關鍵元素。
(7). unique_subquery
該類型替換了下面形式的IN子查詢的ref:
value IN (SELECT primary_key FROM single_table WHERE some_expr)
unique_subquery是一個索引查找函數,可以完全替換子查詢,效率更高。
(8).index_subquery
該聯接類型類似于unique_subquery。可以替換IN子查詢,但只適合下列形式的子查詢中的非唯一索引:
value IN (SELECT key_column FROM single_table WHERE some_expr)
(9).range
只檢索給定范圍的行,使用一個索引來選擇行。key列顯示使用了哪個索引。key_len包含所使用索引的最長關鍵元素。在該類型中ref列為NULL。
當使用=、<>、>、>=、<、<=、IS NULL、<=>、BETWEEN或者IN操作符,用常量比較關鍵字列時,可以使用range
(10).index
該聯接類型與ALL相同,除了只有索引樹被掃描。這通常比ALL快,因為索引文件通常比數據文件小。
當查詢只使用作為單索引一部分的列時,MySQL可以使用該聯接類型。
(11). ALL
對于每個來自于先前的表的行組合,進行完整的表掃描。如果表是第一個沒標記const的表,這通常不好,并且通常在它情況下很差。通常可以增加更多的索引而不要使用ALL,使得行能基于前面的表中的常數值或列值被檢索出。
使用profiling分析查詢優化:默認profiling是關閉的。
查看狀態:show @@profiling。
查詢被執行的SQL語句的時間和ID :show profiles;
通過show profiles查出的id號查詢對應的那條SQL語句執行的詳細信息:show profile for query id號;
索引及查詢優化:
limit:Mysql中的top用limit來代替,比如查詢前3條記錄的語句:select * from stud limit 0,3;或者select * from stud limit 3;比如查詢最后3條記錄:select * from stud order by id desc limit 3;
少使用select *
使用join來代替子查詢:
在linux環境下:
1、在red hat enterprise Linux5下安裝MySQL-client-5.0.22-0.i386.rpm和MySQL -server-5.0.22-0.i386.rpm的時候出現“starting mysql ....失敗”的錯誤。
解決方法:進入etc/selinux,然后把selinux=enforcing改成selinux=disabled.然 后重啟就ok.以后就可以直接通過mysql進入到到數據庫咯。
like的匹配: %代表匹配任意個字符,包括零個字符。
_嚴格匹配一個字符。
\%匹配字符%
\_匹配字符_
?
例如1、mysql> select 1 not like '1%';
+-----------------+
| 1 not like '1%' |
+-----------------+
| 0 |
+-----------------+
1 row in set (0.00 sec)
2、mysql> select 1 not like '%1';
+-----------------+
| 1 not like '%1' |
+-----------------+
| 0 |
+-----------------+
1 row in set (0.00 sec)
3、mysql> select 1 like '%';
+------------+
| 1 like '%' |
+------------+
| 1 |
+------------+
1 row in set (0.00 sec)
4、mysql> select 1 like '_';
+------------+
| 1 like '_' |
+------------+
| 1 |
+------------+
1 row in set (0.00 sec)
5、mysql> select 1 like '1%';
+-------------+
| 1 like '1%' |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
6、mysql> select 1 like '1%_';
+--------------+
| 1 like '1%_' |
+--------------+
| 0 |
正則表達式:所謂的正則表達是就是指字符串匹配,rlike和regexp是同義詞。^代表匹配前面所有的字符串,而$代表匹配后面所有的字符串,.匹配任何一個字符,X*匹配后面的任意(包括零個)為X的字符,X+匹配后面的任意個字符,X?匹配后面的零個或1個字符a,abc|def是匹配前面的abc或者匹配后面的def,(abc)*含義是匹配零個或多個abc。
例如:
?
?
?
length(str):返回字符串的個數。substring(str,pos):返回字符串str的pos位置之后的字串。substring(str,pos,len):返回字符串str的pos位置后的len個字符的子串。Right(str):返回字符串str最后的len個字符串。Locate(substr,str):返回字串substr在字符串str最開始出現的位置。
例如:
null測試:有兩個函數ifnull和nullif。其中ifnull(exp1,exp2)如果exp1是null,則返回exp2的值,否則返回exp1。Nullif(exp1,exp2):如果exp1=exp2則返回null,否則返回exp1。
例如:
linux中目錄是使用斜杠/,而windows中是使用反斜杠\。
Linux幾個重要的目錄如:
數據庫目錄:/var/lib/mysql/
配置文件 :/usr/share/mysql(mysql.server命令及配置文件)
相關命令:/usr/bin(mysqladmin mysqldump等命令)
啟動腳本:/etc/rc.d/init.d/(啟動腳本文件mysql的目錄)
Linux安裝完mysql的時候,MySQL默認沒有密碼 ,直接輸入mysql即可進入。
修改登錄密碼:
?
自動啟動
1)察看mysql是否在自動啟動列表中 :[root@test1 local]# /sbin/chkconfig –list
2)把MySQL添加到你系統的啟動服務組里面去 :
[root@test1 local]# /sbin/chkconfig – add mysql
3)把MySQL從啟動服務組里面刪除:[root@test1 local]# /sbin/chkconfig – del mysql
11、停止:/usr/bin/mysqladmin -u root -p shutdown 要啟動回來就用到了啟動腳本
?
Linux MySQL常用操作:
show databases;
use 庫名;
show tables; desc 表名;
Create table wjf(id int not null primary key auto_increment,name varchar(20) not null );
insert into wjf(name) values('www');或者insert into w values(2,'haifeng',2001);
查看表創建的具體信息:show create table 表名;
刪除記錄:delete from w where id=1;
刪除字段:alter table w drop age;
增加字段:alter table w add num int(20); /alter table w add age int after name;
修改字段名:alter table w change num num_xin int(20);/其中num是舊名, num_xin 是新名。
查看存儲引擎:show variables like 'storage_engine';
更改存儲引擎:set storage_engine=innodb;
查看編碼格式:數據庫編碼默認是Latin1,show variables like'%character%';
Read_lock:叫共享鎖,可以同時讀不可任何的寫。Write_lock:叫排他鎖或者獨占 鎖,即不允許同時讀同時寫。
FLUSH TABLES WITH READ LOCK;//一般用在數據庫聯機備份時候。
解鎖:unlock tables;
修改編碼格式:
新服務平臺199服務器重啟步驟:這些步驟都在安裝服務器的bin目錄下進行
一、查看進程: ps -ef |grep tomcat
二、殺掉進程: kill -9 進程號
三、等待3分鐘后再次查看進程: ps -ef |grep tomcat
四、重新啟動: ./startup.sh
導入文本文件到數據庫中:load data local infile "/me/daoru"into table w;(前提需要 在Linux中建一個文本文件)。
MySQL服務器最大連接數:show variables like 'max_connections';
服務器響應的最大連接數:show global status like 'Max_used_connections';
mysql :一個基于命令行的MySQL客戶端程序
mysql_install_db :用于以缺省權限創建MySQL權限表,該程序通常僅在系統上第 一次安裝MySQL時執行一次
mysqladmin :用于執行數據庫的管理操作,如創建或刪除數據庫,加載授權表和停 止MySQL服務等.也可以用于查看MySQL版本,進程和狀態信息
myisamchk:用于描述,檢查,優化和修復MySQL中和各個表,并可以顯示表的相關信 息 mysqlshow:用于顯示數據庫,表,列和索引等信息 。
mysqlaccess:一個腳本,用于檢查對主機,用戶和數據庫組合的存取權限 mysqlbug:MySQL錯誤報告腳本,用于向MySQL郵件列表中添加錯誤報告 mysqldump:用于將MySQL數據庫中的數據導出一個文本文件.
mysqlmport:提供一個到SQL語句LOAD DATA INFILE的命令行接口,通過LOAD DATA INFILE命令,可以將文本文件導入到數據庫中.
一個表最多可有16個索引,一個索引可以由最多15個列組成。
列出文件內容:cat /me/daoru
創建文件夾:mkdir ww;
刪除文件夾:rm -ri ww;
查詢當前
?
CREATE TABLE `xinxi` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`riqi` varchar(11) NOT NULL,
`haoma` int(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
總結
以上是生活随笔為你收集整理的mysql的学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux修改用户名和密码
- 下一篇: CentOS 7.6 安装 Mysql8