MySQL簡版(一)

第一章 數據庫的基本概念

1.1 數據庫的英文單詞

  • Database,簡稱DB。

1.2 什麼是數據庫?

  • 用於存儲和管理數據的倉庫。

1.3 數據庫的特色

  • 持久化存儲數據的。其實數據庫就是一個文件系統。
  • 方便存儲和管理數據。
  • 使用了統一的方式(SQL)來操做數據庫。

1.4 常見的數據庫軟件

  • MySQL:開源免費的數據庫,中型數據庫。已經被Oracle收購了。MySQL6.x版本也開始收費了。
  • Oracle:收費的大型數據庫,Oracle公司的產品。Oracle收購了SUN公司,獲得了MySQL數據庫。
  • DB2:IBM公司的數據庫產品,收費的,經常使用在銀行系統中。
  • SQLServer:微軟公司收費的中型數據庫、C#等語言經常使用。
  • SyBase:已經淡出歷史舞臺。提供了一個很是專業的數據建模工具PowerDesigner。
  • SQLite:嵌入式的小型數據庫,應用在手機端。

 

  • 經常使用的數據庫:Oracle和MySQL。

 

  • 在web系統開發中,使用最多的是MySQL數據庫,緣由以下:
  • ①開源、免費。
  • ②功能足夠強大,足以應付web應用開發(最高支持千萬級別的併發訪問)。

 

第二章 MySQL的安裝和使用

2.1 MySQL的安裝

  • 略。

2.2 MySQL的使用

2.2.1 MySQL的登陸

  • 命令:
mysql -u用戶名 -p密碼 -h主機地址 -P端口

 

  • 示例:
mysql -uroot -p123456

2.2.2 MySQL的退出

  • 命令:
exit
quit

2.3 MySQL數據庫、表、數據的關係

 

第三章 SQL的基本概念和通用語法

3.1 SQL的基本概念

  • 結構化查詢語言,簡稱SQL,是指對數據庫進行操做的一種語言。

3.2 SQL的做用

  • 經過SQL語句咱們能夠方便的操做數據庫中的數據、表、數據庫。
  • SQL是數據庫管理系統都須要遵循的規範。
  • 不一樣的數據庫生產廠商都支持SQL語句,但都具備特點。

3.3 SQL語句的分類

3.3.1 DDL(數據定義語言)

  • 用來定義數據庫對象:數據庫、表、列等。
  • 關鍵字是create、drop、alter等。

3.3.2 DML(數據操做語言)

  • 用來對數據庫表的數據進行增刪改。
  • 關鍵字是insert、update、delete等。

3.3.3 DQL(數據查詢語言)

  • 用來查詢數據庫中表的記錄(數據)。
  • 關鍵字是select、where等。

3.3.4 DCL(數據控制語言)

  • 用來定義數據庫的訪問權限和安全級別以及建立用戶。
  • 關鍵字是grant、revoke等。 

3.4 SQL的通用語法

  • SQL語句能夠單行或多行書寫,以分號結尾。
  • 可以使用空格或縮進來加強語句的可讀性。
  • MySQL數據庫的SQL語句不區分大小寫(Linux上例外),關鍵字建議大寫。
  • 註釋
-- 單行註釋
/* * 多行註釋 */

 

第四章 數據庫的增刪改查

4.1 查看數據庫

  • 查看全部的數據庫:
show databases;

 

  • 查看某個數據庫的定義信息:
show create database db1;

4.2 建立數據庫

  • 語法:
create database 數據庫名;

 

  • 判斷數據庫是否已經存在,不存在則建立數據庫:
create database if not exists 數據庫名;

 

  • 建立數據庫並指定字符集:
create database 數據庫名 character set 字符集;

4.3 修改數據庫

  • 修改數據庫的字符集:
alter database 數據庫名 character set 字符集;

4.4 刪除數據庫

  • 語法:
drop database if exists 數據庫名 ;

4.5 使用數據庫

  • 查看正在使用的數據庫:
select database();

 

  • 使用/切換數據庫:
use 數據庫名;

 

第五章 數據表的增刪改查

5.1 查詢數據表

  • 查詢某個數據庫中的全部的數據庫表:
-- 使用某個數據庫
use test; -- 查詢test數據庫下的全部數據表
show tables;

 

  • 查詢表結構:
desc 表名;

5.2 建立表

  • 語法:
create table 表名( 字段 類型, 字段 類型, …… );

 

  • 示例:
create table employee( id int PRIMARY key auto_increment COMMENT '主鍵', name VARCHAR(32) COMMENT'名稱', score double(5,2) COMMENT '分數', birthday date COMMENT '出生日期', create_time TIMESTAMP COMMENT'建立時間:若是未來不給timestamp的字段賦值,系統默認使用當前的系統時間,來自動賦值', been_deleted int COMMENT '0表示正常1表示刪除 ', update_time datetime comment '修改時間' );

5.3 刪除表

  • 語法:
drop table if exists 表名;

5.4 修改表

  • 修改表名:
alter table 表名 rename to 新表名;

 

  • 修改表的字符集:
-- 查看錶的字符集
show create table 表名; -- 修改表的字符集
alter table 表名 character set 字符集;

 

  • 添加列(字段):
alter table 表名 add column 字段 數據類型;

 

  • 修改列:
-- 修改字段名和數據類型
alter table 表名 change column 舊字段名 新字段名 數據類型; -- 修改字段的數據類型
alter table 表名 modify column 字段名 數據類型;

 

  • 刪除列:
alter table 表名 drop column 字段名;

 

第六章 數據庫表中記錄的操做

