首頁 >資料庫 >mysql教程 >詳細介紹MySQL基礎常用指令

詳細介紹MySQL基礎常用指令

WBOY
WBOY轉載
2021-12-23 18:37:142874瀏覽

這篇文章為大家帶來了關於mysql基礎指令總結,除了怎樣連接資料庫,修改密碼以外,還有一些常用的指令,希望對大家有幫助。

詳細介紹MySQL基礎常用指令

一、連接MySQL

格式: mysql -h主機位址-u使用者名稱-p使用者密碼

##1、連接到本機上的MySQ:

     首先在開啟cmd窗口,輸入mysql -uroot -p ,然後空格進入MySQL控制台,MySQL的提示符號是: mysql>。
mysql -uroot -p /*如果刚安装好MySQL,root是没有密码的*/

2 、連接到遠端主機上的MySQL:

     假設遠端主機的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密碼為空時,設定root密碼:
mysql> mysqladmin -uroot newpassword;   -- 因为开始时root没有密码,所以-p旧密码 可以省略

2、使用sqladmin 指令修改密碼
mysql> mysqladmin -uroot -p123456 password 12345678;

######################## ###3、使用set passsword指令修改密碼:############
mysql> set password for 用户名@localhost = password('新密码');
############4、忘記root密碼情況下:##### #######
      ①关闭正在运行的MySQL服务。
      ②打开DOS窗口,转到mysql\bin目录。
      ③输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
      ④再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),输入mysql回车,如果成功,将出现MySQL提示符 >。
      ⑤连接权限数据库: use mysql;
      ⑥改密码:update user set password=password("新密码") where user="root";(别忘了最后加分号) 。
      ⑦刷新权限(必须步骤):flush privileges; 。
      ⑧退出mysql  quit;
mysqld --skip-grant-tables   
mysql> use mysql;   --连接权限数据库
mysql> update user set password=password("新密码") where user="root";   -- 改密码
mysql> flush privileges;    -- 刷新权限
mysql> quit;    -- 退出mysql

三、MySQL--常用命令

1、创建数据库(Create)

mysql> create database db_name;  -- 创建数据库
mysql> show databases;           -- 显示所有的数据库
mysql> drop database db_name;    -- 删除数据库
mysql> use db_name;              -- 选择数据库
mysql> create table tb_name (字段名 varchar(20), 字段名 char(1));   -- 创建数据表模板
mysql> show tables;              -- 显示数据表
mysql> desc tb_name;            -- 显示表结构
mysql> drop table tb_name;      -- 删除表

    例如:

/*创建学生表*/
create table Student(
     Sno char(10) primary key,
     Sname char(20) unique,
     Ssex char(2),
     Sage smallint,
     Sdept char(20)
);

2、插入数据(Insert)

     insert into 语句用于向表格中插入新的行:
/*第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:*/
mysql> insert into tb_name values (value1,value2,value3,...);
/*第二种形式需要指定列名及被插入的值:*/
mysql> insert into tb_name (column1,column2,column3,...) values (value1,value2,value3,...);

     例如:

/*插入数据*/

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、查询数据(Select)

       select語句除了可以檢視資料庫中的表格和檢視的資訊外,也可以檢視 SQL Server的系統資訊、複製、建立資料表。其查詢功能強大,是SQL語言的靈魂語句,也是SQL中使用頻率最高的語句。
基本select語句:
      一個基本的select語句可分解成三個部分:找什麼資料(select)、從哪裡找(from)、尋找的條件是什麼(where)。
      select 語句的一般格式如下:

##                    select <目標清單馬達清單>
                      
                                                   地                         <分組表達式>]
                   [having <條件>]
               [order by <排序表達式>[ASC|DESC]]


#(一)查詢指定的欄位

##        

#1.所有資料表中列



#############################在select語句指定列的位置上使用*號時,表示查詢表的所有列。 ###############              範本:######select * from #########tb_name;########select * from ##########tb_name;######

        2.已指定的資料列



#              查詢多重欄位時,且列名之間要以逗號隔開。               範本

select tb_name.
<字元型欄>#select tb_name.<字元型欄>
#select;字元型欄位> 
... from  tb_name;

        
3.指定查詢結果中的欄位標題
              以指定欄位標題(也稱為欄位別名)讓輸出結果更容易被人理解。               指定列標題時,可在列名之後使用AS子句;也可使用:列別名=<表達式>的形式指定列標題。               AS子句的格式為:列名或計算表達式[AS] 欄位標題


              範本

select
<字元型欄> 
as 欄位標題1,
<字元型欄位> 
as 欄位標題2,
<字元型欄> 

