九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
山東創(chuàng)睦網(wǎng)絡(luò)科技:數(shù)據(jù)庫(kù)

一,數(shù)據(jù)庫(kù)

1.1 概念

數(shù)據(jù)庫(kù)就是存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù)

數(shù)據(jù)庫(kù)可以實(shí)現(xiàn)數(shù)據(jù)的持久化存儲(chǔ)

數(shù)據(jù)庫(kù)的本質(zhì)是文件系統(tǒng)

1.2 DBMS

Database Management System:數(shù)據(jù)庫(kù)管理系統(tǒng)

DBMA:數(shù)據(jù)庫(kù)管理員

常見(jiàn)的數(shù)據(jù)庫(kù)管理系統(tǒng):

  1. MySQL:Oracle公司的中小型數(shù)據(jù)庫(kù),從6版本開(kāi)始收費(fèi)

  2. Oracle:Oracle公司的大型數(shù)據(jù)庫(kù),收費(fèi)的

  3. DB2:IBM公司的大型數(shù)據(jù)庫(kù)

  4. SQLServer:Mircosoft公司的大型數(shù)據(jù)庫(kù)

  5. SQLite:移動(dòng)端的嵌入式的小型數(shù)據(jù)庫(kù)

    Java中主要使用的是MySQL和Oracle

1.3 數(shù)據(jù)庫(kù)的結(jié)構(gòu)

一個(gè)DBMS中可以維護(hù)管理多個(gè)數(shù)據(jù)庫(kù)

一個(gè)數(shù)據(jù)庫(kù)由若干張表組成

一張表包含若干條記錄

一條記錄包含若干字段信息

  1. 數(shù)據(jù)庫(kù)中的表相當(dāng)于代碼中的實(shí)體類

    例如:要研究醫(yī)生這個(gè)類,就應(yīng)該創(chuàng)建一張醫(yī)生表

  2. 數(shù)據(jù)庫(kù)表中的一列(字段)相當(dāng)于實(shí)體類中的屬性

    例如:汽車有品牌屬性,那么在汽車表中就應(yīng)該有品牌字段

  3. 根據(jù)類創(chuàng)建出的對(duì)象就相當(dāng)于數(shù)據(jù)庫(kù)表中的一行(一條記錄)

    例如:當(dāng)我們獲取寵物對(duì)象時(shí),我們就可以從該對(duì)象上獲取它所具備的所有屬性;同樣的,當(dāng)我們查詢到一條寵物記錄時(shí)我們就可以從表中明確該寵物的所有字段信息。

1.4 SQL語(yǔ)言

結(jié)構(gòu)化查詢語(yǔ)言:Structured Query Language

分類:

  1. DDL:數(shù)據(jù)定義語(yǔ)言(Data Definition Language)

    對(duì)數(shù)據(jù)庫(kù)、表進(jìn)行創(chuàng)建、修改、刪除等操作

    關(guān)鍵字:create、alter、drop等

  2. DML:數(shù)據(jù)操作語(yǔ)言(Data Manipulation Language)

    對(duì)表中記錄、字段進(jìn)行增、刪、改等操作

    關(guān)鍵字:insert、delete、update等

  3. DQL:數(shù)據(jù)查詢語(yǔ)言(Data Query Language)

    對(duì)數(shù)據(jù)庫(kù)、表、記錄、字段進(jìn)行查詢的

    關(guān)鍵字:select、from、where、in、and、or、between、having、group by、order by、limit等

  4. DCL:數(shù)據(jù)控制語(yǔ)言(Data Control Language)

    對(duì)數(shù)據(jù)庫(kù)的安全級(jí)別和訪問(wèn)權(quán)限進(jìn)行管理的

    關(guān)鍵字:revoke、grant、commit、roll back等

1.5 mysql軟件

注:

  1. 安裝的目錄必須是純英文路徑的

  2. 刪除步驟

    1. 在控制面板中卸載軟件

    2. 刪除mysql安裝路徑下的mysql文件夾

    3. 刪除C盤下ProgramData下的mysql文件夾

登錄mysql

方式一:

  1. 打開(kāi) cmd

  2. 輸入 mysql -uroot -p密碼

方法二:

  1. 打開(kāi) cmd

  2. 輸入 mysql -uroot -p

  3. 再輸入密碼

方式三:

  1. 找到安裝mysql后的 Command Line Client

  2. 輸入密碼

