MySQL操作

下載地址:http://www.mysql.com/


數據庫操作

在數據庫操作中,基本操作都是圍繞增刪改查來操作。簡稱CRUD

  • C Create 創建
  • R Read/Retrieve 查詢
  • U Update 修改
  • D Delete 刪除

在數操作數據庫時,所有的數據庫語句都要以分號結束,數據庫操作不區分大小寫


  • 創建數據庫
create database 數據庫名;
create database 數據庫名 charset utf8; 
  • 顯示數據庫創建信息
show create database 數據庫名;

這裏寫圖片描述

  • 修改數據庫編碼
alter database 數據庫名 charset utf8;
  • 顯示所有數據庫
show databases;
  • 切換、使用數據庫
use 數據庫名
  • 顯示當前數據庫
select database();
  • 刪除數據庫
drop database 數據庫名;

數據表操作

和數據庫操作一樣,在數據表在操作中,也是是圍繞增刪改查來操作。

  • 關係表中元素構成
    這裏寫圖片描述

  • MySQL常用字段類型

    • 整數類型

    這裏寫圖片描述

    • 浮點數類型

      這裏寫圖片描述

    • 字符串類型

      這裏寫圖片描述

    • 時間類型

      這裏寫圖片描述

    • 枚舉類型(瞭解)

      enum(枚舉值1,枚舉值2, ...)

  • 查看所在數據庫中所有的表
show tables;
  • 創建表
create table 表名(字段1 字段類型,字段2 字段類型, ....);

這裏寫圖片描述

  • 顯示創建表信息
show create table 表名;
  • 增加字段
alter table 表名 add 字段名 字段類型;
  • 刪除字段
alter table 表名 drop 字段名;
  • 修改字段的數據類型
alter table 表名 modify 字段名 字段類型;
  • 修改字段的數據類型並且改名
alter table 表名 change 原字段名 新字段名 字段類型;

插入數據

  • 插入所有字段數據
insert into 表名 values(值列表,...);

這裏寫圖片描述

  • 插入指定字段
    指定字段順序和列中順序可以不同,值順序要和指定字段順序相同。
insert into 表名(字段1,字段2) values(值1,值2);

這裏寫圖片描述

  • 插入多條數據
insert into 表名 values(值列表, ...),(值列表, ...);

這裏寫圖片描述


修改數據

  • 更新指定字段中所有的數據
updata 表名 set 字段名=值;
  • 更新指定字段中滿足條件的數據
updata 表名 set 字段名=值 where 條件;

這裏寫圖片描述


刪除數據

  • 刪除全部數據
truncate 表名;
delete from 表名;
  • 刪除滿足條件的數據
delete from 表名 where 條件;

這裏寫圖片描述


添加約束

  • 主鍵約束 (一個表中只能存在一個主鍵約束)

字段被設置了主鍵約束,同時也具有了唯一性約束和非空約束。 在字段中插入重複數據時,或不給數據時會報錯。

create table 表名(字段名 字段類型 primary key,字段名 字段類型, ...);

這裏寫圖片描述

  • 自動增長 (讓數字值自動累加)
create table 表名(字段名 字段類型(int) auto_incremment primary key,字段名 字段類型, ...);

這裏寫圖片描述

  • 唯一性約束
create table 表名(字段名 字段類型 unique, ...);
  • 非空約束 (添加數據時必須給值)
create table 表名(字段名 字段類型 not null, ...);

這裏寫圖片描述

  • 默認約束
create table 表名(字段名 字段類型 default '默認值', ...)

這裏寫圖片描述

  • 外鍵約束
-- 表1 
 create table1(字段1 字段類型 primary key,字段2 字段類型,...);
 -- 表2
 create table2(字段3 字段類型 primary key auto_increment, 字名4 字段類型, 字名5 字段類型, foreign key(字段5) references1(字段1));

這裏寫圖片描述

想要刪除有設置外鍵的表,必須先刪除外鍵所關聯的表。
這裏寫圖片描述

  • 添加主鍵約束
alter table 表名 add constraint 約束名 primary key(字段名);

這裏寫圖片描述

  • 刪除主鍵約束
因爲一個表中最多只能有一個主鍵約束,所以可以直接刪除

alter table 表名 drop primary key;
  • 添加外鍵約束
alter table 表名 add constraint 外鍵約束名 foreign key(外鍵字段名) references 關聯表(關聯字段名);

這裏寫圖片描述

  • 刪除外鍵約束
alter table 表名 drop foreign key 外鍵名;

這裏寫圖片描述


單表查詢數據

  • 查詢數據表中所有數據
select * from 表名;
  • 查詢指定字段數據
select 字段1,字段2,... from 表名;
  • as 別名 (通過別名來修改顯示的樣式)
在給字段起別名時,可以使用 as ,也可以直接在字段後跟別名,省略 as 。

select 字段1 as 別名1,字段2 別名,... from 表名;

這裏寫圖片描述

  • 去重 (去除重複的數據)
select distinct 字段名 from 表名;

