詳細(xì)介紹MySQL基礎(chǔ)常用命令

本篇文章給大家?guī)砹岁P(guān)于mysql基礎(chǔ)命令總結(jié),除了怎樣連接數(shù)據(jù)庫,修改密碼以外,還有一些常用的命令,希望對(duì)大家有幫助。

詳細(xì)介紹MySQL基礎(chǔ)常用命令

一、連接mysql

格式: mysql -h主機(jī)地址 -u用戶名 -p用戶密碼

1、連接到本機(jī)上的MySQ:

? ? ?首先在打開cmd窗口,輸入mysql -uroot -p ,然后空格進(jìn)入MySQL控制臺(tái),MySQL的提示符是: mysql>。
mysql -uroot -p /*如果剛安裝好MySQL,root是沒有密碼的*/

詳細(xì)介紹MySQL基礎(chǔ)常用命令

2、連接到遠(yuǎn)程主機(jī)上的MySQL:

? ? ?假設(shè)遠(yuǎn)程主機(jī)的IP為:192.168.206.100,用戶名為root,密碼為12345678。
mysql> mysql -h192.168.206.100 -uroot -p12345678; /*u與root可以不加空格*/

3、退出MySQL命令: exit 或 quit(回車):

mysql> exit/quit;

二、MySQL–修改密碼

格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

1、root密碼為空時(shí),設(shè)置root密碼:

mysql> mysqladmin -uroot newpassword;   -- 因?yàn)殚_始時(shí)root沒有密碼,所以-p舊密碼 可以省略

2、使用 sqladmin 命令修改密碼

mysql> mysqladmin -uroot -p123456 password 12345678;

3、使用set passsword命令修改密碼:

mysql> set password for 用戶名@localhost = password('新密碼');

4、忘記root密碼情況下:

? ? ? ①關(guān)閉正在運(yùn)行的MySQL服務(wù)。
? ? ? ②打開DOS窗口,轉(zhuǎn)到mysqlbin目錄。
? ? ? ③輸入mysqld –skip-grant-tables 回車。–skip-grant-tables 的意思是啟動(dòng)MySQL服務(wù)的時(shí)候跳過權(quán)限表認(rèn)證。
? ? ? ④再開一個(gè)DOS窗口(因?yàn)閯偛拍莻€(gè)DOS窗口已經(jīng)不能動(dòng)了),輸入mysql回車,如果成功,將出現(xiàn)MySQL提示符 >。
? ? ? ⑤連接權(quán)限數(shù)據(jù)庫: use mysql;
? ? ? ⑥改密碼:update user set password=password(“新密碼”) where user=”root”;(別忘了最后加分號(hào)) 。
? ? ? ⑦刷新權(quán)限(必須步驟):flush privileges; 。
? ? ? ⑧退出mysql? quit;。
mysqld --skip-grant-tables    mysql> use mysql;   --連接權(quán)限數(shù)據(jù)庫 mysql> update user set password=password("新密碼") where user="root";   -- 改密碼 mysql> flush privileges;    -- 刷新權(quán)限 mysql> quit;    -- 退出mysql

三、MySQL–常用命令

1、創(chuàng)建數(shù)據(jù)庫(Create)

mysql> create database db_name;  -- 創(chuàng)建數(shù)據(jù)庫 mysql> show databases;           -- 顯示所有的數(shù)據(jù)庫 mysql> drop database db_name;    -- 刪除數(shù)據(jù)庫 mysql> use db_name;              -- 選擇數(shù)據(jù)庫 mysql> create table tb_name (字段名 varchar(20), 字段名 char(1));   -- 創(chuàng)建數(shù)據(jù)表模板 mysql> show tables;              -- 顯示數(shù)據(jù)表 mysql> desc tb_name;            -- 顯示表結(jié)構(gòu) mysql> drop table tb_name;      -- 刪除表

????例如:

/*創(chuàng)建學(xué)生表*/ create table Student(      Sno char(10) primary key,      Sname char(20) unique,      Ssex char(2),      Sage smallint,      Sdept char(20) );

2、插入數(shù)據(jù)(Insert)

?? ? insert into 語句用于向表格中插入新的行:
/*第一種形式無需指定要插入數(shù)據(jù)的列名,只需提供被插入的值即可:*/ mysql> insert into tb_name values (value1,value2,value3,...); /*第二種形式需要指定列名及被插入的值:*/ mysql> insert into tb_name (column1,column2,column3,...) values (value1,value2,value3,...);

