MySQL學習記錄一

手動啓動mySql

1.手動

2.cmd —>services.msc 打開服務的窗口

3.使用管理員打開cmd

   net start mysql   :  啓動mysql的服務

   net stop  mysql  :關閉mysql的服務

 

mysql登陸

  1.mysql  -uroot   -proot   (其中proot中的root是密碼)

  2.mysql -hip -uroot -proot(其中ip爲遠程數據庫ip,proot中root 爲要連接的目標數據庫密碼)

3. Mysql  --host=127.0.0.1 --user=root  --password=root

 

mysql退出

  exit

  quit

 

Mysql目錄結構:

1.mysql的安裝目錄: bin

2.mysql的數據目錄:

  幾個概念:

     數據庫:文件夾

     表:文件

     數據:文件中的數據

3.mysql的配置文件:my.ini

 

操作Mysql

什麼事SQL?

使用sql(structured Query Language):結構化查詢語言

其實就是定義了操作所有關係型數據庫的規則.每一種數據庫的操作存在不一樣的地方,稱爲“方言”

 

2.SQL通用語法

  1.SQL語句可以單行或多行書寫,以分號結尾

  2.可使用空格和縮緊來增強語句的可讀性

  3.MySQL數據庫的SQL不區分大小寫,關鍵字建議使用大寫

  4.三種註釋

   *單行註釋:— 註釋內容 或 # 註釋內容(mysql特有),雙橫槓註釋內容和橫槓之間之間必須有空格

   *多行註釋:/*註釋*/

 

3.SQL的分類

1)DDL(Data Definition Language)數據定義語言,用來定義數據庫對象:數據庫,表,列等。關鍵字:create, drop, alter等

2)DML(Data Manipulation Language)數據操作語言,用來對數據庫中表的數據進行增刪改。關鍵字:insert, delete,update等

3)DQL(Data Query Language)數據查詢語言,用來查詢數據庫中表的記錄(數據)。關鍵字:select,where等

4)DCL(Data Control Language)數據控制語言(瞭解),用來定義數據庫的訪問權限和安全級別,及創建用戶。關鍵字:GRANT,REVOKE等。

 

客戶端圖形化工具:SQLYog

 

1.創建表:

create table student(

Id int,

name varchar(32),

age int,

score double(4,1),

birthday date,

insert_time timestamp

)

2.複製表:

create table 表名 like 被複制的表名

 

3.查某個數據庫中所有表名:

show tables

查詢表結構:

desc 表名

 

4.修改表的名稱

alter table 表名 rename to 新的表名;

修改表的字符集

alter table student character set  字符集名稱(utf8)

添加一列

alter table 表名 add 列名 數據類型

修改列的類型

alter table 表名 modify 列名 新的數據類型

修改列的名稱,類型

alter table 表名 change 舊列名(gender) 新列名(sex) 新的數據類型(varchar(20))

刪除列

alter table 表名 drop 列名

刪除表:

drop table 表名

drop table  if exists 表名

 

DML:

1.添加數據:

insert into 表名(列名1,列名2,…,列名n) values(值1,值2,…值n)

*列名跟值要一一對應;

*如果表名後不定義列名,則默認給所有列添加值

*除了數字,其他的值都需要用引號引起來,單引號雙引號都可以

2.刪除數據:

delete from 表名 where 條件

*如果不加條件則刪除表中所有記錄

*如果刪除表中所有記錄:

delete from 表名 --不推薦

truncate table 表名 --刪除表,然後再創建一個一摸一樣的空表

3.修改數據:

update 表名 set 列名1=值1,列名2=值2,列名n=值n

*如果不加條件,則會對錶中所有的數據進行操作

DQL:

查詢表中所有數據

select * from 表名

1.語法

   select

            字段列表

   from

            表名列表

  where

           條件列表

  group by

           分組字段

  having

           分組之後的條件

  order by

           排序

  limit

           分頁限定

 

2.基礎查詢

  1.多個字段的查詢

