2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

MySQL數據庫基本概念

更新時間:2018-10-19 來源:黑馬程序員技術社區 瀏覽量:

MySQL數據庫1.數據庫基本概念:

        數據庫(DataBase) 簡稱 DB

                概念: 用于存儲和管理數據的倉庫。               

                特點:

                        1.持久化存儲數據.

                        2.方便存儲和管理數據

                        3.使用了統一的方式操作數據庫 --SQL

        數據庫軟件與數據庫的區別:

                數據庫:大的范圍,泛指所有存儲和管理數據的數據庫(數據庫軟件)

                數據庫軟件: 管理和存儲數據

        常見的數據庫軟件:

                MySQL  Oracle  SQL Server(微軟公司)   DB2(IBM公司)               

               

2.mysql數據庫

安裝:

        若安裝報1006(1007),沒有管理員權限

        則以管理員身份打開DOS命令

        輸入:msiexec /package  mysql軟件所在的路徑+安裝包名稱.msi

刪除:

        1.卸載MySQL

        2.刪除C:/ProgramData目錄下的MySQL文件夾。

        若刪除完安裝不成功,則再刪除mysql相關的注冊表

配置:

        MySQL服務啟動

                   1.手動

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

                3.使用管理員打開DOS

                        net start mysql : 啟動mysql的服務

                        net stop mysql:關閉mysql服務

        MySQL登錄

                1.mysql -uroot -proot

                2.mysql -hip -uroot -p連接目標的密碼

                3.mysql --host=ip --user=root --p=連接目標的密碼

        MySQL退出

                1.exit

                2.quit

了解一下文件目錄:

bin:binary(二進制)比如:exe,bat
conf:configuration(配置)比如:配置文件
lib:library(圖書館),管理軟件所需的jar包 比如:xxx.jar
temp:(tempary 暫時的):軟件生成的臨時文件

MySQL目錄結構:

        1.MySQL安裝目錄:

                my.ini為配置文件

        2.MySQL數據目錄

                數據庫:文件夾

                數據表:文件

mysql數據庫軟件,數據庫,表,數據(標記了)的關系:

1.先有mysql數據庫軟件

2.在數據庫軟件上面,創建多個數據庫(對應文件夾)

        比如:mysql,performance_schema,test

3.在數據庫里面,創建多張表(對于文件)

4.在表(二維表格)里,管理表記錄(數據)

        

3.sql指令(重點掌握)sql概述

        Structured Query Language:結構化查詢語言

                sql不僅能查詢操作,還能進行增刪改(crud)操作.

        其實就是定義了操作所有關系型數據庫的規則.

每一種數據庫操作的方式存在不一樣的地方,稱為"方言"

SQL通用語法:

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

        2.可以使用空格或縮進來增強語句的可讀性

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

         4.3種注釋   

                單行注釋: -- 注釋內容 或 # 注釋內容(mysql 特有)                  多行注釋: /* 注釋 */

sql常見的分類--四類

        1.DDL:數據庫定義語言,作用創建數據庫和數據表以及修改數據庫和數據表(表結構)

        2.DCL數據庫控制語言,作用 給數據庫和數據表進行授權操作(了解)

        3.DML:數據庫操作語言,作用 對表中的數據(記錄)進行 添加,修改,刪除操作

        4.DQL:數據庫查詢語言,作用 對表中的數據(記錄)進行查詢操作

sql操作數據庫和表DDL  創建數據庫和數據表 以及修改等操作.

                關鍵詞:create drop alter等

操作數據庫:CRUD

        C:Create 創建

        R:Retrieve 查詢

        U:Update 修改

        D:Delete        刪除

        使用數據庫

R:


查詢所有數據庫的名稱:
    show databases;
查看某個數據庫的字符集:
    show create database 數據庫名稱;

C:


創建數據庫:
    create database 數據庫名稱;
創建數據庫,判斷不存在,再創建:
    creat database if not exists 數據庫名稱;
創建數據庫,并指定字符集:
    creat database 數據庫名稱 character set 字符集名稱