?????例如:

/*插入數(shù)據(jù)*/  mysql> insert into Student values ( 20180001,張三,男,20,CS);  mysql> insert into Student values ( 20180002,李四,男,19,CS);  mysql> insert into Student (Sno,Sname,Ssex,Sage,Sdept) values ( 20180003,王五,男,18,MA);  mysql> insert into Student (Sno,Sname,Ssex,Sage,Sdept) values ( 20180004,趙六,男,20,IS);

3、查詢數(shù)據(jù)(Select)

? ? ? ?select語句除了可以查看數(shù)據(jù)庫中的表格和視圖的信息外,還可以查看 SQL Server的系統(tǒng)信息、復(fù)制、創(chuàng)建數(shù)據(jù)表。其查詢功能強(qiáng)大,是SQL語言的靈魂語句,也是SQL中使用頻率最高的語句。
基本select語句:
? ? ? 一個(gè)基本的select語句可分解成三個(gè)部分:查找什么數(shù)據(jù)(select)、從哪里查找(from)、查找的條件是什么(where)。
? ? ? select 語句的一般格式如下:

????????????????????????????????????????????select
????????????????????????????????????????????[into 新表名]
????????????????????????????????????????????from 表名或視圖名
????????????????????????????????????????????[where ]
????????????????????????????????????????????[group by ]
????????????????????????????????????????????[having ]
????????????????????????????????????????????[order by [ASC|DESC]]

(一)查詢指定的列

????????1.查詢表中所有列

??????????????在select語句指定列的位置上使用*號(hào)時(shí),表示查詢表的所有列。
????????? ? ? 模板:select * from tb_name;

????????2.查詢表中指定的列

????????? ? ? 查詢多列時(shí),列名之間要用逗號(hào)隔開。
????????? ? ? 模板select tb_name.,?… from? tb_name;

????????3.指定查詢結(jié)果中的列標(biāo)題

????????? ? ? 通過指定列標(biāo)題(也叫列別名)可使輸出結(jié)果更容易被人理解。
? ? ? ? ? ? ? 指定列標(biāo)題時(shí),可在列名之后使用AS子句;也可使用:列別名=的形式指定列標(biāo)題。
????????? ? ? AS子句的格式為:列名或計(jì)算表達(dá)式 [AS] 列標(biāo)題
? ? ? ? ? ? ? 模板select ?as 列標(biāo)題1,?as 列標(biāo)題2, ?as 列標(biāo)題3?from bt_name;

????????4.查詢經(jīng)過計(jì)算的列(即表達(dá)式的值)

????????? ? ?使用select對(duì)列進(jìn)行查詢時(shí),不僅可以直接以列的原始值作為結(jié)果,而且還可以將列值進(jìn)行計(jì)算后所得值作為查詢結(jié)果,即select子句可以查詢表達(dá)式的值,表達(dá)式可由列名、常量及算術(shù)運(yùn)算符組成。
? ? ? ? ? ? ? 查詢結(jié)果計(jì)算列顯示“無列名”,一般要給計(jì)算列加列標(biāo)題。
? ? ? ? ? ? ? 其中:表達(dá)式中可以使用的運(yùn)算符有:加+、減-、乘*、除/、取余%

? ? ? ? ? ? ? 模板select ,,列標(biāo)題 = ?* n?from tb_name;

(二)選擇行:選擇表中的部分行或全部行作為查詢的結(jié)果

? ? ? ?格式: select [all|distinct] [top n[percent]]?from 表名

????????1. 消除查詢結(jié)果中的重復(fù)行

? ? ? ? ? ? ? 對(duì)于關(guān)系數(shù)據(jù)庫來說,表中的每一行都必須是不同的(即無重復(fù)行)。但當(dāng)對(duì)表進(jìn)行查詢時(shí)若只選擇其中的某些列,查詢結(jié)果中就可能會(huì)出現(xiàn)重復(fù)行。
? ? ? ? ? ? ? 在select語句中使用distinct關(guān)鍵字可以消除結(jié)果集中的重復(fù)行,
? ? ? ? ? ? ? 模板:select distinct [,,…] from tb_name;