Select  列1,列2,*from 表名

  2.去除重複的結果集:DISTINCT

  select DISTINCT  列名 from 表名    DISTINCT是去除重複結果,保證結果集完全一樣纔會去重

  1. 計算列的值之和,一般只進行數值型的計算:

    IFNULL(表達式1,表達式2):

       表達式1:哪個字段需要判斷是否爲null;

       表達式2:如果該字段爲null的替換值

     select name, math, english,math+IFNULL(english,0) from student

   4.起別名 as 也可以省略:

     select name, math 數學, english 英語, math+IFNULL(english,0) as 總分 from student

 

  1. 條件查詢

       1.where子句後跟條件

       2.運算符:

           *<,>,<=,=>,=,<>

          select * from student where age <>20       //<>不等於,等價於!=

           *BETWEEN…AND

           select * from student where age BETWEEN 20 AND 30  //20-30之間

           *IN(集合)

            select * from student where age IN (19,22,25)  //查詢19,22,25歲的信息

           *LIKE

            //查詢姓馬的人

           select name from student where name LIKE ‘馬%’;// _表示單個任意字符,%%表示多個任意字符

           //查詢第二個字是化的人

           select name from student where name LIKE ‘_馬%‘;

           //查詢姓名是三個字的人

            select name from student where name LIKE ‘___’;//三個下劃線

           //查詢包含的 的人

            select name from student where name LIKE ‘%的%’;

           *IS NULL

           select english from student where english IS NULL   //null值不能使用等號去判斷,所以查詢使用IS NULL,英語成績爲null

          select english from student where english IS NOT NULL   //英語成績不爲null

           *and 或&&

            select * from student where age>20  and age<30  //20-30之間

           *or 或 ||

           *not 或 !

 

DQL查詢

      1.排序查詢

          語法:   order by子句

                                  order by 排序字段1 排序方式,排序字段2,排序方式2,...

          排序方式:

                 ASC:升序,默認

                DESC: 降序

         按照數學成績排名,如果數學成績相同,按照英語成績排名

         select * from student ORDER BY math ASC,english ASC;

        注意:如果有多個排序條件,當前邊的條件值一樣式,纔會判斷第二條件

 

      2.聚合函數

         將一列數據作爲一個整體,進行縱向的計算

        1.count():計算個數:一般選擇非空的列:主鍵

        Select count(需要計算的列的名稱) from 表名

        2.max():計算最大值

        Select max(需要計算的列的名稱) from 表名

        3.min():計算最小值

         Select min(需要計算的列的名稱) from 表名

        4.sum():計算和

         Select sum(需要計算的列的名稱) from 表名

        5.avg():計算平均值

        Select avg(需要計算的列的名稱) from 表名

       注意:聚合函數的計算會排出null值

               解決方案:1.count的時候爲null的使用ISNULL();

                                 2.不包含非空的列進行計算

    3.分組查詢:

        1.語法:group by 分組字段

        分組查詢男女同學平均分,分數低於70分的不參與分組,分組之後人數要大於2個人;

       select sex AVG(math),count(id) FROM student where math >70 GROUP BY sex Having count(id) >2;

select sex AVG(math),count(id) 人數 FROM student where math >70 GROUP BY sex Having 人數>2;

        2.注意:

                分組之後的查詢字段,查詢分組字段和聚合函數,其他字段無意義

                where和Having的區別:

                 where在分組之前進行限定,如果不滿足條件,則不參與分組。Having在分組之後進行限定,如果不滿足結果,則不                  會被查詢出來。

                where後不可以跟聚合函數,having後可以進行聚合函數的判斷。

    4.分頁查詢

         1.語法:limit(參數1,參數2) 參數1:開始的索引,參數2:每次查詢的數量

        //查詢第一頁,每頁查詢三條數據

         select * from student LIMIT 0,3;--第1頁

         select * from student LIMIT 3,3;—第2頁

         2.公式:開始的索引=(當前的頁碼-1)*每頁顯示的條件

         3.分頁操作是一個“方言”,limit是Mysql中的,orcle跟其他的不一樣

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章