二,SQL

C (create) R (read) U (update) D(delete)

2.1 庫(kù)的操作

建庫(kù):

create database 庫(kù)名;1

判斷數(shù)據(jù)庫(kù)是否存在,不存在才創(chuàng)建:

create database if not exists 庫(kù)名;1

創(chuàng)建數(shù)據(jù)庫(kù)并指明編碼格式:

create database 庫(kù)名 character set 編碼格式;1

查詢數(shù)據(jù)庫(kù)的創(chuàng)建語(yǔ)句以及編碼格式:

show create database 庫(kù)名;1

查看已有的數(shù)據(jù)庫(kù):

show databases;1

刪庫(kù):

drop database 庫(kù)名;1

判斷數(shù)據(jù)庫(kù)是否存在,存在才刪除:

drop database if exists 庫(kù)名;1

修改數(shù)據(jù)庫(kù)的編碼格式:

alter database 庫(kù)名 character set 編碼格式;1

指定使用的數(shù)據(jù)庫(kù):

use 庫(kù)名;1

2.2 表的操作

建表:

create table 表名 (字段名 字段類型 [約束], 字段名 字段類型 [約束], 字段名 字段類型 [約束], ...);1

判斷表是否存在,不存在才創(chuàng)建:

create table if not exists 表名 (字段名 字段類型 [約束], 字段名 字段類型 [約束], 字段名 字段類型 [約束], ...);1

查詢所有表:

show tables;1

查看表結(jié)構(gòu):

desc 表名;1

刪表:

drop table 表名;1

判斷表是否存在,存在才刪除:

drop table if exists 表名;1

復(fù)制表結(jié)構(gòu):

create table 新表名 like 被復(fù)制的表名;1

修改表名:

alter table 舊表名 rename to 新表名;1

修改表結(jié)構(gòu):

  1. 添加新字段

    alter table 表名 add 新字段 字段類型 [約束];

  2. 刪除字段

    alter table 表名 drop 字段;

  3. 修改字段類型

    alter table 表名 modify 字段 字段類型 [約束];

  4. 修改字段名

    alter table 表名 change 舊字段名 新字段名 字段類型 [約束];

2.3 記錄、字段的操作

詢表中的所有記錄:

select * from 表名;* 表示所有字段(列)
等價(jià)于 select 字段1,字段2,字段3,... from 表名;123

添加記錄:

  1. 向所有字段添加數(shù)據(jù)

    insert into 表名 values (值1,值2,值3,...);

  2. 向指定字段添加數(shù)據(jù)

    insert into 表名 (字段1,字段2,字段3,...) values (值1,值2,值3,...);

  3. 批量添加(所有字段)

    insert into 表名 values (值1,值2,值3,...), (值1,值2,值3,...),...;

  4. 批量添加(指定字段)

    insert into 表名 (字段1,字段2,字段3,...) values (值1,值2,值3,...), (值1,值2,值3,...),...;

刪除記錄:

  1. 刪除所有記錄

    delete from 表名;

  2. 根據(jù)條件刪除指定記錄:

    delete from 表名 where 條件;

  3. 刪除所有記錄

    truncate table 表名;

修改記錄:

  1. 修改所有記錄

    update 表名 set 字段名 = 值,字段名 = 值,字段名 = 值...;

  2. 根據(jù)條件修改指定記錄

    update 表名 set 字段名 = 值,字段名 = 值,字段名 = 值,... where 條件; 

注:

  1. 添加記錄時(shí),值的數(shù)量必須與列的數(shù)量一致

  2. 添加記錄和修改記錄時(shí),值的類型必須與字段類型一致

  3. 除了數(shù)值類型,其他類型都必須用單/雙引號(hào)括起來(lái)

  4. delete from 表名;刪除表中所有記錄,它的刪除方式是逐行刪除,表中有多少條記錄,刪除語(yǔ)句就會(huì)執(zhí)行多少次;truncate table 表名;刪除表中記錄,它的刪除方式是將整張表刪除,然后構(gòu)建一張與原來(lái)表結(jié)構(gòu)相同的空表。

2.4 數(shù)據(jù)類型

2.4.1 數(shù)值類型

int:整數(shù)類型

double:小數(shù)類型

特殊的:salary double(n,m)

n:表示整數(shù)位和小數(shù)位一共最多有n位

m:表示小數(shù)位最多保留m位