????????2. 限制查詢結(jié)果中的返回行數(shù)

? ? ? ? ? ? ? 使用top選項(xiàng)可限制查詢結(jié)果的返回行數(shù),即返回指定個(gè)數(shù)的記錄數(shù)。
? ? ? ? ? ? ? 其中:n是一個(gè)正整數(shù),表示返回查詢結(jié)果集的前n行;若帶percent關(guān)鍵字,則表示返回結(jié)果集的前n%行。
??????????????模板celect? top n from tb_name; /*查詢前 n 的數(shù)據(jù)*/
??????????????模板celect top n percent from tb_name; /*查詢前 n% tb_name的數(shù)據(jù)*/

(三)查詢滿足條件的行: 用where子句實(shí)現(xiàn)條件查詢

????????????通過where子句實(shí)現(xiàn),該子句必須緊跟在From子句之后。
????????????格式為:select [all|distinct] [top n[percent]]?from 表名?where ;
????????????說明:在查詢條件中可使用以下運(yùn)算符或表達(dá)式:
? ? ? ? ? ? ? ? ? 運(yùn)算符 ????????????????運(yùn)算符標(biāo)識(shí)
? ? ? ? ? ? ? ? ? 比較運(yùn)算符 ????????,>=,!=,,!>,!? ? ? ? ? ? ? ? ? 范圍運(yùn)算符 ????????between… and,not between… and
? ? ? ? ? ? ? ? ? 列舉運(yùn)算符 ????????in,not in
? ? ? ? ? ? ? ? ? 模糊匹配運(yùn)算符 like,not like
? ? ? ? ? ? ? ? ? 空值運(yùn)算符 ????????is null,is not null
? ? ? ? ? ? ? ? ? 邏輯運(yùn)算符 ????????and,or,not

????????1.使用比較運(yùn)算符:

????????? ? ??模板select * from tb_name?where ?>= n ;

????????2.指定范圍:

????????? ? ? 用于指定范圍的關(guān)鍵字有兩個(gè):between…and和 not between…and。
????????? ? ? 格式為:select * from tb_name?where [not] between and ;
????????? ? ? 其中:between關(guān)鍵字之后的是范圍的下限(即低值),and關(guān)鍵字之后的是范圍的上限(即高值)
??????????????用于查找字段值在(或不在)指定范圍的行。

???????3.使用列舉:

? ? ? ? ? ? ?使用in關(guān)鍵字可以指定一個(gè)值的集合,集合中列出所有可能的值,當(dāng)表達(dá)式的值與集合中的任一元素個(gè)匹配時(shí),即返回true,否則返回false。
? ? ? ? ? ? ?模板select * from tb_name?where ?[not] in(值1,值2,…,值n);

???????4.使用通配符進(jìn)行模糊查詢:

? ? ? ? ? ? ?可用like 子句進(jìn)行字符串的模糊匹配查詢,like子句將返回邏輯值(true或False)。
? ? ? ? ? ? ?like子句的格式: select * from tb_name?where? [not] like ;
? ? ? ? ? ? ?其含義是:查找指定字段值與匹配串相匹配的記錄。匹配串中通常含有通配符%和_(下劃線)。
? ? ? ? ? ? ?其中:??%:代表任意長度(包括0)的字符串

???????5.使用null的查詢

? ? ? ? ? ? ?當(dāng)需要判定一個(gè)表達(dá)式的值是否為空值時(shí),使用 is null關(guān)鍵字。
????????? ? ?當(dāng)不使用not時(shí),若表達(dá)式的值為空值,則返回true,否則返回false;當(dāng)使用not時(shí),結(jié)果剛好相反。
????????? ? ?模板select * from tb_name?where ?is [not] null;

????????6.多重條件查詢:使用邏輯運(yùn)算符

????????? ? ?邏輯運(yùn)算符and(與:兩個(gè)條件都要滿足)和or(或:滿足其中一個(gè)條件即可)可用來聯(lián)接多個(gè)查詢條件。and的優(yōu)先級(jí)高于or,但若使用括號(hào)可以改變優(yōu)先級(jí)。
????????? ? ?模板select * from tb_name?where? = ‘volues’ and? > n;

(四)對(duì)查詢結(jié)果排序