as 欄位標題3 ############from bt_name;# ########################################################### ######4.查詢經過計算的列(即表達式的值)############################### ######             使用select查詢資料列時,且不僅可以資料列的原始值作為結果,也可將資料列值計算後所得值作為查詢結果,即select子句可以查詢表達式的值,表達式可由列名、常數及算術運算子組成。 ###############              ###查詢結果計算欄位顯示「無列名」,一般要給計算列加列標題。 ##################              其中:表達式中可用的運算子有:加、減-、乘*、除/、取餘%###### ################

              範本select <字元型欄位>, <字元型欄位>,列標題= <字元型欄位> * n from tb_name;

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

       格式: select [all|distinct] [top n[percent]]<目標清單運算式清單> from 表名

         #1. 消除查詢結果中的重複行

              關聯式資料庫來說,表格中的每一行都必須是不同的(即無重複列) 。但當對錶進行查詢時若只選擇其中的某些列,查詢結果中就可能會出現重複行。
              在使用distinct關鍵字上使用distinct關鍵字可以消除結果集中的重複行,


              範本:
select distinct <字元型欄>[,<字元型欄位>,...] from tb_name ;
        #2. 限制查詢結果中的傳回行數
              使用top選項限制查詢結果的回傳行數,即傳回指定數量的記錄數。

#########              其中:n為正整數,表示傳回查詢結果集的前n行;若帶percent關鍵字,則表示傳回結果集的前n%行。 ###############              ######」範本######:######celect  top n from tb_name;#############celect  top n from tb_name;#################h##li曼前n 的資料*/#########              ######範本#######:######查詢前n% tb_name的資料*/#############

(三)查詢滿足條件的行: 用where子句實作條件查詢

            透過where子句實現,該子句必須緊接在From子句之後。
            格式為:select [all|distinct] [top n[percent]]<目標清單達式清單> from 錶名##o#hc <條件>;
            說明:以下列運算子可使用下列運算子或運算式:
       #  運算子                 運算子識別         <>,!> ;,!<
                  範圍運算子        between... and,not between... and
## 運算子 行為列符#      in,not in

                  模糊配對運算子like,not like

                 空格運算              邏輯運算子        and,or,且not


        1.使用比較運算子:

        

#       #:

select * from tb_name where <字元型欄位> >= n ;##

        2. 指定範圍:

##                      附:between...and和not between...and。
              格式為:select * from tb_name where [not] between <表達式1> and <
              其中:between關鍵字之後的是範圍的下限(即低值),and關鍵字之後的是範圍的上限(即高值)
#              用於以「或未」指定範圍內所指定範圍的欄位值。

       3.使用列舉:




使用in關鍵字可以指定一個值的集合,集合中列出所有可能的值,當表達式的值與集合中的任一元素個相符時,即傳回true,否則傳回false。              模板

select * from tb_name where <字元型欄> [not] in(值1,值2,...,值n);

       

4.使用萬用字元進行模糊查詢:

#             可用like 子句進行字串的模糊符合查詢,like子句會傳回邏輯值(true或False)。              like子句的格式:
select * from tb_name where <字符型字段> [not] like <匹配串>;
             其意義為:找出指定欄位值與符合字串相符的記錄。匹配串中通常含有通配符%和_(底線)。              其中:  %:代表任意長度(含0)的字串

######################################################################### ###       ######5.使用null的查詢###################             當需要判定一個表達式的值是否為空白值時,空格值是否為空格值時,使用is null關鍵字。 #########             當不使用not時,若表達式的值為空值,則回傳true,否則傳回false;使用not時,結果剛好相反。 #########             範本######:######select * from tb_name wher#######e <字元型欄位> is [not] null;######e <字元型欄> is [not] null;##n] null;## #############

        #6.多重條件查詢:使用邏輯運算子

##       (與:兩個條件都要滿足)和or(或:滿足其中一個條件即可)可用來聯接多個查詢條件。 and的優先權高於or,但若使用括號可以改變優先權。
             模板select * from tb_name where <字符型字段> = 'volues' and <字符型欄> > n;

#(四)對查詢結果排序


(四)對查詢結果排序
        order by子句可用於查詢結果依照一個或多個欄位的值(或表達式的值)進行升序(ASC)或降序(DESC)排列,預設為升序。
        格式:order by {排序表達式[ASC|DESC]}[,...n];        其中:排序表達式##       式既可以是單一的一個字段,也可以是由字段、函數、常數等組成的表達式,或一個正整數。
        範本:

select * from tb_name order by

# <排序運算式> <
##(五)使用統計函數:又稱集函數,聚合函數
        在對錶進行檢索時,經常需要對結果進行計算或統計,T-SQL提供了一些統計函數(也稱集函數或聚合函數),用來增強檢索功能。統計函數用於計算表中的數據,即利用這些函數對一組數據進行計算,並傳回單一的值。         常用統計函數表
             

              AVG              AVG               max          求最大

              min     值

              sum          求和

###########################################################################################################################################

        1. SUM與AVG

            