U:


修改數據庫的字符集:
    alter database 數據庫名稱 character set 字符集

D:


刪除數據庫
     drop database 數據庫名稱;
判斷數據庫存在,存在再刪除
    drop database if exists 數據庫名稱;

使用數據庫:


查詢當前正在使用的數據庫
    select database();
使用數據庫
    use 數據庫名稱操作表:CRUD

        區分別結構和表記錄:

                表結構: 表頭(表的字段)和字段對應的類型(數據類型)

                表記錄:表頭(字段)對應的值

C:創建

語法:
            create table 表名(
                列名1 數據類型1,
                列名2 數據類型2,
                ....
                列名n 數據類型n
            );
        注意:最后一列不需要加","
數據類型:
        1.int 整數類型;
            age int,
        2.double 小數類型;
            score double(5,2) -->最多5位保留2位
         3.date 日期; 只包含年月日,yyyy-MM-dd
         4.datetime 日期; 包含年月日時分秒,yyyy-MM-dd HH:mm:ss
         5.timestamp 時間戳類型 包含年月日時分秒,yyyy-MM-dd HH:mm:ss
            如果將來不給這個字段賦值,或賦值為null,則默認使用當前的系統時間,來自動賦值   
          6.varchar 字符串類型
                name varchar(20); --->姓名最大20個字符

復制表:
    create table 表名 like 被復制的表名;     

R:查詢


查詢某個數據庫中所有的表名稱
    show tables;
查詢表結構
    desc 表名;

U:修改


1.修改表名
    alter table 表名 rename to 新的表名;
2.修改表的字符集
    alter table 表名 character set 字符集名稱;
3.添加一列
    alter table 表明 add 列名 數據類型;
4.修改列名稱 類型
    alter table 表明 change 列名 新類名 數據類型
    alter table 表明 modify 列名 新數據類型
5.刪除列
    alter table 表明 drop 列名

D:刪除


drop table 表名;
drop table  if exists 表名 DML:操作表記錄(數據)

        添加數據:insert into

        修改數據:update

        刪除數據:delete

1.添加數據:
語法:
    insert into 表明(列名1,列名2,...,列名n) values(值1,值2,...,值n);
注意:
    1.列名和值要一一對應;
    2.如果表名后,不定義列名,則默認給所有列添加值
        insert into 表名 values(值1,值2,...值n);
    3. 除了數字類型,其他類型需要使用引號(單雙都可以)引起來2.刪除數據
語法:
    delete from 表名 [where 條件]
注意:
    1. 如果不加條件,則刪除表中所有記錄。
    2. 如果要刪除所有記錄
        1. delete from 表名;  不推薦使用。有多少條記錄就會執行多少次刪除操作
        2. TRUNCATE TABLE 表名; 推薦使用,效率更高 先刪除表,然后再創建一張一樣的表。 (屬于DDL的語句)
    3.修改數據
語法:
    update 表名 set 列名1=值1,列名2=值2,...[where 條件];
注意:
     如果不加任何條件,則會將表中所有記錄全部修改。DQL:查詢表記錄(數據)
查詢所有數據:
    select*from 表名;
語法:
    select
        字段列表
    from
        表名列表
    where
        條件列表
    group by
        分組字段
    having
        分組之后的條件
    order by
        排序
    limit
        分頁基礎查詢:

去除重復:(distinct)

        select distinct address from student;


1. 多個字段的查詢
        select 字段名1,字段名2... from 表名;
        
    注意:
         如果查詢所有字段,則可以使用*來替代字段列表。
         
2. 去除重復:
     distinct
     select distinct from 表名
3. 計算列
        * 一般可以使用四則運算計算一些列的值。(一般只會進行數值型的計算)
        * ifnull(表達式1,表達式2):null參與的運算,計算結果都為null
            * 表達式1:哪個字段需要判斷是否為null
            * 如果該字段為null后的替換值。
            
4. 起別名:as(Alias)
     as :as也可以省略
    select 字段名 as 別名 from 表名