例如:salary double(6,2) 的最大值是9999.99

2.4.2 日期和時(shí)間類型

datetime:時(shí)間戳,包含年月日時(shí)分秒,格式:yyyy-MM-dd HH:mm:ss

timestamp:時(shí)間戳,包含年月日時(shí)分秒,格式:yyyy-MM-dd HH:mm:ss

注:

  1. 如果某個(gè)字段的是類型是timestamp,在我們給它賦值為null或者沒(méi)有對(duì)它賦值時(shí),系統(tǒng)會(huì)給它一個(gè)默認(rèn)值,默認(rèn)值是添加這條語(yǔ)句的時(shí)間或者是對(duì)它賦值為null時(shí)的時(shí)間。

  2. timestamp類型字段值不可能是空值

2.4.3 字符串類型

varchar:

例如:name varchar(20):表示姓名字段的值最大20個(gè)字符

2.5 查詢

2.5.1 基礎(chǔ)查詢
  1. 查詢所有:

    select * from 表名;

  2. 查詢所有記錄的指定字段:

    select 字段1,字段2,字段3,... from 表名;

  3. 去重查詢

    select distinct 字段名 from 表名;

2.5.2 條件查詢

在 where 關(guān)鍵字后加上條件,查詢時(shí)會(huì)根據(jù)條件進(jìn)行記錄的篩選

  1. 邏輯運(yùn)算符

    1. &&、and

    2. ||、or

  2. 關(guān)系運(yùn)算符

    1. " > "

    2. " < "

    3. " >= "

    4. " <= "

    5. " = "

    6. " != “、” <> "

  3. 指定范圍內(nèi)

    between … and …

    例如:查詢成績(jī)?cè)?0~100之間的學(xué)生select * from student where score between 80 and 100;

    注:含頭含尾


  4. 在指定列表中

    in(值1,值2,值3,…)

    不在指定列表中

    not in(值1,值2,值3,…)

  5. 空和非空

    判斷為空:is null

    判斷非空:is not null

  6. 模糊查詢

    關(guān)鍵字:like

    占位符:

    1. _:?jiǎn)蝹€(gè)任意字符

    2. %:任意個(gè)任意字符

2.5.3 排序查詢

關(guān)鍵字:order by

排序方法:

  1. 升序:默認(rèn),asc

  2. 降序:desc

    // 降序排列員工的銷售額,銷售額相同時(shí),根據(jù)工資升序排列select * from emp order by sale desc,salary asc;

注:如果多個(gè)字段進(jìn)行排序,只有第一字段的值相同時(shí),才會(huì)執(zhí)行第二字段的排序

格式:order by 字段1 排序方式,字段2 排序方式,…;

2.5.4 聚合函數(shù)

概念:將一列數(shù)據(jù)作為一個(gè)整體,然后進(jìn)行縱向的計(jì)算

  1. avg():計(jì)算平均值

  2. sum():求和

  3. max():求最大值

  4. min():求最小值

  5. count():求數(shù)量

注:

  1. count() 的參數(shù)一般使用非空字段或者*

  2. 聚合函數(shù)不計(jì)算 null 值

2.5.5 分組查詢

關(guān)鍵字:group by

注:

  1. 分組后查詢的字段只能是:分組字段、聚合函數(shù)

  2. where 和 having 的區(qū)別:

    1. where 用在分組前進(jìn)行條件篩選,如果不滿足 where 的條件則不進(jìn)入分組;having 用在分組后進(jìn)行條件篩選,如果不滿足 having 的條件則不被查詢到

    2. where 后不能跟聚合函數(shù),having 后可以使用聚合函數(shù)進(jìn)行分組后的條件篩選

2.5.6 分頁(yè)查詢

關(guān)鍵字:limit

語(yǔ)法:limit 開(kāi)始索引,每頁(yè)查詢的記錄數(shù)

注:索引從0開(kāi)始

公式:開(kāi)始索引 = (當(dāng)前頁(yè)碼 - 1) * 每頁(yè)查詢的記錄數(shù)

2.5.7 查詢語(yǔ)句的結(jié)構(gòu)

select

字段列表

from

表名

where

條件列表

group by

分組字段

having

分組后的條件

order by

排序字段 排序方式

limit

索引,記錄數(shù)

2.5.8 起別名

可以為字段、表起別名

起別名的作用是能夠區(qū)分多張表中的同名字段,并且簡(jiǎn)化了書寫