????? ? order by子句可用于對(duì)查詢結(jié)果按照一個(gè)或多個(gè)字段的值(或表達(dá)式的值)進(jìn)行升序(ASC)或降序(DESC)排列,默認(rèn)為升序。
????????格式:order by {排序表達(dá)式[ASC|DESC]}[,…n];
????????其中:排序表達(dá)式既可以是單個(gè)的一個(gè)字段,也可以是由字段、函數(shù)、常量等組成的表達(dá)式,或一個(gè)正整數(shù)。
????????模板:select * from tb_name?order by? ;

(五)使用統(tǒng)計(jì)函數(shù):又稱集函數(shù),聚合函數(shù)

????????在對(duì)表進(jìn)行檢索時(shí),經(jīng)常需要對(duì)結(jié)果進(jìn)行計(jì)算或統(tǒng)計(jì),T-SQL提供了一些統(tǒng)計(jì)函數(shù)(也稱集函數(shù)或聚合函數(shù)),用來增強(qiáng)檢索功能。統(tǒng)計(jì)函數(shù)用于計(jì)算表中的數(shù)據(jù),即利用這些函數(shù)對(duì)一組數(shù)據(jù)進(jìn)行計(jì)算,并返回單一的值。
????????常用統(tǒng)計(jì)函數(shù)表
????????? ? ? 函數(shù)名 ? ? ?功能
????????? ? ? AVG ????? ? 求平均值
????????? ? ? count ???????求記錄個(gè)數(shù),返回int類型整數(shù)
????????? ? ? max ????? ? ?求最大值
????????? ? ? min ????? ? ? 求最小值
????????? ? ? sum ????? ? ?求和

????????1. SUM和AVG

????????? ? ?功能:求指定的數(shù)值型表達(dá)式的和或平均值。
????????? ? ?模板:select avg() as 平均數(shù),sum() as 總數(shù) from tb_name?where ?=’字符串’;

????????2. Max和Min

????????? ? ?功能:求指定表達(dá)式的最大值或最小值。
????????? ? ?模板:select max() as 最大值,min() as 最小值?from tb_name;

????????3. count

????????? ? ?該函數(shù)有兩種格式:count(*)和count([all]|[distinct] 字段名),為避免出錯(cuò),查詢記錄個(gè)數(shù)一般使用count(*),而查詢某字段有幾種取值用count(distinct 字段名)。
????????? ? ?(1).count(*):
????????????? ? ?功能:統(tǒng)計(jì)記錄總數(shù)。
????????????? ? ?模板:select count(*) as 總數(shù)?from tb_name;
????????? ? ?(2).count([all]|[distinct] 字段名)
????????????? ? ?功能:統(tǒng)計(jì)指定字段值不為空的記錄個(gè)數(shù),字段的數(shù)據(jù)類型可以是text、image、ntext、uniqueidentifier之外的任何類型。
????????????? ? ?模板:select count() as 總數(shù)?from tb_name;

(六)對(duì)查詢結(jié)果分組

????????group by子句用于將查詢結(jié)果表按某一列或多列值進(jìn)行分組,列值相等的為一組,每組統(tǒng)計(jì)出一個(gè)結(jié)果。該子句常與統(tǒng)計(jì)函數(shù)一起使用進(jìn)行分組統(tǒng)計(jì)。
????????格式為:group by 分組字段[,…n][having ];

????????1.在使用group by子句后
????????? ? ?select列表中只能包含:group by子句中所指定的分組字段及統(tǒng)計(jì)函數(shù)。
????????2.having子句的用法
????????? ? ?having子句必須與group by 子句配合使用,用于對(duì)分組后的結(jié)果進(jìn)行篩選(篩選條件中常含有統(tǒng)計(jì)函數(shù))。
????????3. 分組查詢時(shí)不含統(tǒng)計(jì)函數(shù)的條件
????????? ? ?通常使用where子句;含有統(tǒng)計(jì)函數(shù)的條件,則只能用having子句。
????????? ? ?模板:select ,count(*) as 列標(biāo)題?from tb_name?where =’字符串’?group by ;

4、修改數(shù)據(jù)(Update)

????Update 語句用于修改表中的數(shù)據(jù)。
? ? ? ? ? 格式:update tb_name set 列名稱 = 新值 where 列名稱 = 某值;

5、刪除數(shù)據(jù)(Delete)

