MySQL 學習 day1

2020-08-11 22:26:01

1, MySQL 簡介

  • mysql是一個開源的關係型數據庫管理系統,現在是oracle公司旗下的一款產品,由C和C++語言編寫,可移植性高。支援

    在多種操作系統上安裝,最常見有AIX,linux,window。mysql因爲開源免費,所以受到了目前網際網路行業的歡迎

  • 以mysql作爲數據庫,linux系統作爲操作系統,apache或者nginx作爲web伺服器,perl/php/python作爲伺服器端的腳

    本直譯器,就可以搭建起一個免費的網站。被業界稱爲LNMP或者LAMP

2, MySQL sql 語句分類

- DDL:  數據定義語言 (Data Defifinition Language) 例如:建庫,建表
- DML: 數據操縱語言(Data Manipulation Language) 例如:對錶中的數據進行增刪改操作
- DQL: 數據查詢語言(Data Query Language) 例如:對數據進行查詢
-  DCL: 數據控制語言(Data Control Language) 例如:對使用者的許可權進行設定

3, MySQL DDL sql

3.1 數據庫相關操作

  • 建立數據庫 sql:

    • create database + db_name; # create database test;
      
  • 進入數據庫:

    • use + db_name; # use test;
      
  • 檢視當前所在數據庫:

    • select database(); # 注意此處是一個函數, 需要加()呼叫
      
  • 判斷數據庫是否存在, 如果不存在則建立:

    • create databses if not exists db_name;  # create database if not exists test1;
      
  • 指定數據庫編碼爲 gbk:

    • create database db_name character set 'gbk'; # CREATE DATABASE test character SET 'utf8';
      
  • 檢視數據庫的編碼:

    • show create database db_name;  # show create database test;
      
  • 檢視當前mysql 使用的字元集:

    • show variables like 'character%';
      

3.2 數據表常用的數據型別

  • 整數型別

    型別 大小 範圍(有符號) 範圍(無符號)
    TINYINT 1 B (-128, 127) (0, 255)
    SMALLINT 2 B (-32768, 32767) (0, 65535)
    MEDIUMIT 3 B (-8388608,8388607) (0,16777215)
    INT 4 B 很大 很大
    BIGINT 8 B 很大 很大
  • 浮點型

    型別 大小 說明
    FLOAT(m, d) 4位元組 m代表總個數, d表示小數位個數
    DOUBLE(m, d) 8位元組 m代表總個數, d表示小數位個數
  • 定點型別

    型別 大小 說明
    DECIMAL(m,d) 依賴m,d m代表總個數, d表示小數位個數
  • 字串型別

    型別 大小(實測大小爲寬度, mysql:5.7) 用途
    CHAR 0-255
    VARCHAR 0-65535
    TINYTEXT 0-255
    TEXT 0-65535
    MEDIUMTEXT 0-16777215
    LOGTEXT 0-4294967295

    char 和 varchar 對比: char 儲存記憶體固定, 所佔空間會大些, 但是存取速度會快一些;

  • 時間型別

    型別 位元組數 格式 備註
    data 3 yyy-mm-dd 日期
    time 3 HH:mm:ss 時分秒
    year 1 yyyyy
    datetime 8 yyyy-MM-dd HH:mm:ss 日期+時間
    timestamp 4 yyyy-MM-dd HH:mm:ss 時間戳

3.3 MySQL 數據表

  • 建立表

    • create table table_name (
      	欄位一 欄位型別1 約束1 說明1,
          欄位二 欄位型別2 約束2 說明2,
          欄位三 欄位型別3 約束3 說明3,
          欄位四 欄位型別4 約束4 說明4
      ) 
      
      CREATE table teacher (
      	id int auto_increment PRIMARY KEY,
      	name VARCHAR(5) NOT NULL DEFAULT "" COMMENT "老師姓名",
      	age TINYINT NOT null COMMENT "老師年齡",
      	identify VARCHAR(64) not null
      )
      
  • 約束條件

    • comment         ----說明解釋
      not null       ----不爲空
      default         ----預設值
      unsigned       ----無符號(即正數)
      auto_increment ----自增
      zerofill       ----自動填充
      unique key     ----唯一值
      
  • 檢視錶基本結構資訊

    • show tables;  -- 檢視當前數據庫所有的表
      desc teacher; -- 檢視錶結構
      show CREATE TABLE teacher;  -- 檢視建立表的 SQL 語句
      
  • 修改表名

    • RENAME TABLE old_table_name to new_table_name;
      # RENAME TABLE teacher to tea;
      
  • 增加一列

    • alter table table_name add column_name 型別 限定條件 說明;
      # ALTER TABLE tea add gender ENUM("m", 'w', 'unknown') not null DEFAULT 'unknown';
      
  • 修改列型別

    • alter table table_name modify column_name 新型別
      # alter table tea MODIFY age int;
      
  • 修改列名

    • alter table table_name change old_column_name new_column_name 型別 限制條件;
      # ALTER TABLE tea CHANGE name nickname CHAR(50) DEFAULT 'haha';
      
  • 刪除列

    • alter table table_name drop column_name;
      # ALTER table tea DROP nickname;
      
  • 刪除表

    • drop table table_name;
      # drop table stu1;
      # drop table if exists stu1;