Mysql數據庫相關

1.數據庫概念

  數據庫是「按照數據結構來組織、存儲和管理數據的倉庫」。是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合。用於存儲和管理數據的倉庫。mysql

2.關係型數據庫

  oracle、MySQL、sql-server,數據有關聯,一般用表來存儲redis

3.非關係數據庫

  redis、MongoDB、Hbase,數據無關聯,一般採用鍵值對key-value的方式來存儲,效率高sql

4.MySQL

1)啓動命令數據庫

  mysql -u 用戶名 -p 密碼數據結構

2)數據類型oracle

  經常使用的數據類型:int整數類型 double(5,2)小數類型 varchar字符串 date日期,只包含年月日
datetime日期類型 包含年月日時分秒 timestamp:時間戳類型 包含年月日時分秒ide

3)DDL,操做數據庫、表函數

4.3.1操做數據庫:crud編碼

   1.c(create):建立 create database if not exists 數據庫名; 2.r(retrieve):查詢 show databases;查詢數據庫 //查詢全部的數據庫
    show create database 數據庫名//查看數據庫的編碼
    3.u(update):修改 alter database 數據庫名稱 character set 字符集名稱; 4.d(delete):刪除 drop database 數據庫名稱 //判斷數據庫是否存在
    drop database if exists 數據庫名稱 5.使用數據庫 select database(); //查詢當前正在使用的數據庫
    use 數據庫  //使用數據庫

4.3.2操做表:crudspa

1.c(create):建立 create table 表名( 列名1 數據類型1, 列名2 數據類型2, ... 列名n 數據類型n ); 2.r(retrieve):查詢 show tables;//查詢全部的表
    desc 表名;//查詢表結構
    3.u(update):修改 alter table 表名 rename to 新的表名;//修改表名
    alter table 表名 character set utf8;//修改表的字符編碼
    alter table 表名 add 列名 數據類型;//添加一列
    alter table 表名 change 列名 新列名 新數據類型;//修改列名稱、類型
    alter table 表名 modify 列名 新數據類型;//修改類型
    alter table 表名 drop 列名;//刪除列
    4.d(delete):刪除 drop table 表名; drop table if exists 表名;

4)DML:增刪改表中的數據

   1.添加數據 insert into 表名(列名1,列名2) values(值1,值2); //列名要和值一一對應 //若是表名後面不寫列名,默認給全部的列添加值
    2.刪除數據 delete from 表名 where 條件; //若是不加條件則刪除表中的全部記錄
    truncate table 表名;//先刪除表,再建立一張同樣的表
    3.修改數據 update 表名 set 列名1=值1,列名2=值2...where 條件; //若是不加條件,則會修改表中的全部數據

5)DQL:查詢表中的數據

   select * from 表名;//查詢表中的全部數據
    1.語法 select 字段列表 from 代表列表 where 條件列表 group by 分組字段 having 分組以後的條件 order by 排序 limit 分頁限定 2.基礎查詢 1.多個字段的查詢 select 字段1,字段2 from 表名; distinct //去除重複的結果集
 計算列: 通常可使用四則運算計算一些列的值。 ifnull(表達式1,表達式2)//表達式1:哪一個字段須要判斷是否爲null,表達式2:若是該字段爲null後的替換值
        as //起別名 as也能夠省略
    3.條件查詢 1.where子句後跟條件 2.運算符 <,>,>=,<=,=,!=,<> between...and //在什麼範圍內
        in(a,b,c) null不能使用=來判斷,要用is來判斷 like:模糊查詢 佔位符:_:單個任意字符 %:任意多個字符 3.排序查詢 order by 子句 升序:asc 降序:desc 若是有多個排序條件,則當前邊的條件值同樣時,纔會判斷第二條件 4.聚合函數 將一列數據做爲一個總體,進行縱向計算。 1.count:計算個數 2.max:計算最大值 3.min:計算最小值 4.sum:計算和 5.avg:計算平均值 5.分組查詢 1.語法:group by 分組字段; 2.注意: 1.分組以後查詢的字段:分組字段、聚合函數 2.where和having的區別? where在分組以前進行限定,若是不知足條件,則不參與分組,having在分組以後進行限定,若是不知足結果,則不會被查詢出來 having後面可使用聚合函數where不行 6.分頁查詢 limit 開始的索引,要顯示的數目 公式:開始的索引=(當前的頁碼-1)*每頁顯示的條數 limit 是一個mysql「方言」

6)約束