??? ??刪除單行
? ? ? ? ? 格式:delete from tb_name where 列名稱 = 某值;
? ? ??刪除所有行
? ? ? ? ? 可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構(gòu)、屬性和索引都是完整的:
? ? ? ? ? 格式:delete * from tb_name? ?或? delete from tb_name;

四、MySQL — alter命令

?alter add命令用來增加表的字段。
?alter add
命令格式:alter table?表名 add字段?類型?其他;

?例如,在表MyClass中添加了一個(gè)字段passtest,類型為int(4),默認(rèn)值為0

mysql> alter table MyClass add passtest int(4) default '0';
?添加兩個(gè)字段??
mysql> alter table Person add age int,add address varchar(11);
?刪除兩個(gè)字段
mysql> alter table Person drop column age,drop column address;
?修改字段的注釋
mysql> alter table `student` modify column `id` comment '學(xué)號(hào)';
?1)?加索引
? ? ? mysql> alter table?表名 add index?索引名 (字段名1[,字段名2 …]);

 mysql> alter table employee add index emp_name (name);
?2)?加主關(guān)鍵字的索引
? ? ? mysql> alter table?表名 add primary key (字段名);

mysql> alter table employee add primary key(id);
?3)?加唯一限制條件的索引
? ? ? mysql> alter table?表名 add unique?索引名 (字段名);

 mysql> alter table employee add unique emp_name2(cardnumber);
?4)?刪除某個(gè)索引
? ? ? mysql> alter table?表名 drop index?索引名;

mysql>alter table employee drop index emp_name;
?5)?增加字段
mysql> ALTER TABLE table_name ADD field_name field_type;
?6)?修改原字段名稱及類型
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
?7)?刪除字段
MySQL ALTER TABLE table_name DROP field_name;

五、MySQL — 應(yīng)用

學(xué)生-課程數(shù)據(jù)庫

?學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept)
?課程表:Course(Cno,Cname,Cpno,Ccredit)
?學(xué)生選課表:SC(Sno,Cno,Grade)
?關(guān)系的主碼加下劃線表示。各個(gè)表中的數(shù)據(jù)示例如圖所示:

Student表

學(xué)號(hào)

Sno

姓名

Sname

性別

Ssex

年齡

Sage

所在系

Sdept

20180001 張三 20 CS
20180002 李四 19 CS
20180003 王五 18 MA
20180004 趙六 20 IS
Course表

課程號(hào)

Cno

課程名

Cname

先修課

Cpno

學(xué)分

Ccredit

1 數(shù)據(jù)庫 5 4
2 數(shù)學(xué) ? 2
3 信息系統(tǒng) 1 4
4 操作系統(tǒng) 6 3
5 數(shù)據(jù)結(jié)構(gòu) 7 4
6 數(shù)據(jù)處理 ? 2
7 PASCAL語言 6 4
SC表

學(xué)號(hào)

Sno

課程號(hào)

Cno

成績

Grade

20180001

1 92
20180001 2 85
20180001 3 88
20180002 2 90
20180002 3 80

?建立一個(gè)“學(xué)生”表Student:

create table Student(   Sno char(9) peimary key, /*列級(jí)完整性約束條件,Sno是主碼*/   Sname char(20) unique, /* Sname取唯一值*/   Ssex char(2),   Sage smallint,   Sdept char(20) );
?建立一個(gè)“課程”表Course:
create table Course(   Sno char(4) primary key, /*列級(jí)完整性約束條件,Cname不能取空值*/   Sname char(40) not null, /*Cpno的含義是先修課*/   Cpno char(4)   Ccredit smallint,   foreign key (Cpnoo) references Course(Cno) /*表級(jí)完整性約束條件,Cpno是外碼,被參照表是Course,被參照列是Cno*/ );
?建立學(xué)生選課表SC:
create table SC(   Sno char(9),   Cno char(4),   Grade smallint,   frimary key (Sno,Cno), /*主碼由兩個(gè)屬性構(gòu)成,必須作為表級(jí)完整性進(jìn)行定義*/   foreign key (Sno) references Student(Sno), /*表級(jí)完整性約束條件,Sno是外碼,被參照表是Student*/   foreign key (Cno) references Course(Cno)   /*表級(jí)完整性約束條件,Cno是外碼,被參照表是Course */ );

推薦學(xué)習(xí):mysql視頻教程

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊15 分享