注意:

        1.字段,列名稱,表頭,都表示一個意思,都是表的Field(字段)

        2.字符集,編碼格式,編碼表,都表示一個意思,都是編碼

                常見的編碼:

                        utf-8:萬能的碼表,支持所有的字符.

                        gbk,gb2312,gb18030:中文的碼表,支持中文,還支持其他字符,但不包含日文,韓文等字符.

                        iso-8859-1:西歐的碼表,支持西歐的字符,但不支持日文,韓文,中文等字符.

                        

條件查詢:

        模糊條件查詢

        分組條件查詢

        排序條件查詢

        子查詢

        聚合函數查詢

day02

1.單表查詢(重點)1.0 模糊查詢
基本語法: where  字段 like ;
LIKE:模糊查詢
         占位符:
            _:單個任意字符
             %:任意(0-N)個任意字符1.1 條件查詢
    1. where子句后跟條件
    2. 運算符
        * > 、< 、<= 、>= 、= 、<>
        * BETWEEN...AND  (包含左右兩端) 
        * IN( 集合)  
            in(值1...值n)  等同于 =值1 or 值2 or..值n
        
        * IS NULL  
        * and  或 &&
        * or  或 || 
        * not  或 !1.2 排序查詢
語法
    order by 排序字段1 排序方式1 ,  排序字段2 排序方式2...
    排序方式:
        * ASC:升序,默認的。
        * DESC:降序。

    * 注意:
        * 如果有多個排序條件,則當前邊的條件值一樣時,才會判斷第二條件。1.3 聚合函數查詢
聚合函數:將一列數據作為一個整體,進行縱向的計算。
    count:計算個數
        格式:select count(name)from 表名
         一般選擇非空的列:主鍵
         count(*)
    max:計算最大值   
    min:計算最小值
    sum:計算和
    avg:計算平均值
    
    注意:
    1.聚合函數里面的參數:表的字段
    2.聚合函數在進行運算時,null值不參與運算.
    3.聚合函數一般是對int類型的進行運算,其他類型沒有意義
    4.特別在使用count(字段),一般為主鍵字段(非空,唯一)1.4 分組查詢
基本語法:
    group by 字段;
    分組,按字段共同特點進行分組,如果按字段特有方法進行分組,沒有任何意義.
    
     注意:
        1. 分組之后查詢的字段:分組字段、聚合函數
        2. where 和 having 的區別?
            1. where 在分組之前進行限定,如果不滿足條件,則不參與分組。having在分組之后進行限定,如果不滿足結果,則不會被查詢出來
            2. where 后不可以跟聚合函數,having可以進行聚合函數的判斷。
        通俗來講聚合函數一般用咱分組后.    
查詢時的關鍵詞先后順序:
    
    select
        字段列表
    from
        表名列表
    where
        條件列表
    group by
        分組字段
    having
        分組之后的條件
    order by
        排序
    limit
        分頁1.5 分頁查詢
分頁:數據太多,一次性查詢不出來,展示效果不好,就是用戶的體驗不好
分頁操作:不同的數據庫分頁基本原理不一樣
mysql:用limit進行分頁,其他數據庫不能使用limit進行分頁
語法:
    limit 開始的索引,每頁查詢的條數;
    eg:select*from student limit 0, 3;
    公式:開始的索引 = (當前的頁碼 - 1) * 每頁顯示的條數2.約束(重點)

        約束概述:一種規范(限制),數據庫約束就是對表中的數據進行規范,讓數據具有某種特點.

數據庫的約束:1.主鍵約束:primary key
1.注意
    含義:非空且唯一
    一張表只能有一個字段為主鍵
    主鍵 就是表中記錄的唯一標識
2.創建表時,添加主鍵約束
    eg:id int primary key;
3.刪除主鍵
    eg:alter table 表名 DROP PRIMARY KEY;
4.創建完表后,添加主鍵
    eg:alter table 表名 MODIFY id INT PRIMARY KEY;

