天天看點

卷妹帶你學資料庫---5天沖刺Day1

卷妹帶你學資料庫—5天沖刺Day1

卷妹帶你學資料庫---5天沖刺Day1

👩‍💻部落格首頁:京與舊鋪的部落格首頁

✨歡迎關注🖱點贊🎀收藏⭐留言✒

🔮本文由京與舊鋪原創,

😘系列專欄:java學習

👕參考網課:尚矽谷

💻首發時間:🎞2022年5月31日🎠

🎨你做三四月的事,八九月就會有答案,一起加油吧

🀄如果覺得部落客的文章還不錯的話,請三連支援一下部落客哦

🎧最後的話,作者是一個新人,在很多方面還做的不好,歡迎大佬指正,一起學習哦,沖沖沖

💬推薦一款模拟面試、刷題神器👉​​​點選進入網站​​

卷妹帶你學資料庫---5天沖刺Day1

🛒導航小助手🎪

文章目錄

  • ​​卷妹帶你學資料庫---5天沖刺Day1​​
  • ​​🛒導航小助手🎪​​
  • ​​@[toc]​​
  • ​​🥩1 資料庫概述​​
  • ​​😶2 什麼是SQL​​
  • ​​🤣8 mysql常用指令​​
  • ​​😁9 表的了解​​
  • ​​ 姓名 性别 年齡(列:字段)​​
  • ​​🙂10 SQL分類​​
  • ​​😏14 簡單查詢​​
  • ​​其中要注意:select和from都是關鍵字。​​
  • ​​字段名和表名都是辨別符。​​
  • ​​🤗22 條件查詢​​

🥩1 資料庫概述

什麼是資料庫?什麼是資料庫管理系統?什麼是SQL?他們之間的關系是什麼?

資料庫:

英文單詞DataBase,簡稱DB。按照一定格式存儲資料的一些檔案的組合。

顧名思義:存儲資料的倉庫,實際上就是一堆檔案。這些檔案中存儲了具有特定格式的資料。

資料庫管理系統:

DataBaseManagement,簡稱DBMS。

資料庫管理系統是專門用來管理資料庫中資料的,資料庫管理系統可以對資料庫當中的資料進行增删改查。

常見的資料庫管理系統:

MySQL、Oracle、MS SqlServer、DB2、sybase等…

😶2 什麼是SQL

程式員需要學習SQL語句,程式員通過編寫SQL語句,然後DBMS負責執行SQL語句,最終來完成資料庫中資料的增删改查操作。

SQL是一套标準,程式員主要學習的就是SQL語句,這個SQL在mysql中可以使用,

同時在Oracle中也可以使用,在DB2中也可以使用。

三者之間的關系?

DBMS–執行–> SQL --操作–> DB

先安裝資料庫管理系統MySQL,然後學習SQL語句怎麼寫,編寫SQL語句之後,DBMS

對SQL語句進行執行,最終來完成資料庫的資料管理。

🤣8 mysql常用指令

退出mysql :exit;

檢視mysql中有哪些資料庫 : show databases; #注意:以分号結尾,分号是英文的分号。

mysql> show databases;

±-------------------+

| Database |

±-------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

±-------------------+

mysql預設自帶了4個資料庫。

選擇使用某個資料庫:

mysql> use test;

Database changed

表示正在使用一個名字叫做test的資料庫。

建立資料庫:

mysql> create database bjpowernode;

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

±-------------------+

| Database |

±-------------------+

| information_schema |

| bjpowernode |

| mysql |

| performance_schema |

| test |

±-------------------+

檢視某個資料庫下有哪些表:

mysql> show tables;

檢視mysql資料庫的版本号:

mysql> select version();

±----------+

| version() |

±----------+

| 5.5.36 |

±----------+

檢視目前使用的是哪個資料庫:

mysql> select database();

±------------+

| database() |

±------------+

| bjpowernode |

±------------+

導入一下提前準備好的資料:bjpowernode.sql 這個檔案中是練習準備的資料庫表。

怎麼将sql檔案中的資料導入

mysql> source D:\course\03-MySQL\document\bjpowernode.sql #注意:路徑中不要有中文!!!!

檢視表的結構:

mysql> desc dept; # describe縮寫為:desc

±-------±------------±-----±----±--------±------+

| Field | Type | Null | Key | Default | Extra |

±-------±------------±-----±----±--------±------+

| DEPTNO | int(2) | NO | PRI | NULL | |部門編号

| DNAME | varchar(14) | YES | | NULL | |部門名字

| LOC | varchar(13) | YES | | NULL | |地理位置

±-------±------------±-----±----±--------±------+

😁9 表的了解

資料庫當中最基本的單元是表:table

什麼是表table?為什麼用表來存儲資料呢?

​ 姓名 性别 年齡(列:字段)

​ 張三 男 20 ------->行(記錄)

​ 李四 女 21 ------->行(記錄)

​ 王五 男 22 ------->行(記錄)

資料庫當中是以表格的形式表示資料的。因為表比較直覺。

任何一張表都有行和列:

行(row):被稱為資料/記錄。

列(column):被稱為字段。

姓名字段、性别字段、年齡字段。

了解一下:

每一個字段都有:字段名、資料類型、限制等屬性。字段名可以了解,是一個普通的名字,見名知意就行。

資料類型:字元串,數字,日期等,後期講。

限制:限制也有很多,其中一個叫做唯一性限制,這種限制添加之後,該字段中的資料不能重複。

🙂10 SQL分類

SQL語句有很多,最好進行分門别類,這樣更容易記憶。

分為:

DQL:

資料查詢語言(凡是帶有select關鍵字的都是查詢語句)

select…

DML:

資料操作語言(凡是對表當中的資料進行增删改的都是DML)

insert delete update

insert 增

delete 删

update 改

這個主要是操作表中的資料data。

DDL:

資料定義語言

凡是帶有create、drop、alter的都是DDL。

DDL主要操作的是表的結構。不是表中的資料。

create:建立,等同于增

drop:删除

alter:修改

這個增删改和DML不同,這個主要是對表結構進行操作。

TCL:

是事務控制語言

包括:

事務送出:commit;

事務復原:rollback;

DCL:

是資料控制語言。

例如:授權grant、撤銷權限revoke…

😏14 簡單查詢

查詢一個字段?

select 字段名 from 表名;

其中要注意:select和from都是關鍵字。

字段名和表名都是辨別符。

強調:對于SQL語句來說,是通用的,所有的SQL語句以“;”結尾。

另外SQL語句不區分大小寫,都行。

查詢兩個字段,或者多個字段使用逗号隔開“,”

查詢部門編号和部門名

select deptno,dname from dept;

±-------±-----------+

| deptno | dname |

±-------±-----------+

| 10 | ACCOUNTING |

| 20 | RESEARCH |

| 30 | SALES |

| 40 | OPERATIONS |

±-------±-----------+

查詢所有字段

第一種方式:可以把每個字段都寫上

select a,b,c,d,e,f… from tablename;

第二種方式:可以使用*

select * from dept;

±-------±-----------±---------+

| DEPTNO | DNAME | LOC |

±-------±-----------±---------+

| 10 | ACCOUNTING | NEW YORK |

| 20 | RESEARCH | DALLAS |

| 30 | SALES | CHICAGO |

| 40 | OPERATIONS | BOSTON |

±-------±-----------±---------+

這種方式的缺點:
    1、效率低
    2、可讀性差。
在實際開發中不建議,可以自己玩沒問題。
你可以在DOS指令視窗中想快速的看一看全表資料可以采用這種方式。      

給查詢的列起别名:使用as關鍵字起别名。

mysql> select deptno,dname as deptname from dept;

±-------±-----------+

| deptno | deptname |

±-------±-----------+

| 10 | ACCOUNTING |

| 20 | RESEARCH |

| 30 | SALES |

| 40 | OPERATIONS |

±-------±-----------+

注意:隻是将顯示的查詢結果列名顯示為deptname,原表列名還是叫:dname

記住:select語句是永遠都不會進行修改操作的。(因為隻負責查詢)

as關鍵字可以省略嗎?可以的

mysql> select deptno,dname deptname from dept;

假設起别名的時候,别名裡面有空格,怎麼辦?

select deptno,dname ‘dept name’ from dept; //加單引号

