MYSQL學習筆記:關於MySQL的基本概念(1)


MySQL學習:


關於MySQL基本概念

數據庫(DataBase)
簡稱DB:按照某一特定數據結構來組織,存儲數據的倉庫。

數據庫管理系統(DataBase Management System)
簡稱DBMS,是爲了建立,操作和維護數據庫而設計的一個程序,介於用戶和數據庫之間。


SQL分類

  • DDL(Data Definition Language-數據定義語句)
    用來定義數據庫的對象,如數據表、視圖、索引等
    如: create、alter、drop
  • DML (Data Manipulation Language-數據操縱語句)
    在數據庫表中更新,增加和刪除記錄
    insert、delete、update— 增刪改
  • DCL (Data Control Language-數據控制語句)
    指用於設置用戶權限和控制事務語句
    如grant,revoke,if…else,while,begin transaction
  • DQL(Data Query Language select-數據查詢語句)

數據庫的操作

創建數據庫

create database 數據庫名;
create database 數據庫名 character set 字符集;
create database 數據庫名 character set 字符集 collate 校對規則;

查看數據庫

show databases; --查看所有的數據庫
show create database 數據庫名; --顯示數據庫創建

選擇數據庫

use 數據庫名;

修改數據庫

alter database 數據庫名 character 字符集;

刪除數據庫

drop database 數據庫名;

查看當前數據庫

select database(); --查看當前使用的數據庫 

數據表的操作

在介紹數據表之前,說一下數據類型。

  • 字符串類型
    varchar、char
  • 大數據類型
    blob、text
  • 數值型
    tinyint、smallint、int、bigint、float、double
  • 邏輯型
    bit
  • 日期型
    date、time、datetime、timestamp

詳見菜鳥教程——MySQL數據類型

創建數據表

create table 表名
(
	field1  datatype (auto_increment), --說明此列每增加一行時自動增量。
	field2  datatype (unique), --定義唯一約束
	field3  datatype (not null), --定義非空約束
	field4 datetype (default 1), --指定默認值爲1
	primary key(field1) --指定爲主鍵
)character set 字符集 collate 校對規則;

每個表只允許一個AUTO_INCREMENT列,而且它必須被索> 引。
可以使用last_insert_id()語句來獲取最後一個AUTO_INCREMENT值。

查看數據表

show tables; --查看所有的數據表
show create table 數據表; --查看錶的創建過程
desc 數據表; --查看數據表結構

修改數據表

--add:添加列
alter table 表名 add 列名 列類型 (列的約束) ;

--modify:修改列
alter table 表名 modify 變量名 數據類型;

--change:修改列名
alter table 表名 change 原名 新名 新數據類型;

--drop:刪除列
alter table 表名 drop 列名;

--修改表名
alter table 原表名 to 新表名;

--修改表的字符集
alter table 表名 character set 字符集;

刪除數據表

DROP TABLE 數據表名;

重命名數據表

RENAME TABLE 舊錶名 TO 新表名;

-- 重命名多個表名
RENAME TABLE 舊錶名1 TO 新表名1,
             舊錶名2 TO 新表名2,
             舊錶名3 TO 新表名3;

對數據表的數據操作


CRUD ————增刪改查

增數據

  • 一般寫法
insert into 表名(1,2,3...) values(1,2,3...);
  • 簡單寫法
insert into 表名 values(1,2,3...);

注意:
省略的列必須滿足以下兩個條件:
1、該列定義爲允許NULL值(無值或空值)。
2、在表定義中給出默認值。

  • 批量插入
insert into 表名 values(1,2,3...),(4,5,6...),(7,8,9...);
  • 查看錶中的所有數據
select * from 表名;

補充:
要提高整體性能,可以在 INSERT 和 INTO 之間添加關鍵字 LOW_PRIORITY,指示MySQL降低INSERT語句的優先級。
INSERT LOW_PRIORITY INTO


刪數據

使用DELETE時要加WHERE關鍵字,否則會刪除表中的所有行。

delete from 表名 [where 條件];

delete from 表名; --刪除全部記錄
delete from 表名 where [...] --刪除滿足條件的記錄

truncate 表名; --刪除全部數據

注:

delete 刪除數據 和 truncate 刪除數據 有什麼區別
  
delete:(DML)一條一條刪除表中的數據
truncate:(DDL)先刪除表再重建表

當數據較時,delete比較高效。
當數據較時,truncate比較高效。

同時也要注意:DELETE刪除整行而不是整列,如果要刪除整列要使用UPDATA語句


改數據

如果更改數據的時候沒加where條件,會改變表中的所有數據。

update 表名
set 列名1=1,列名2=2,...
where 條件;
  • 如果要刪除某一列的數據,可以直接把它設置爲NULL。
UPDATE customers 
SET cost_email = NULL 
WHERE cust_id = 10005;

查數據

--查看錶中所有的數據
select * from 表名; 

--查看錶中列n,m的數據
select 列名n,列名m from 表名; 

--表別名
select 別名.列名1,別名.列名2 from 表名 as 別名;
--列表名
select 列名1 (as) 別名1,列名2 (as) 別名2 from 表名;

--去掉重複的值(distinct)
select distinct 列名 from 表名;

--運算查詢
select *,(列名運算) (as 別名) from 表名;

--條件查詢
select 列名 from 表名 where (條件);
  • like
    _:表示一個字符。
    %:表示多個字符。

  • in
    在某個範圍中獲得值。
    eg: select * from 表名 where 列n in (...);

  • order by
    asc:(默認)升序
    desc:降序
    eg: select * from 表名 order by 列名 desc;

  • update
    修改表中的數據
    UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

  • 聚合函數

sum() : 求和
avg() : 求平均值
count() : 統計數量
max()/min() : 最大/最小值

eg :
select sum() from 表名;
select 列 from 表名 having (聚合函數)


總的來說,就是:

子句 說明 是否必須使用
SELECT 要返回的列或表達式
FROM 從中檢索數據的表 僅在從表選擇數據時使用
WHERE 行級過濾
GROUP BY 分組說明 僅在按組計算聚集時使用
HAVING 組級過濾
ORDER BY 輸出排序順序
LIMIT 要檢索的行數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章