格式:

as 別名1

注:as 可以省略

2.6 約束

概念:對(duì)表中數(shù)據(jù)進(jìn)行限定

分類:

  1. 非空約束:not null

  2. 唯一約束:unique

  3. 主鍵約束:primary key

  4. 外鍵約束:foreign key

2.6.1 非空約束:not null

限定字段值不能為空

  1. 創(chuàng)建表時(shí),添加非空約束

create table 表名(字段名 字段類型 not null,字段名 字段類型 [約束],字段名 字段類 [約束]...);1
  1. 創(chuàng)建表后,添加非空約束

alter table 表名 modify 字段名 字段類型 not null;1

注:已存在空值的字段不能被設(shè)置成非空

  1. 刪除非空約束(設(shè)置字段允許有空值)

alter table 表名 modify 字段名 字段類型;1
2.6.2 唯一約束:unique

限定字段值不能有重復(fù)

  1. 創(chuàng)建表時(shí),添加唯一約束

create table 表名(字段名 字段類型 unique,字段名 字段類型 [約束],字段名 字段類 [約束]...);1
  1. 創(chuàng)建表后,添加唯一約束

alter table 表名 modify 字段名 字段類型 unique;1
  1. 刪除唯一約束

alter table 表名 drop index 字段名;1

注:

  1. 唯一約束的值可以是空值,并且允許存在多個(gè) null 值

  2. 已經(jīng)存在重復(fù)值的字段不能被設(shè)置成唯一的

  3. 一個(gè)字段可以同時(shí)被設(shè)置成非空且唯一的,并且非空和唯一的關(guān)鍵字的順序是任意的

2.6.3 主鍵約束:primary key

一般主鍵不使用具有特殊含義的字段

特點(diǎn):

  1. 非空且唯一

  2. 一張表中只能有一個(gè)主鍵字段

  3. 主鍵是表中記錄的唯一標(biāo)識(shí)

  1. 創(chuàng)建表時(shí),添加主鍵約束

create table 表名(字段名 字段類型 primary key,字段名 字段類型 [約束],字段名 字段類 [約束]...);create table 表名(字段名 字段類型 [約束],字段名 字段類型 [約束],..., primary key(主鍵字段));12
  1. 創(chuàng)建表后,添加主鍵約束

alter table 表名 modify 字段名 字段類型 primary key;1
  1. 刪除主鍵約束

alter table 表名 drop primary key;1

注:刪除主鍵約束后,主鍵仍有非空約束

主鍵自增長(zhǎng):

概念:如果某個(gè)字段是數(shù)值類型的主鍵字段,可以使用 auto_increment 來(lái)實(shí)現(xiàn)主鍵自增長(zhǎng)

  1. 創(chuàng)建表時(shí),添加主鍵自增長(zhǎng)

create table 表名(字段名 字段類型 primary key auto_increment,字段名 字段類型 [約束],字段名 字段類 [約束]...);1
  1. 創(chuàng)建表后,添加主鍵自增長(zhǎng)

alter table 表名 modify 主鍵字段 字段類型 auto_increment;1
  1. 刪除主鍵自增長(zhǎng)

alter table 表名 modify 主鍵字段 字段類型;1
  1. 創(chuàng)建表后,添加主鍵約束的同時(shí)添加自增長(zhǎng)

alter table 表名 modify 字段 字段類型 primary key auto_increment;1

注:

  1. 能添加自增長(zhǎng)功能的必須是主鍵字段

  2. 添加主鍵自增長(zhǎng)的主鍵字段必須是數(shù)值類型的

  3. 第一條自增長(zhǎng)的字段值是 1

  4. 從存在過(guò)的最大值開(kāi)始 +1

  5. 如果存在過(guò)的最大值是小數(shù),那么自增長(zhǎng)的值是大于它的最小整數(shù)

2.6.4 外鍵約束:foreign key

外鍵讓表與表之間產(chǎn)生了聯(lián)系,保證了數(shù)據(jù)的完整性

注:從表外鍵的類型必須與主表主鍵的類型一致

  1. 創(chuàng)建表時(shí),添加外鍵約束

create table 表名(字段名 字段類型 [約束], 字段名 字段類型 [約束], ...,  [constraint 外鍵名] foreign key(外鍵字段) references 主表(主表的主鍵字段));1
  1. 刪除外鍵

