筆記26-MySQL基礎

2020-08-13 16:35:31

今日內容

  1. 數據庫的基本概念
  2. MySQL數據庫軟體
    1. 安裝
    2. 解除安裝
    3. 設定
  3. SQL

數據庫的基本概念

1. 數據庫的英文單詞:DataBase 簡稱DB
2. 什麼數據庫?
	* 用於儲存和管理數據的倉庫.
3. 數據庫的特點:
	1. 持久化儲存數據的. 其實數據庫就是一個檔案系統
	2. 方便儲存和管理數據
	3. 使用了統一的方式操作數據庫 --- SQL 
  1. 常見的數據庫軟體
    參見文件《MySQL基礎》.pdf
    在这里插入图片描述

MySQL數據庫軟體

  1. 安裝
    MySQL繼承.pdf
  2. 解除安裝
    1. 去mysql的安裝目錄找my.ini檔案
      複製datadir=「D:/ProgramData/MySQL/MySQL Server 5.6/data」
    2. 解除安裝MySQL
    3. 刪除D:/ProgramData目錄下的MySQL資料夾
  3. 設定
    • MySQL服務啓動
      1. 手動
      2. cmd->services.msc開啓服務視窗
      3. 使用管理員開啓cmd
        * net start mysql :啓動mysql服務
        * net stop mysql : 關閉mysql服務
    • mysql登錄
      1. mysql -uroot -p密碼
      2. mysql -hip -uroot -p連線目標的密碼
      3. mysql --host=ip --user=root --password=連線目標的密碼
    • mysql 退出
      1. exit
      2. quit
    • mysql的目錄結構
      1. MySQL安裝目錄: basedir =「D:/MySQL/」
        *組態檔: my.ini
      2. MySQL數據目錄: datadir=「D:/ProgramData/MySQL/MySQL Server 5.6/Data」
        • 幾個概念
          • 數據庫: 資料夾
          • 表: 檔案
          • 數據 : 數據

SQL

 1. 什麼是sql?
 	Structured Query Language : 結構化查詢語言
 	其實就是定義了操作所有關係型數據庫的規則.每一種數據庫操作的方式存在不一樣的地方,稱爲"方言"
 2. SQL通用語法
 	1. SQL語句可以單行或多行書寫,以分號結尾
 	2. 可使用空格和縮排來增強語句的可讀性
 	3. MySQL數據庫的SQL語句不區分大小寫,關鍵字建議使用大小寫.
 	4. 3種註釋: 
 		* 單行註釋: -- 註釋內容   或 # 註釋內容(mysql 特有)
 		* 多行註釋: /* 註釋  */
3. SQL 分類
	1) DDL(Data Definition Language)數據定義語言
		用來定義數據庫物件: 數據庫,表,列等, 關鍵字 create ,drop ,alter 等
	2) DML(Data Manipulation Language)數據操作語言
		用來對數據庫中表的數據進行增刪改 ,關鍵字 insert, deete,update等
	3) DQL(Data Query Language) 數據查詢語言
		用來查詢數據庫中表的記錄(數據).關鍵字:select ,where等
	4) DCL(Data Control Language) 數據控制語句(瞭解)
		用來定義數據庫的存取許可權和安全級別,及建立使用者.關鍵字 GRANT ,REVOKE 等

DDL:操作數據庫、表

  1. 操作數據庫: CRUD
    1. c(Create) : 建立
      1. 建立數據庫
        create database 數據庫名稱;
      2. 建立數據庫,判斷不存在,在建立
        create database if not exists 數據庫名稱;
      3. 建立數據庫,並指定字元集
        create database 數據庫名稱 character set 字元集名;
      4. 練習:建立db4 數據庫, 判斷是否存在,並制定字元集爲gbk
        create database if not exists db4 character set gbk;
    2. R(Retrieve): 查詢
      1. 查詢所有數據庫的名稱
        show databases;
      2. 查詢某個數據庫的字元集: 查詢某個數據庫的建立語句
      3. show create database 數據庫名稱;
    3. U(Update)修改
      1. 修改數據庫的字元集
        alter database 數據庫名稱 character set 字元集名稱;
    4. D(Delete): 刪除
      1. 刪除數據庫
        drop database 數據庫名稱;
      2. 判斷數據庫是否存在,存在刪除
        drop database if exists 數據庫名稱;
    5. 使用數據庫
      1. 查詢當前正在使用的數據庫名稱
        select database();
      2. 使用數據庫
        use 數據庫名稱;
  2. 操作表
    1. C(create)建立
      1. 語法
        create table 表名(
        列名1 數據型別1,
        列名2 數據型別2,

        列名n 數據型別n
        );
        • 注意: 最後一列,不需要加逗號(,)
        • 數據庫型別
          • int : 整數型別 : age int ,
          • double :小數型別 : score double (5,2)
          • date : 日期,只包含年月日,yyyy-MM-dd
          • datetime: 日期,包含年月日時分秒, ,yyyy-MM-dd HH:mm:ss
          • timestamp: 時間錯型別,包含年月日時分秒,yyyy-MM-dd HH:mm:ss
            • 如果將來不給這個欄位賦值,或賦值爲null,則預設使用當前的系統時間來自動賦值
          • varchar :字串型別
            • name varchar(20):姓名最大20個字元
            • zhangsan 8字元 張三 2字元
      • 建立表
        create table student (
        id int ,
        name varchar(32),
        age int ,
        score double (4,1),
        birthday date ,
        insert_time timestamp
        ) ;
      • 複製表
        create table 表名 like 被複制的表名;
  3. R(retrieve)查詢
    1. 查詢某個數據庫中所有的表名稱
    show tables;
    2. 查詢表結構
    desc 表名;
  4. U(Update): 修改
    • 修改表名
      • alter table 表名 rename to 新的表名;
    • 修改表的字元集
      • alter table 表名 character set 字元集名稱
    • 新增一列
      • alter table 表名 add 列名 數據型別;
    • 修改列名稱,型別
      • alter table 表名 change 列名 新列名 新數據型別;
      • alter table 表名 modify 列名 新數據型別 ;
    • 刪除列
      • alter table 表名 drop 列名;
  5. D(Delete)刪除
    • drop table 表名;
    • drop table if exists 表名;
  • 用戶端圖形化工具SQLYog