5.自動增長
    概念:如果某一列是數值類型的,使用auto_increment 可以來完成值的自動增長
    創建表時添加:
        eg:id int primary key auto_increment;
    刪除自動增長:
        eg:alter table 表名 modify id int;
    表創建完成后添加自動增長: 
    alter table 表名 modify id int auto_increment;2.非空約束:not null
非空:某一列的值不能為空
操作:
  1.在創建時添加約束
    eg:name varchar(10) not null;
  2.創建表完成后添加非空約束
    eg:alter table 表名 MODIFY name varchar(10) not null;
  3.刪除非空約束
    eg:alter table 表名 MODIFY name varchar(10);3.唯一約束:unique
唯一:某一列的值不能重復
操作:
  1.在創建表時添加
    eg:name varchar(10) unique;
  2.在創建表完成后添加
    eg:alter table 表名 MODIFY name varchar(10) unique;
  3.刪除唯一約束
    eg:alter table 表名 DROP INDEX 字段名;
注意事項:
    1.唯一約束可以有null值,但是只能有一條記錄為null4.外鍵約束:foreign key
外鍵約束:foreign key,讓表與表產生關系,從而保證數據的正確性
1.在創建表時,可以添加外鍵
    外鍵列,
    [constraint 外鍵名稱] foreign key (外鍵列名稱) references 主表名稱(主表列名稱)
2.刪除外鍵
    alter table 表名 drop foreign key 外鍵名
3.創建表完成后,添加外鍵
    alter table 表名 add [constraint 外鍵名稱] foreign key (外鍵名) references 主表名稱(主表列名稱);
    
外鍵特點:
    1.外鍵的值不能隨意寫
    2.外鍵的值引用于另一張表的主鍵值
    3.外鍵的值可以為null(但是為null沒有任何意義)
    
外鍵設計原則:
    1.主表
    2.子表

(了解)級聯操作
    概述:只有表與表之間有關聯關系,才可以進行級聯操作
    作用:當主表的數據發生變化時,那么字表的數據會級聯發生變化
    級聯操作:一般情況下,操作是針對修改 update和刪除 delete
    分兩種情況:
        第一種:當主表的數據變化時,子表的數據和主表的數據保持一致
            語法:ON UPDATE CASCADEON ON DELETE CASCADE 
        第二種:當主表的數據變化時,子表的數據(外鍵的數據)設置為null
            語法:ON UPDATE set null ON DELETE set null
    1. 添加級聯操作
        語法:ALTER TABLE 表名 ADD [CONSTRAINT 外鍵名稱] FOREIGN KEY (外鍵字段名稱) REFERENCES 主表名稱(主表列名稱) ON UPDATE CASCADE ON DELETE CASCADE  ;
    2. 分類:
        1. 級聯更新:ON UPDATE CASCADE 
        2. 級聯刪除:ON DELETE CASCADE 3.多表關聯(重點)數據庫的設計:

        1.多表之間的關系

                *一對一(了解)

                        eg:人和身份證

                        主表和子表可以是任意一方

                *一對多

                        eg:一個部門有多個員工

                        主表就是一方表,這里指部門表

                        子表就是多方表,這里指員工表

                        外鍵設計在子表

                *多對多(強化版 的 一對一)

                        eg:學生和課程

                                一個學生可以選擇多門課程,一個課程也能被多個學生選擇

                        主表(子表)可以是任意一方(不推薦這樣區分和設計外鍵)

                        外鍵設計原則:提供一張中間表,來完成外鍵的關聯

        2.數據庫設計范式

4.數據庫的設計范式(了解)

概念:設計數據庫時,需要遵循的一些規范。要遵循后邊的范式要求,必須先遵循前邊的所有范式要求

        目前關系數據庫有六種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又稱完美范式)。

5.數據庫的備份和還原

        

命令行:

語法:

        備份: mysqldump -u用戶名 -p密碼 數據庫名稱 > 保存的路徑

        還原:

                1.登錄數據庫

                2.創建數據庫

                3.使用數據庫

                4.執行文件   source 文件路徑

圖形化工具:


day03

1.多表的查詢(掌握)