alter table 表明 drop foreign key 外鍵名;1
  1. 創(chuàng)建表后,添加外鍵約束

alter table 表名 add [constraint 外鍵名] foreign key(外鍵字段) references 主表(主表的主鍵字段);1
  1. 創(chuàng)建表后,新建外鍵字段的同時(shí),添加外鍵約束

alter table 表名 add 外鍵字段 字段類型, add [constraint 外鍵名] foreign key(外鍵字段) references 主表(主表的主鍵字段);1

級(jí)聯(lián)操作:對(duì)主表中的記錄進(jìn)行更新和修改的同時(shí),能直接影響從表中的記錄

  1. 創(chuàng)建從表時(shí),添加級(jí)聯(lián)操作

create table 表名(字段名 字段類型 [約束], 字段名 字段類型 [約束], ...,  [constraint 外鍵名] foreign key(外鍵字段) references 主表(主表的主鍵字段) on delete cascade on update cascade);1
  1. 創(chuàng)建從表后,添加級(jí)聯(lián)操作

alter table 表名 add [constraint 外鍵名] foreign key(外鍵字段) references 主表(主表的主鍵字段) on delete cascade on update cascade;1
  1. 創(chuàng)建從表后,新建外鍵字段,添加外鍵約束,并添加外鍵的級(jí)聯(lián)操作

alter table 表名 add 外鍵字段 字段類型, add [constraint 外鍵名] foreign key(外鍵字段) references 主表(主表的主鍵字段) on delete cascade on update cascade;1

2.7 多表

2.7.1 表與表之間的關(guān)系
  1. 一對(duì)一

    例如:人和身份證、公司與注冊(cè)地址、汽車與車牌號(hào)

  2. 一對(duì)多(多對(duì)一)

    例如:部門和員工、商品和分類

  3. 多對(duì)多

    例如:學(xué)生和課程、商品和訂單

2.7.2 多表建立連接
  1. 一對(duì)一

    在任意一方添加外鍵指向另一方的主鍵,外鍵要保證唯一

  2. 一對(duì)多

    在多的一方添加外鍵指向一的一方的主鍵

  3. 多對(duì)多

    需要借助第三張中間表。中間表至少包含兩個(gè)字段,這兩個(gè)字段作為中間表的外鍵,分別指向兩張主表的主鍵。為了保證中間表不會(huì)出現(xiàn)重復(fù)值,需要將這兩個(gè)外鍵字段形成聯(lián)合主鍵。

    create table tb_user_hobby(
    uid int,
    hid int,
    primary key(uid,hid), /* 聯(lián)合主鍵 */
    foreign key(uid) references user(uid),
    foreign key(hid) references hobby(hid));

2.8 多表查詢

2.8.1 交叉查詢

語(yǔ)法:

select 字段列表 from 表1, 表2;1

交叉查詢的結(jié)果是笛卡爾積,是多張表所有記錄的組成情況

我們需要使用條件來(lái)去除無(wú)效的數(shù)據(jù)

2.8.2 內(nèi)連接查詢

在交叉查詢的基礎(chǔ)上使用 where 條件 去除無(wú)效的數(shù)據(jù)

語(yǔ)法:

  1. 隱式內(nèi)連接

select 字段列表 from 表1, 表2 where 條件;1
  1. 顯式內(nèi)連接

select 字段列表 from 表1 inner join 表2 on/where 條件;1

注:inner 可以省略

內(nèi)連接查詢的結(jié)果是兩表的交集

2.8.3 外連接

語(yǔ)法:

  1. 左外連接

select 字段列表 from 表1 left outer join 表2 on 條件;1
  1. 右外連接

select 字段列表 from 表1 right outer join 表2 on 條件;1

注:outer 可以省略

左外連接查詢的結(jié)果是左表的全部和兩表的交集

右外連接查詢的結(jié)果是右表的全部和兩表的交集

2.9 子查詢

概念:將一條查詢語(yǔ)句的結(jié)果作為另一條查詢語(yǔ)句的表、記錄、字段、條件

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MySQL 表約束
Mysql基礎(chǔ)02-約束
MySQL - DDL -常見(jiàn)約束
【第10天】SQL進(jìn)階-表的創(chuàng)建、修改與刪除(SQL 小虛竹)
MySQL: MySQL約束(詳細(xì)、全)
mysql中常見(jiàn)約束
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服