#        的和或平均值。
             範本:select avg(<字元型欄>) as 平均數,sum(< 字型欄位總數from tb_name #>) as 總數from tb_name #> ##where <字元型欄> ='字串';

       ##  2. Max與Min

#             功能:求指定式的最大或極小值。
             模板:select max(<字元型欄>) as 最大值,min(<##select;) as 最小值

##' #from tb_name;
#        
3. count
##3. count




             此函數有兩種格式:count(*)且count([all]|[distinct] 欄位名稱),為避免出錯,查詢記錄數量一般使用count(*),而查詢某欄位有幾種取值用count(distinct 欄位名)。
             (1).count(*):
           

######                 範本:######select count(*) as = ).count([all]|[distinct] 欄位名稱)#########                 功能:統計指定欄位值不為空的記錄個數,且欄位的資料類型可為text、image、ntext、uniqueifier之外的任何類型。 #########                 範本:######select count(<字元型欄位>)as as 總值 ########; ##########(六)對查詢結果分組###################        group by子句用於將查詢結果表按某一列或多列值進行分組,列值相等的為一組,每組統計出一個結果。此子句常與統計函數一起使用進行分組統計。 #########        格式為:######group by 分組欄位[,...n][having <條件式>];################### #####
        #1.使用group by子句後
#             se by子句中所指定的分組欄位及統計函數。
        2.having子句的用法
         
        子句配合使用,用於篩選分組後的結果(篩選條件中常含有統計函數)。
        3
. 群組查詢時不包含統計函數的條件
##       
       子句;含有統計函數的條件,則只能用having子句。              範本:
select <字元型欄>,count(*) as 欄位標題 

from tb_name where <_name where <字元型欄>='字串' group by <字元型欄>;

4、修改資料(Update)
    Update 語句用來修改表格中的資料。
          格式:

update tb_name set 列名稱= 新值where 列名稱= 某值;

### ######5、刪除資料(Delete)##########

      刪除單一行
          格式:delete from tb_name where 欄位名稱= 某值;
#      刪除所有行
##          可以沒有刪除表格中的狀況下刪除所有的行。這表示表格的結構、屬性和索引都是完整的:
          格式: delete * from tb_name   或  delete from tb_name;

四、MySQL -- alter指令

# alter add指令用來增加表格的欄位。  alter add
指令格式:alter table #表名add欄位 類型 其他;

# 例如,在表格MyClass
中加入了一個欄位passtest
,類型為int(4)
,預設值為0
##################################################### ####
mysql> alter table MyClass add passtest int(4) default '0';
 添加两个字段  
mysql> alter table Person add age int,add address varchar(11);
 删除两个字段
mysql> alter table Person drop column age,drop column address;
 修改字段的注释
mysql> alter table `student` modify column `id` comment '学号';
 1) 加索引
      mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);

 mysql> alter table employee add index emp_name (name);
 2) 加主关键字的索引
      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) 删除某个索引
      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 -- 应用

学生-课程数据库

 学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
 课程表:Course(Cno,Cname,Cpno,Ccredit)
 学生选课表:SC(SnoCno,Grade)
 关系的主码加下划线表示。各个表中的数据示例如图所示:

Student表

学号

Sno

姓名

Sname

性别

Ssex

年龄

Sage

所在系

Sdept

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

课程号

Cno

课程名

Cname

先修课

Cpno

学分

Ccredit

1 数据库 5 4
2 数学   2
3 信息系统 1 4
4 操作系统 6 3
5 数据结构 7 4
6 数据处理   2
7 PASCAL语言 6 4
SC表

学号

Sno

课程号

Cno

成绩

Grade

20180001

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

 建立一个“学生”表Student:

create table Student(
  Sno char(9) peimary key, /*列级完整性约束条件,Sno是主码*/
  Sname char(20) unique, /* Sname取唯一值*/
  Ssex char(2),
  Sage smallint,
  Sdept char(20)
);
 建立一个“课程”表Course:
create table Course(
  Sno char(4) primary key, /*列级完整性约束条件,Cname不能取空值*/
  Sname char(40) not null, /*Cpno的含义是先修课*/
  Cpno char(4)
  Ccredit smallint,
  foreign key (Cpnoo) references Course(Cno) /*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/
);
 建立学生选课表SC:
create table SC(
  Sno char(9),
  Cno char(4),
  Grade smallint,
  frimary key (Sno,Cno), /*主码由两个属性构成,必须作为表级完整性进行定义*/
  foreign key (Sno) references Student(Sno), /*表级完整性约束条件,Sno是外码,被参照表是Student*/
  foreign key (Cno) references Course(Cno)   /*表级完整性约束条件,Cno是外码,被参照表是Course */
);

推荐学习:mysql视频教程

以上是詳細介紹MySQL基礎常用指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除