查詢語法:        


select
        列名列表
    from
        表名列表
    where....

多個表放在一起查詢

        出現問題:笛卡爾積

        笛卡爾積:一個外鍵值對應多個主鍵值

        解決方法:消除沒有用的數據

笛卡爾積:        * 有兩個集合A,B .取這兩個集合的所有組成情況。

要完成多表查詢,需要消除無用的數據

        通過主鍵和外鍵關聯.(因為外鍵的值引用于主鍵的值)


多表查詢分類:1.內連接查詢隱式內連接:

        使用where條件消除無用數據

顯式內連接:

        語法:select 字段列表 from 表名1  [inner] join 表2 on 條件;

內連接查詢的邏輯:

        1.從哪些表中查數據

        2.條件是什么

        3.查詢哪些字段

2.外連接查詢1.左外鏈接:

                select 字段列表 from 表1 left [outer] join 表2 on 條件;

                 查詢的是左表所有數據以及其交集部分。

2.右外連接:

                        語法:select 字段列表 from 表1 right [outer] join 表2 on 條件;                         查詢的是右表所有數據以及其交集部分。

3.子查詢

        概念:查詢中嵌套查詢.

子查詢不同情況:

        1. 子查詢的結果是單行單列的:

                子查詢可以作為條件,使用運算符去判斷。 運算符: >  >=  <  <=  =

        2.子查詢的結果是多行單列的:

                子查詢可以作為條件,使用運算符in來判斷        

        3.子查詢的結果是多行多列的:

                子查詢可以作為一張虛擬表參與查詢

2.事務(了解)1.事務的基本介紹

        概念:

                是一組操作,這組操作要么同時成功,要么同時失敗。

2.操作:

        1.開啟事務: start transaction;

        2.回滾:rollback;

        3.提交:commit;

3.在MySQL數據庫中事務自動提交

        事務提交的兩種方式:

                1.自動提交:

                        mysql就是自動提交的

                        一條DML(增刪改)語句會自動提交一次事務。

                2.手動提交:

                        Oracle 數據庫默認是手動提交事務

                        需要先開啟事務,再提交

                        修改事務的默認提交方式:

查看事務的默認提交方式:SELECT @@autocommit; -- 1 代表自動提交  0 代表手動提交

修改默認提交方式: set @@autocommit = 0;


4.事務的四大特征:

        1.原子性:是不可分割的最小操作單位,要么同時成功,要么同時失敗。

        2.持久性:當事務提交或回滾后,數據庫會持久化的保存數據。

        3.隔離性:多個事務之間。相互獨立。

        4.一致性:事務操作前后,數據總量不變

5.事務的隔離級別(了解)

        概念:多個事務之間隔離的,相互獨立的。但是如果多個事務操作同一批數據,則會引發一些問題,設置不同的隔離級別就可以解決這些問題。

存在問題:

        1. 臟讀:一個事務,讀取到另一個事務中沒有提交的數據        2.不可重復讀(虛讀):在同一個事務中,兩次讀取到的數據不一樣。

        3.幻讀:一個事務操作(DML)數據表中所有記錄,另一個事務添加了一條數據,則第一個事務查詢不到自己的修改。

隔離級別:

                1. read uncommitted:讀未提交                         產生的問題:臟讀、不可重復讀、幻讀                2. read committed:讀已提交 (Oracle)                         產生的問題:不可重復讀、幻讀                3. repeatable read:可重復讀 (MySQL默認)                         產生的問題:幻讀                4. serializable:串行化                        可以解決所有的問題

        注意:隔離級別從小到大安全性越來越高,但是效率越來越低

        數據庫查詢隔離級別:

                 select @@tx_isolation;

        數據庫設置隔離級別:                set global transaction isolation level  級別字符串;

3.SQL分類:DCL(了解 或 不了解)

DCL:管理用戶,授權

1. 管理用戶添加用戶:

                        * 語法:CREATE USER '用戶名'@'主機名' IDENTIFIED BY '密碼';