這裏寫圖片描述

  • 帶條件查詢 where 子句
select * from 表名 where 條件;

這裏寫圖片描述

where條件可以使用運算符操作

  • 比較運算符
    • 等於: =
    • 大於: >
    • 大於等於: >=
    • 小於: <
    • 小於等於: <=
    • 不等於: != 或 <>

這裏寫圖片描述
- 邏輯運算符
- and
- or
- not

這裏寫圖片描述
- 模糊查詢
- like
- % 表示0或多個任意字符
- _ 表示一個任意字符

這裏寫圖片描述

  • 範圍查詢

    • in 表示在一個非連續的範圍內 , 可以使用 or 實現

      select * from 表名 where 字段名 in(值...);

      這裏寫圖片描述

    • between…and… 表示在一個連續的範圍內,可以使用 and 實現
      這裏寫圖片描述

  • 空判斷

    • is null 判斷空值

      select * from 表名 where 字段名 is null;
    • is not null 判斷非空值

      select * from 表名 where 字段名 is not null
  • 查詢結果排序

    排序使用 order by 子句 asc(默認) 升序 / desc 降序 語法:select * from 表名 order by 列1 asc|desc [,列2 asc|desc,…]

    • 單字段排序

      select * from 表名 order by 字段名;
      select * from 表名 order by 字段名 asc;
    • 多字段排序

          select * from 表名 order by 字段1 desc,字段2 asc;

    這裏寫圖片描述

  • 分頁查詢
    select from 表名 limit start=0,count

    從start開始,獲取count條數據
    start默認值爲0
    需要獲取數據的前n條的時候可以直接寫 limit n
    這裏寫圖片描述

  • 聚合函數
    這裏寫圖片描述

select sum(字段),avg(字段),min(字段),max(字段),count(字段) from 表名;

這裏寫圖片描述

  • 分組
  • select 分組的字段名,聚合函數… from 表名 group by 分組字段名 having 分組後的條件
  • 在執行 group by 分組時,select 後只能有被分組的字段,不允許有其它字段,除非這些字段在聚合函數中
    這裏寫圖片描述
  • 根據分組結果,使用group_concat()來獲取分組中指定字段的集合
    這裏寫圖片描述

多表查詢數據

  • 普通多表數據查詢
select * from1,表2;

這裏寫圖片描述

這種查詢方式沒有任何意義。 在查詢時,數據庫會將表1中的數據逐條和表2中的所有數據連接,組成一條新記錄。 查詢的結果爲 M * N 條,實際就是笛卡爾積結果。

  • 加條件
select * from1,表2 where 條件;

這裏寫圖片描述

  • 內鏈接查詢
  • 數據庫默認的連接方式就是內連接查詢 , inner join 可以不顯示的寫出來
  • 連接條件使用 on 進行指定 也可使用where
select * from1 inner join2 on 條件;

這裏寫圖片描述

  • 左連接查詢
  • 查詢的結果爲根據左表中的數據進行連接,如果右表中沒有滿足條件的記錄,則連接空值
select * from1 left join2 on 條件;

這裏寫圖片描述

  • 右連接
  • 查詢的結果爲根據右表中的數據進行連接,如果左表中沒有滿足條件的記錄,則連接空值
select * from1 right join2 on 條件;

這裏寫圖片描述

  • 子查詢
  • 在一個 select 語句中,嵌入了另外一個 select 語句, 那麼被嵌入的 select 語句稱之爲子查詢語句
select * from 表名 where 條件 運算符 (select 查詢);
  • 外部那個select語句則稱爲主查詢
  • 主查詢和子查詢的關係

    • 子查詢是嵌入到主查詢中
    • 子查詢是輔助主查詢的,要麼充當條件,要麼充當數據源
    • 子查詢是可以獨立存在的語句,是一條完整的 select 語句
  • 標量子查詢

  • 子查詢返回的結果是一個數據(一行一列)
主查詢 where 條件 比較運算符 (列子查詢)

這裏寫圖片描述

  • 列級子查詢
  • 子查詢返回的結果是一列(一列多行)
主查詢 where 條件 in (列子查詢)

這裏寫圖片描述

  • 行級子查詢
  • 子查詢返回的結果是一行(一行多列)
主查詢 where (字段1,2,...) = (行子查詢)

這裏寫圖片描述


數據庫導入導出

  • 導出數據庫(終端模式下)
mysqldump -uroot -p 要導出的數據庫名 > 目標文件.sql

這裏寫圖片描述

  • 導出庫當中的指定表
mysqldump -uroot -p 要導出的數據庫名 要導出的數據表 > 目標地址 目標文件.sql

這裏寫圖片描述

  • 導入數據庫
  • 導入數據庫前需要先創建一個空數據庫

    • 終端模式下
    mysql -uroot -p 數據庫名 < 文件地址 要導入的文件.sql

    這裏寫圖片描述

    • mysql模式下
source 文件地址 要導入的文件.sql

這裏寫圖片描述


以上內容僅供參考 -_- …爲作者邊學習,邊摘抄和總計的內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章