DML: 增刪改表中數據

  1. 新增數據
    • 語法:
      • insert into 表名(列名1,列名2…列名n) value(值1,值2,值3…值n);
      • 注意事項
        • 列名和值要一一對應
        • 如果表名後,不定義列名,則預設給所有列新增值
          inset into 表名 value(值1,值2,…,值n);
        • 除了數位型別,其他型別需要使用引號(單雙都可以)引起來
  2. 刪除數據
    • 語法:
      • delete from 表名 [where 條件]
    • 注意:
      • 如果不加條件,則刪除表中所有記錄.
      • 如果刪除所有記錄
        • delete from 表名 ; – 不推薦使用,有多少條記錄就執行多少次刪除操作
        • TRUNCATE TABLE 表名: – 推薦使用,效率高,先刪除表,然後在建立一張一樣的表
  3. 修改數據
    • 語法:
      • update 表名 set 列名1 = 值1 ,列名2 = 值2,…[where 條件];
    • 注意:
      • 如果不加任何條件,則會將表中所有記錄全部修改

DQL: 查詢表中的記錄

  • select * from 表名;
  1. 語法 :
	select 
		欄位列表
	from
		表名列表
	where
		條件列表
	group by
		分組欄位
	having
		分組之後的條件
	order by
		排序
	limit
		分頁限定
  1. 基礎查詢

    1. 多個欄位的查詢
      • select 欄位1 ,欄位2 …from 表名;
      • 注意:
        • 如果查詢所有欄位,則可以使用*來代替欄位列表
    2. 去除重複
      • distinct
    3. 計算列
      • 一般可以使用四則運算計算一些列的值.(一般只會進行數值型的計算)
      • ifnull(表達式1,表達式2): null 參與的運算,計算結果都爲null
        • 表示式1: 哪個欄位需要判斷是否爲null
        • 如果該欄位爲null後替換值. .
    4. 起別名
      • as 名 : as 也可省略, 直接加別名 在这里插入图片描述
  2. 條件查詢

    1. where子句後跟條件
    2. 運算子
      • 、<、<=、>=、=、<>

      • BETWEEN…AND
      • IN(集合)
      • LIKE: 模糊查詢
        • 佔位符 :
          • _: 單個任意字元
          • %:多個任意字元
      • IS NULL
      • and 或 &&
      • or 或 ||
      • not 或 !
-- 查詢年齡大於20歲
select * from student where age >20;
select * from student where age >=20;

-- 查詢年齡等於20
select * from student where age =20;

-- 查詢年齡不等於20
select * from student where age != 20;
select * from student where age <> 20;

-- 查詢年齡大於等於20小於等於30
select * from student where age >=20 && age <=30;
select * from student where age >=20 and age<=20;
select *from student where age between 20 and 30;

-- 查詢年齡22,18,25歲的資訊
select * from student where age = 22 or age =18 or age = 25;
select * from student where age in(22,18,25);
-- 查詢英語成績爲null
-- select * from student where english = null ;-- 錯誤的,null不能用= 或!= 判斷
select * from student where english is null;
--查詢英語成績不爲null
select * from student where english is not null;

-- 查詢姓馬的有哪些
select * from student where name like "馬%";
--第二個字是化
select * from student where name like "_化%";
-- 查詢姓名是3個字的人
select * from student where name like '___';
--查詢姓名中包含德字的
select * from student where name like "%德%";