刪除用戶:

                        * 語法:DROP USER '用戶名'@'主機名';

修改用戶密碼:
    UPDATE USER SET PASSWORD = PASSWORD('新密碼') WHERE USER = '用戶名';
    eg:UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER = 'lisi';
        
    SET PASSWORD FOR '用戶名'@'主機名' = PASSWORD('新密碼');
    eg:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');

mysql中忘記了root用戶的密碼?
        1. cmd -- > net stop mysql 停止mysql服務
                * 需要管理員運行該cmd

        2. 使用無驗證方式啟動mysql服務: mysqld --skip-grant-tables
        3. 打開新的cmd窗口,直接輸入mysql命令,敲回車。就可以登錄成功
        4. use mysql;
        5. update user set password = password('你的新密碼') where user = 'root';
        6. 關閉兩個窗口
        7. 打開任務管理器,手動結束mysqld.exe 的進程
        8. 啟動mysql服務
        9. 使用新密碼登錄。查詢用戶:

                -- 1. 切換到mysql數據庫                        USE myql;                -- 2. 查詢user表                        SELECT * FROM USER;


通配符: % 表示可以在任意主機使用用戶登錄數據庫權限管理:1.查詢權限:

                SHOW GRANTS FOR '用戶名'@'主機名';                SHOW GRANTS FOR 'lisi'@'%';

2.授予權限:

                grant 權限列表 on 數據庫名.表名 to '用戶名'@'主機名';        eg:給張三用戶授予所有權限,在任意數據庫任意表上

GRANT ALL ON . TO 'zhangsan'@'localhost';

3.撤銷權限:

                revoke 權限列表 on 數據庫名.表名 from '用戶名'@'主機名';                eg:REVOKE UPDATE ON db3.account FROM 'lisi'@'%';

day04

JDBC概述

        概述:Java DataBase Connectivity  Java 數據庫連接, Java語言操作數據庫

        JDBC本質:其實是官方(sun公司)定義的一套操作所有關系型數據庫的規則,即接口,各個數據庫廠商去實現這套接口,提供數據庫驅動jar包。我們可以使用這套接口(JDBC)編程,真正執行的代碼是驅動jar包中的實現類。

快速入門:步驟:

        1.導入驅動jar包 mysql-connector-java-5.1.37-bin.jar                1.1復制mysql-connector-java-5.1.37-bin.jar到項目的libs目錄下                1.2.右鍵-->Add As Library        2. 注冊驅動        3. 獲取數據庫連接對象 Connection        4. 定義sql        5. 獲取執行sql語句的對象 Statement        6. 執行sql,接收返回結果        7. 處理結果        8. 釋放資源

常見異常:

java.sql.Exception: Access denied for user'root@localhost'(use passworld yes):提示數據庫用戶名或者密碼錯誤.

l MySQLSyntaxErrorException: Table 'day04_mysql_moretab.tab_user' doesn't exist

提示 數據庫下面不存在這個表

原因:數據庫寫錯了或者表名寫錯了

l MySQLSyntaxErrorException: Unknown column 'id' in 'where clause'

原因: 未知的列字段名稱是id

l MySQLIntegrityConstraintViolationException: Duplicate entry '100' for key 'PRIMARY'

原因: uid這個主鍵值 重復添加了

l Parameter index out of range (1 > number of parameters, which is 0).

原因:sql語句的表名寫錯了或者 ?占位符 可能是中文的?

l MySQLSyntaxErrorException: You have an error in your SQL syntax

your MySQL server version for the right syntax to use near 'form tab_user' at line 1

原因: sql語句的編寫有問題。

JDBC常用的API

1.java.sql.DriverManager(類)

2.java.sal.Connection(接口)

3.java.sql.Statement(接口)

4.java.sql.PerparedStatement(接口)

5.java.sql.ResultSet(接口)

本文版權歸黑馬程序員JavaEE培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!

作者:黑馬程序員JavaEE培訓學院
首發:http://java.itcast.cn/?skc

分享到:
在線咨詢 我要報名
和我們在線交談!