使用終端操作數據庫及數據庫基本知識


一、連接數據庫

第一步肯定是連接數據庫,與用Navicat操作數據庫類似,連接數據庫需要四個參數

  • host(-h):默認是本機IP
  • port(-P):默認端口號3306
  • user(-u)
  • password(-p)

語句:mysql -h (IP) -P (端口) -u root -p

注:①先不用輸入密碼,輸入上條語句之后后續會讓輸密碼

     ②由於是操作的本機數據庫,IP和端口是默認的,可以不輸入,可以省略寫成mysql  -u root -p,如果要操作的是其他的數據庫,就需要輸入對應的IP和端口

二、管理數據庫

       1、展示數據庫:show databases;

        2、新建數據庫:create database 數據庫名 default charset utf8mb4;

和Navicat創建數據庫一個思想,主要從兩個方面考慮,一個是數據庫名,一個是字符集

        3、修改數據庫:alter database 數據庫名 default charset utf8mb4;

和Navicat修改數據庫一樣,不能修改數據庫名,只能對數據庫的字符集進行修改,

        4、刪除數據庫:drop database 數據庫名;

        5、選擇數據庫:use 數據庫名;

        6、退出當前數據庫:quit;

三、管理表

        1、展示表:show tables;

        2、新建表

create table table_name(

id integer primary key,

username varchar(20) not null,

birthday date

);

        3、刪除表:drop table 表名;

        4、修改表

修改字段名:

alter table + 表名 + change + 列名新列名列類型+[約束]

修改字段屬性:

alter table + 表名 + modify + 列名 + [列類型 +約束]

  5、查看表結構:desc 表名;

四、數據操作

1、增:insert into 表名(字段名1,字段名2)values(值1,值2);

注:並不是所有字段都必須加進去,但是必填字段必須寫

2、刪:delete from 表名 where 條件;

3、改:update 表名 set 字段1=新值1,字段2=新值2 where 條件;

4、查

①一覽表:select * from 表名;

②顯示部分字段:select 字段1,字段2 from 表名;

③根據限制條件查詢所有:select * from 表名 where 字段1=值1 and 字段2=值2;(注意:涉及到字符串都必須要加引號,不區分單雙引號)

④排序:(order by):select * from 表名 order by 字段名;

desc:降序排列

asc:升序排列,默認狀態是升序的,默認狀態時可以不寫asc

注:如果SQL語句中有查詢語句,order by 直接寫在查詢語句的后邊,而且不能加and,(and是查詢語句里邊的嘛!)

⑤限制查詢的條件:limit

注:計算機是從0開始數數

       limit 3其實就是limit0,3:表示從第零條數據開始查詢,一共顯示3條數據,顯示數據1-3

       limit3,5:就表示從第3條數據開始查詢,總共查詢5條數據,顯示數據4-8

例:查詢學生表中性別為女,年齡最大的前4位

例:查詢學生表中年齡大於20且地區不是成都的學生,找出年齡最大的前三位

select * from t_student where age>20 and address !='成都'order by age desc limit 3;

也可以這樣寫: select * from t_student where age>20 and address not in ('成都') order by age desc limit 3;

⑥多表聯查:

多表聯查分為內連接和外連接(外連接又分為左外連接和右外連接),查詢語法是相同的,不同的是取值

  • 內連接:join/inner join on:內連接取兩個表的交集部分
  • 外連接

           左外連接(左連接):left join on:左連接取左邊表的並集部分

           右外連接(右連接):right join on:右連接取右表的並集部分

查詢所有:select * from 表1 join 表2 on 表1.字段1=表2.字段2;

查詢選定字段及其值(表名.字段名): select 表1.字段a,表1.字段b,表2.字段c from 表1 join 表2 on 表1.字段1=表2.字段2;

注:表1.字段1=表2.字段2為表關系,可支持多張表聯合查詢

       SQL語句后邊還可以接上where條件以及排序等

       由於現在是多張表了,表示字段名時就需要在前面添加表名了,表示方法:表名.字段名

例:三張表進行查詢:直接在后邊加 join on

利用Navicat可以更加簡明的看出SQL語句結構:

五、邏輯判斷

1、=

2、!=

3、>=

4、<=

5、in:在…里面,需要寫一個括號,括號里寫值,有括號里的值就查詢出來,沒有的就算了,可取反

6、like:用於字符串的模糊查詢

例如:以張開頭:'張%'

         以凡結尾:'%凡'

         帶小的都查出:'%小%'

7、between:在兩者之間,只能用來判斷數字,數字才有區間的說法,而且between自帶一個and,可取反

8、is:只能用於判斷是否為空,可取反。(為空=null,注意和空字符串區別,他倆是不一樣的)

六、邏輯語句:case...when...then...end

case和end分別是語句的開始和語句的結束,when:當xx,then:那么xx。

case...when...then...end主要有兩種用法,第一種簡單的使用,如下例子,還有一種是帶搜索功能的,同時可以實現分組的功能。

例:

如果要想實現不直接顯示數據,顯示不同數據范圍對應的不同內容的話,就可以用case...when...then...end結構,注意這個結構中沒有任何一處地方有標點符號

七、SQL語句的分類

主要分為DDL、DQL、DML、DCL

①DDL:影響表的結構的語句,如create、drop、alter等語句

②DQL:查詢相關的語句,如select、from、where等語句

③DML:操作表數據的語句:如insert、delete、update等語句

④DCL:開啟數據庫一些功能的語句,如權限、事務等語句

事務:在每次數據操作前,開啟事務(begin),再對數據進行操作,最后檢查操作的結果,有問題回滾(rollback),沒問題確認(commit)

事務的出現都是成對出現的,即begin-rollback或者begin-commit

例如:現在t_class里邊有兩條數據

我要增加一條數據,在數據操作前,開啟了事務

現在數據已經是顯示三條了,但是第三條數據有誤,此時可以事務回滾,返回到事務剛開啟的樣子

 八、數據庫的優化

當數據庫中的數據達到了一定的量級,就需要對數據庫進行優化了,這個過程通常是公司的架構師在做。

優化手段(層層遞進):①添加索引  ②分表  ③分庫  ④增加服務器的配置  ⑤分布式(放到不同的服務器中)

the end:在終端操作數據庫時,帶字符串的必須加引號,不區分單雙引號

              語句必須以英文分號結尾       

              所有的標點符號都是英文的

              順序:排序(order by)在查詢(where條件)語句后邊

              分組要和聚合函數配合使用,但是聚合函數可以單獨使用

              腦圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM