❶ mysql基本操作有哪些
mysql基本操作有:
命令行
1、顯示當前資料庫伺服器中的資料庫列表:mysql> SHOW DATABASES;
2、建立資料庫:mysql> CREATE DATABASE 庫名;
3、建立數據表:mysql> USE 庫名;mysql> CREATE TABLE 表名 (欄位名 VARCHAR(20), 欄位名 CHAR(1));
4、刪除資料庫:mysql> DROP DATABASE 庫名;
5、刪除數據表:mysql> DROP TABLE 表名;
6、將表中記錄清空:mysql> DELETE FROM 表名;
7、往表中插入記錄:mysql> INSERT INTO 表名 VALUES ("hyq","M");
8、更新表中數據:mysql-> UPDATE 表名 SET 欄位名1='a',欄位名2='b' WHERE 欄位名3='c';
9、用文本方式將數據裝入數據表中:mysql> load data local infile "d:/mysql.txt" into table 表名;
10、導入.sql文件命令:mysql> USE 資料庫名;mysql> source d:/mysql.sql;
11、命令行修改root密碼:mysql> update mysql.user set password=password('新密碼') where user='root';mysql> flush privileges;
12.修改密碼的三種方法:mysql>update user set password=password('123456') where user='joy_pen';mysql>flush privileges;mysql>set password for 'joy_oen'=password('123456');mysql>grant usage on *.* to 'joy_pen' identified by '123456';
1、創建資料庫
命令:create database <資料庫名> 例如:建立一個名為xhkdb的資料庫mysql> create database xhkdb;
2、顯示所有的資料庫
命令:show databases (注意:最後有個s)mysql> show databases;
3、刪除資料庫
命令:drop database <資料庫名> 例如:刪除名為 xhkdb的資料庫mysql> drop database xhkdb;
4、連接資料庫
命令: use <資料庫名> 例如:如果xhkdb資料庫存在,嘗試存取它:mysql> use xhkdb; 屏幕提示:Database changed
5、當前選擇(連接)的資料庫mysql> select database();
6、當前資料庫包含的表信息:mysql> show tables; (注意:最後有個s)
三、表操作,操作之前應連接某個資料庫
1、建表
命令:create table <表名> ( <欄位名1> <類型1> [,..<欄位名n> <類型n>]);
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default ''0'',
> degree double(16,2));
2、獲取表結構
命令: desc 表名,或者show columns from 表名
mysql>DESCRIBE MyClass
mysql> desc MyClass;
mysql> show columns from MyClass;
3、刪除表
命令:drop table <表名>
例如:刪除表名為 MyClass 的表 mysql> drop table MyClass;
4、插入數據
命令:insert into <表名> [( <欄位名1>[,..<欄位名n > ])] values ( 值1 )[, ( 值n )]
例如,往表 MyClass中插入二條記錄, 這二條記錄表示:編號為1的名為Tom的成績為96.45, 編號為2 的名為Joan 的成績為82.99,編號為3 的名為Wang 的成績為96.5.
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
5、查詢表中的數據
1)、查詢所有行
命令: select <欄位1,欄位2,...> from < 表名 > where < 表達式 >
例如:查看錶 MyClass 中所有數據 mysql> select * from MyClass;
2)、查詢前幾行數據
例如:查看錶 MyClass 中前2行數據
mysql> select * from MyClass order by id limit 0,2;
6、刪除表中數據
命令:delete from 表名 where 表達式
例如:刪除表 MyClass中編號為1 的記錄
mysql> delete from MyClass where id=1;
7、修改表中數據:update 表名 set 欄位=新值,… where 條件
mysql> update MyClass set name=''Mary'' where id=1;
8、在表中增加欄位:
命令:alter table 表名 add 欄位 類型 其他;
例如:在表MyClass中添加了一個欄位passtest,類型為int(4),默認值為0
mysql> alter table MyClass add passtest int(4) default ''0''
9、更改表名:
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改為YouClass
mysql> rename table MyClass to YouClass;
更新欄位內容
update 表名 set 欄位名 = 新內容
update 表名 set 欄位名 = replace(欄位名,''舊內容'',''新內容'');
❷ MySQL的基本命令
啟動:net start mySql;
進入:mysql -u root -p/mysql -h localhost -u root -p databaseName;
列出資料庫:show databases;
選擇資料庫:use databaseName;
列出表格:show tables;
顯示表格列的屬性:show columns from tableName;
建立資料庫:source fileName.txt;
匹配字元:可以用通配符_代表任何一個字元,%代表任何字元串;
增加一個欄位:alter table tabelName add column fieldName dateType;
增加多個欄位:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
多行命令輸入:注意不能將單詞斷開;當插入或更改數據時,不能將欄位的字元串展開到多行里,否則硬回車將被儲存到數據中;
增加一個管理員帳戶:grant all on *.* to user@localhost identified by "password";
每條語句輸入完畢後要在末尾填加分號';',或者填加'\g'也可以;
查詢時間:select now();
查詢當前用戶:select user();
查詢資料庫版本:select version();
查詢當前使用的資料庫:select database();
1、刪除student_course資料庫中的students數據表:
rm -f student_course/students.*
2、備份資料庫:(將資料庫test備份)
mysqlmp -u root -p test>c:\test.txt
備份表格:(備份test資料庫下的mytable表格)
mysqlmp -u root -p test mytable>c:\test.txt
將備份數據導入到資料庫:(導回test資料庫)
mysql -u root -p test
3、創建臨時表:(建立臨時表zengchao)
create temporary table zengchao(name varchar(10));
4、創建表是先判斷表是否存在
create table if not exists students(……);
5、從已經有的表中復製表的結構
create table table2 select * from table1 where 1<>1;
6、復製表
create table table2 select * from table1;
7、對表重新命名
alter table table1 rename as table2;
8、修改列的類型
alter table table1 modify id int unsigned;//修改列id的類型為int unsigned
alter table table1 change id sid int unsigned;//修改列id的名字為sid,而且把屬性修改為int unsigned
9、創建索引
alter table table1 add index ind_id (id);
create index ind_id on table1 (id);
create unique index ind_id on table1 (id);//建立唯一性索引
10、刪除索引
drop index idx_id on table1;
alter table table1 drop index ind_id;
11、聯合字元或者多個列(將列id與":"和列name和"="連接)
select concat(id,':',name,'=') from students;
12、limit(選出10到20條)<第一個記錄集的編號是0>
select * from students order by id limit 9,10;
13、MySQL不支持的功能
事務,視圖,外鍵和引用完整性,存儲過程和觸發器
14、MySQL會使用索引的操作符號
<,<=,>=,>,=,between,in,不帶%或者_開頭的like
15、使用索引的缺點
1)減慢增刪改數據的速度;
2)佔用磁碟空間;
3)增加查詢優化器的負擔;
當查詢優化器生成執行計劃時,會考慮索引,太多的索引會給查詢優化器增加工作量,導致無法選擇最優的查詢方案;
16、分析索引效率
方法:在一般的SQL語句前加上explain;
分析結果的含義:
1)table:表名;
2)type:連接的類型,(ALL/Range/Ref)。其中ref是最理想的;
3)possible_keys:查詢可以利用的索引名;
4)key:實際使用的索引;
5)key_len:索引中被使用部分的長度(位元組);
6)ref:顯示列名字或者"const"(不明白什麼意思);
7)rows:顯示MySQL認為在找到正確結果之前必須掃描的行數;
8)extra:MySQL的建議;
17、使用較短的定長列
1)盡可能使用較短的數據類型;
2)盡可能使用定長數據類型;
a)用char代替varchar,固定長度的數據處理比變長的快些;
b)對於頻繁修改的表,磁碟容易形成碎片,從而影響資料庫的整體性能;
c)萬一出現數據表崩潰,使用固定長度數據行的表更容易重新構造。使用固定長度的數據行,每個記錄的開始位置都是固定記錄長度的倍數,可以很容易被檢測到,但是使用可變長度的數據行就不一定了;
d)對於MyISAM類型的數據表,雖然轉換成固定長度的數據列可以提高性能,但是占據的空間也大;
18、使用not null和enum
盡量將列定義為not null,這樣可使數據的出來更快,所需的空間更少,而且在查詢時,MySQL不需要檢查是否存在特例,即null值,從而優化查詢;
如果一列只含有有限數目的特定值,如性別,是否有效或者入學年份等,在這種情況下應該考慮將其轉換為enum列的值,MySQL處理的更快,因為所有的enum值在系統內都是以標識數值來表示的;
19、使用optimize table
對於經常修改的表,容易產生碎片,使在查詢資料庫時必須讀取更多的磁碟塊,降低查詢性能。具有可變長的表都存在磁碟碎片問題,這個問題對blob數據類型更為突出,因為其尺寸變化非常大。可以通過使用optimize table來整理碎片,保證資料庫性能不下降,優化那些受碎片影響的數據表。 optimize table可以用於MyISAM和BDB類型的數據表。實際上任何碎片整理方法都是用mysqlmp來轉存數據表,然後使用轉存後的文件並重新建數據表;
20、使用procere analyse()
可以使用procere analyse()顯示最佳類型的建議,使用很簡單,在select語句後面加上procere analyse()就可以了;例如:
select * from students procere analyse();
select * from students procere analyse(16,256);
第二條語句要求procere analyse()不要建議含有多於16個值,或者含有多於256位元組的enum類型,如果沒有限制,輸出可能會很長;
21、使用查詢緩存
1)查詢緩存的工作方式:
第一次執行某條select語句時,伺服器記住該查詢的文本內容和查詢結果,存儲在緩存中,下次碰到這個語句時,直接從緩存中返回結果;當更新數據表後,該數據表的任何緩存查詢都變成無效的,並且會被丟棄。
2)配置緩存參數:
變數:query_cache _type,查詢緩存的操作模式。有3中模式,0:不緩存;1:緩存查詢,除非與 select sql_no_cache開頭;2:根據需要只緩存那些以select sql_cache開頭的查詢; query_cache_size:設置查詢緩存的最大結果集的大小,比這個值大的不會被緩存。
22、調整硬體
1)在機器上裝更多的內存;
2)增加更快的硬碟以減少I/O等待時間;
尋道時間是決定性能的主要因素,逐字地移動磁頭是最慢的,一旦磁頭定位,從磁軌讀則很快;
3)在不同的物理硬碟設備上重新分配磁碟活動;
如果可能,應將最繁忙的資料庫存放在不同的物理設備上,這跟使用同一物理設備的不同分區是不同的,因為它們將爭用相同的物理資源(磁頭)。
❸ 那有比較全的MySql命令啊
1. 連接mysql:
mysqlbinmysql -h主機地址 -u 用戶名 -p 用戶密碼
2.退出mysql:exit
3. 修改密碼:
mysqlbinmysqladmin -uroot -p(oldpassword) password newpassword
4.增加用戶:
添加一個用戶test1 密碼為ABC;讓他可以在任何主機上登錄,並對所有資料庫有查詢、插入、修改、刪除的許可權。首先用以root用戶連入
mysql,然後鍵入以下命令:grant select,insert,update,delete on *.* to test1@"%" Identified
by "abc";
增加一個用戶test2密碼為abc,讓其只可以在localhost上登錄,並可以對資料庫mydb進行查詢、插入、修改、刪除的操作(localhost指本地
主機,即mysql資料庫所在的那台主機),這樣用戶即使用知道test2的密碼,也無法從internet上直接訪問資料庫,只能通過mysql主機上的web頁
來訪問了。grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
增加一個可以從任何地方連接伺服器的一個完全的超級用戶
grant all privileges on *.* to test3@"%" identified by 'password' with grant option;
5.刪除授權
revoke select,insert,update,delete om *.* from test2@localhost ;
--------------------------------------------------------
6.顯示資料庫
show databases;
7.顯示資料庫中的表
use dataname;
show tables;
8.顯示表的結構
describe tablesname;
9.建庫
create database 庫名;
10.建表
use dataname;
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
); //建表結束
//以下為插入欄位
insert into teacher values('','glchengang','深圳一中','1976-10-10');
insert into teacher values('','jack','深圳一中','1975-12-23');
註:在建表中
(1) 將ID設為長度為3的數字欄位:int(3),並讓它每個記錄自動加一: auto_increment,
並不能為空:not null,而且讓它成為主欄位primary key
(2) 將NAME設為長度為10的字元欄位
(3) 將ADDRESS設為長度50的字元欄位,而且預設值為深圳。varchar和char有什麼區別
呢,只有等以後的文章再說了。
(4) 將YEAR設為日期欄位。
如果你在mysql提示符鍵入上面的命令也可以,但不方便調試。 你可以將以上命令
原樣寫入一個文本文件中假設為school.sql,然後復制到c:下,並在DOS狀態進入目錄
mysql in,然後鍵入以下命令:
mysql -uroot -p密碼 < c:school.sql
如果成功,空出一行無任何顯示;如有錯誤,會有提示。(以上命令已經調試,你
只要將//的注釋去掉即可使用)。
11.刪除庫和刪除表
drop dataname;
drop tablename;
12.將表中的記錄清空
delete from tablename;
13.顯示表中的記錄
select * from tablename;
14.表重命名
alter table t1 rename t2
---------------------------------------------------------
15. 備份資料庫
mysqlbinmysqlmp -h(ip) -uroot -p(password) databasename > database.sql
16. 恢復資料庫
mysqlbinmysql -h(ip) -uroot -p(password) databasename < database.sql
17.復制資料庫
mysqlmp --all-databases > all-databases.sal
18.備份表
mysqlbinmysqlmp -h(ip) -uroot -p(password) databasename tablename > tablename.sql
19.恢復表(操作前先把原來的表刪除)
mysqlbinmysql -h(ip) -uroot -p(password) databasename tablename < tablename.sql
----------------------------------------------------------
20.為了改變列a,從INTEGER改為TINYINT NOT NULL(名字一樣),
並且改變列b,從CHAR(10)改為CHAR(20),同時重命名它,從b改為c:
ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
增加一個新TIMESTAMP列,名為d:
ALTER TABLE t2 ADD d TIMESTAMP;
在列d上增加一個索引,並且使列a為主鍵:
ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
刪除列c:
ALTER TABLE t2 DROP COLUMN c;
增加一個新的AUTO_INCREMENT整數列,命名為c:
ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c);
注意,我們索引了c,因為AUTO_INCREMENT柱必須被索引,並且另外我們聲明c為NOT NULL,
因為索引了的列不能是NULL
---------------------------------------------------------------
21.數據的導入導出
A。mysqlimport
語法:mysqlbinmysqlimport database tables.txt( 文件名需要與表名相同)
參數:-d or --delete 新數據導入數據表中之前刪除數據數據表中的所有信息;
-f or --force 不管是否遇到錯誤,mysqlimport將強制繼續插入數據;
-i or --ignore mysqlimport跳過或者忽略那些有相同唯一關鍵字的行, 導入文件中的數據將被忽略;
-l or -lock-tables 數據被插入之前鎖住表,這樣就防止了, 你在更新資料庫時,用戶的查詢和更新受到影響;
--fields-enclosed- by= char
指定文本文件中數據的記錄時以什麼括起的, 很多情況下數據以雙引號括起。 默認的情況下數據是沒有被字元括起的。
--fields-terminated- by=char
指定各個數據的值之間的分隔符,在句號分隔的文件中,分隔符是句號。您可以用此選項指定數據之間的分隔符。默認的分隔符是跳格符
(Tab)
--lines-terminated- by=str
此選項指定文本文件中行與行之間數據的分隔字元串 或者字元。 默認的情況下mysqlimport以newline為行分隔符。 您可以選擇用一個字
符串來替代一個單個的字元: 一個新行或者一個回車。
mysqlimport命令常用的選項還有-v 顯示版本(version), -p 提示輸入密碼(password)等。
--------------------------------------------------------------
22.常用插入、修改、刪除語句
插入記錄:insert into teacher values('','glchengang','深圳一中','1976-10-10');
修改記錄:update mytable set single=′y′ where name=′abccs′;
刪除記錄:delete from mytable where name=′abc′;