select deptno,dname “dept name” from dept; //加雙引号

±-------±-----------+

| deptno | dept name |

±-------±-----------+

| 10 | ACCOUNTING |

| 20 | RESEARCH |

| 30 | SALES |

| 40 | OPERATIONS |

±-------±-----------+

注意:在所有的資料庫當中,字元串統一使用單引号括起來,單引号是标準,雙引号在oracle資料庫中用不了。但是在mysql中可以使用。

🤗22 條件查詢

條件查詢

條件查詢:不是将表中所有資料都查出來。是查詢出來符合條件的。

查詢文法格式:

select

字段1,字段2,字段3…

from

表名

where

條件;

都有哪些條件?

= 等于

查詢薪資等于800的員工姓名和編号?

select empno,ename from emp where sal = 800;

查詢SMITH的編号和薪資?

select empno,sal from emp where ename = ‘SMITH’; //字元串使用單引号

<> 或!= 不等于

查詢薪資不等于800的員工姓名和編号?

select empno,ename from emp where sal != 800;

select empno,ename from emp where sal <> 800; // 小于号和大于号組成的不等号

< 小于

查詢薪資小于2000的員工姓名和編号?

mysql> select empno,ename,sal from emp where sal < 2000;

±------±-------±--------+

| empno | ename | sal |

±------±-------±--------+

| 7369 | SMITH | 800.00 |

| 7499 | ALLEN | 1600.00 |

| 7521 | WARD | 1250.00 |

±------±-------±--------+

<= 小于等于

查詢薪資小于等于3000的員工姓名和編号?

select empno,ename,sal from emp where sal <= 3000;

大于

查詢薪資大于3000的員工姓名和編号?

select empno,ename,sal from emp where sal > 3000;

= 大于等于

查詢薪資大于等于3000的員工姓名和編号?

select empno,ename,sal from emp where sal >= 3000;

between … and …. 兩個值之間, 等同于 >= and <=

查詢薪資在2450和3000之間的員工資訊?包括2450和3000

第一種方式:>= and <= (and是并且的意思。)

select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;

±------±------±--------+

| empno | ename | sal |

±------±------±--------+

| 7566 | JONES | 2975.00 |

| 7698 | BLAKE | 2850.00 |

| 7782 | CLARK | 2450.00 |

| 7788 | SCOTT | 3000.00 |

| 7902 | FORD | 3000.00 |

±------±------±--------+

第二種方式:between … and …

select

empno,ename,sal

from

emp

where

sal between 2450 and 3000;

注意:

使用between and的時候,必須遵循左小右大。

between and是閉區間,包括兩端的值。

is null 為 null(is not null 不為空)

注意:在資料庫當中null不能使用等号進行衡量。需要使用is null因為資料庫中的null代表什麼也沒有,它不是一個值,是以不能使用等号衡量。

and 并且

or 或者

and和or同時出現的話,有優先級問題嗎?

and和or同時出現,and優先級較高。如果想讓or先執行,需要加“小括号”.以後在開發中,如果不确定優先級,就加小括号就行了。

in 包含,相當于多個 or (not in 不在這個範圍中)

not 可以取非,主要用在 is 或 in 中

like 稱為模糊查詢,支援%或下劃線比對

%比對任意多個字元

#下劃線:任意一個字元。

#(%是一個特殊的符号,_ 也是一個特殊符号)

找出名字以T結尾的?

select ename from emp where ename like ‘%T’;

找出名字以K開始的?

select ename from emp where ename like ‘K%’;

找出第二個字每是A的?

select ename from emp where ename like ‘_A%’;

找出第三個字母是R的?

先級,就加小括号就行了。

in 包含,相當于多個 or (not in 不在這個範圍中)

not 可以取非,主要用在 is 或 in 中

like 稱為模糊查詢,支援%或下劃線比對

%比對任意多個字元

#下劃線:任意一個字元。

#(%是一個特殊的符号,_ 也是一個特殊符号)

找出名字以T結尾的?

select ename from emp where ename like ‘%T’;

找出名字以K開始的?

select ename from emp where ename like ‘K%’;

找出第二個字每是A的?

select ename from emp where ename like ‘_A%’;

找出第三個字母是R的?