4.6.1概念:對錶中的數據進行限定,保證數據的正確性,有效性,完整性

1.主鍵約束 primary key alter table 表名 drop primary key; 自動增加: auto_increment alter table 表名 modify 列名 數據類型 auto_increment; 
2.非空約束 建立表時添加not null 建立表完後添加非空約束 alter table 表名 modify 列名 數據類型 not null;
3.惟一約束 unique值不能重複 刪除惟一約束 alter table 表名 drop index 列名;
4.外鍵約束 讓表與表產生關係,從而保證數據的正確性 constraint外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱) 刪除外鍵: alter table 表名 drop foreign key 外鍵名; 添加外鍵: alter table 表名 add constraint外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱) 級聯更新:on update cascade 級聯刪除:on delete cascade

5.數據庫範式

1.第一範式(1NF):每一列都是不可分割的原子數據項
2.第二範式(2NF):在1NF基礎上,消除對非主屬性對主碼的部分函數依賴
函數依賴:A-->B,若是經過A的屬性(屬性組)的值,能夠肯定惟一B屬性的值,則稱B依賴於A
徹底函數依賴:A-->B,若是A是一個屬性組,則B屬性值的肯定須要依賴於A屬性組中全部的屬性值
部分函數依賴:A-->B,若是A是一個屬性組,則B屬性值的肯定只須要依賴於A屬性組中的某一些值便可
傳遞函數依賴:A-->B,B-->C,若是經過A的屬性(屬性組)的值,能夠肯定惟一B屬性的值,若是經過B的屬性(屬性組)的值,能夠肯定惟一C屬性的值,則稱C傳遞函數依賴於A
碼:若是在一張表中,一個屬性或屬性組,被其餘屬性所徹底依賴,則稱這個屬性(屬性組)爲該碼的表
3.第三範式(3NF):在2NF基礎上,消除傳遞函數依賴

6.數據庫的備份和還原

備份:mysqldump -u root -proot 數據庫名稱 > 保存的路徑
還原:登陸數據庫->建立數據庫->使用數據庫->執行文件 source 文件路徑

7.多表查詢

   1.內鏈接查詢 1.隱式內鏈接:使用where條件消除無用數據 2.顯式內鏈接 語法:select 字段列表 from 表名1 [inner] join 表名2 on 條件 2.外鏈接查詢 1.左外鏈接: 語法:select 字段列表 from 表1 left [outer] join 表2 on 條件 查詢的是左表全部數據以及其交集部分 2.右外鏈接: 語法:select 字段列表 from 表1 right [outer] join 表2 on 條件 查詢的是右表全部數據以及其交集部分 3.子查詢 查詢中嵌套查詢 1.子查詢結果是單行單列的 子查詢能夠做爲條件,使用運算符去判斷,運算符:> >= < <= =
        2.子查詢結果是多行單列的 子查詢能夠做爲條件,使用運算符in去判斷 3.子查詢結果是多行多列的 子查詢能夠做爲一張虛擬表

8.數據庫事務

1)事務的基本介紹

1.概念
若是一個包含多個步驟的業務操做,被事務管理,那麼這些操做要麼同時成功,要麼同時失敗。
2.操做
1.開啓事務:start transaction
2.回滾:rollback
3.提交:commit
3.MySQL數據庫事務默認自動提交
select @@autocommit;//1表明自動提交0表明手動提交
修改默認的提交方式:set @@autocommit=0;

2)事務的四大特徵

1.原子性:是不可分割的最小操做單位,要麼同時成功,要麼同時失敗。
2.持久性:當事務提交或回滾後,數據庫會持久化的保存數據
3.隔離性:多個事務之間,相互獨立。
4.一致性:事務操做先後,數據總量不變

3)事務的隔離級別

多個事務之間隔離,相互獨立的。

9.DCL管理用戶

1)管理用戶

      1.添加用戶 create user '用戶名'@'主機名' identified by '密碼'; 2.修改用戶密碼 update user set password = password('新密碼') where user='用戶名'; set password for '用戶名'@'主機名'=password('新密碼'); 3.查詢用戶 user mysql; select * from user; 4.刪除用戶 drop user '用戶名'@'主機名';

2)受權

     1.查詢權限 show grants for '用戶名'@'主機名'; 2.授予權限 grant 權限列表 on 數據庫.表名 to '用戶名'@'主機名'; all *.*
        3.撤銷權限 revoke 權限列表 on 數據庫.表名 from '用戶名'@'主機名';
相關文章
相關標籤/搜索