6.1 添加數據

  • 語法:
insert into 表名(字段1,字段2,……,字段n) values(值1,值2,……,值n);

 

  • 示例:
INSERT INTO employee ( `name`,score, birthday, been_deleted ) VALUES ( '張三', 90, '1992-05-01', 0 );

6.2 刪除數據

  • 語法:
delete from 表名 [條件where];

 

  • 示例:
DELETE 
FROM employee WHERE id = 1;

6.3 修改數據

  • 語法:
update 表名 set 字段1=值1,字段2=值2,……[條件where];

 

  • 示例:
UPDATE employee SET score = 90 
WHERE id = 2;

 

第七章 數據庫的查詢操做

7.1 準備工做

  • sql:
CREATE TABLE student ( id int, -- 編號
name varchar(20), -- 姓名
age int, -- 年齡
sex varchar(5), -- 性別
address varchar(100), -- 地址
math int, -- 數學
english int -- 英語
); INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES (1,'馬雲',55,'','杭州',66,78),(2,'馬化騰',45,'','深圳',98,87),
(3,'馬景濤',55,'','香港',56,77),(4,'柳巖',20,'','湖南',76,65),(5,'柳青',20,'','湖南',86,NULL),(6,'劉德華',57,'','香港',99,99),
(7,'馬德',22,'','香港',99,99),(8,'德瑪西亞',18,'','南京',56,65);

7.2 基礎查詢

  • 語法:
select *
from 表名;

 

  • 示例:查詢姓名和年齡
SELECT `name` AS '姓名', `age` AS '年齡' 
FROM student;

 

  • 示例:查詢地址
SELECT DISTINCT `address` AS '地址' 
FROM student;

 

  • 示例:查詢姓名和地址
SELECT DISTINCT `name` as '姓名', `address` AS '地址' 
FROM student; 

 

  • 示例:查詢姓名和對應的分數
SELECT `name` AS '姓名', `math` AS '數學', `english` AS '英語', IFNULL( `math`, 0 ) + IFNULL( `english`, 0 ) AS '總分' 
FROM student;

7.3 條件查詢

  • 語法:
select 字段1,字段2,……,字段n where 條件;

 

  • 示例:查詢年齡>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 BETWEEN 20 and 30;
SELECT
    * 
FROM student WHERE age >= 20 AND age <= 30;

 

  • 示例:查詢年齡在22歲、19歲、25歲的學生
SELECT
    * 
FROM student WHERE age = 22 
    OR age = 19 
    OR age = 25;
SELECT
    * 
FROM student WHERE age in(22,19,25);

 

  • 示例:查詢英語成績爲Null的學生
SELECT
    * 
FROM student WHERE english IS NULL

 

  • 示例:查詢英文成績不爲Null的學生
SELECT
    * 
FROM student WHERE english IS NOT NULL

7.4 模糊查詢

  • 示例:
select 字段1,字段2,……,字段n where 條件; -- where條件裏面使用Like關鍵字

 

  • 示例:查詢姓馬的學生
SELECT
    * 
FROM student WHERE `name` LIKE '馬%';

 

  • 示例:查詢姓名中第二個字是化的學生
SELECT
    * 
FROM student WHERE `name` LIKE '_化%';

 

  • 示例:查詢姓名中包含馬的學生
SELECT
    * 
FROM student WHERE NAME LIKE '%馬%';

7.5 排序查詢

  • 語法:
select 字段1,字段2,……,字段n where 條件 order by 字段1,字段2,……,字段n [asc|desc];

 

  • 示例:查詢學生信息按照數學成績降序排序
SELECT
    * 
FROM student ORDER BY math DESC;

 

  • 示例:查詢學生信息按照數學成績升序排序
SELECT
    * 
FROM student ORDER BY math ASC;

 

  • 示例:查詢學生信息按照數學成績排名,若是數學成績一致,按照英語成績排序
SELECT
    * 
FROM student ORDER BY math ASC, english ASC;

7.6 聚合函數

  • 將一列數據做爲一個總體,進行縱向的計算。

 

  • 基本的聚合函數:
count(字段) -- 計算個數
sum(字段) -- 求和
avg(字段) -- 平均值
max(字段) -- 最大值
min(字段) -- 最小值

 

  • 注意:
  • 聚合函數計算的時候,會排除null值。

 

  • 示例:求學生的人數
SELECT
    COUNT( * ) FROM student

 

  • 示例:求學生數學成績的最大值
SELECT
    max( math ) FROM student

 

  • 示例:求學生數學成績的最小值
SELECT
    min( math ) FROM student

 

  • 示例:求學生數學成績的總和
SELECT
    sum( math ) FROM student

 

  • 示例:求學生數學成績的平均值
SELECT
    avg( math ) FROM student

7.7 分組查詢

  • 語法:
select 字段1,字段2,……,字段n where 篩選條件 group by 字段1,字段2,……,字段n having 分組後條件 order by 字段1,字段2,……,字段n [asc|desc];

 

  • 示例:按性別分組,分別查詢男生和女生的平均分
SELECT sex, avg(math+english) FROM student GROUP BY sex

 

  • 示例:按照性別分組,分別查詢男生和女生的人數
SELECT sex, count(*) FROM student GROUP BY sex

7.8 分頁查詢

  • 語法:
select 字段1,字段2,……,字段n where 篩選條件 group by 字段1,字段2,……,字段n having 分組後條件 order by 字段1,字段2,……,字段n [asc|desc] limit 起始索引,幾條數據;

 

  • 示例:
SELECT
    * 
FROM student LIMIT 0,3
相關文章
相關標籤/搜索