1. 程式人生 > >資料庫基礎整理之《MySQL必知必會》Ben Forta &&《資料庫基礎概論》(第五版)王珊

資料庫基礎整理之《MySQL必知必會》Ben Forta &&《資料庫基礎概論》(第五版)王珊

第一章 瞭解SQL

1.1資料庫基礎

1.1.1什麼是資料庫?

  • 資料庫是一個以某種有組織的方式儲存的資料集合
  • 資料庫(DB:DataBase)儲存有組織的資料的容器(通常是一個檔案或一組檔案)
  • 資料庫是通過DBMS(資料庫管理系統)建立和操縱的容器

1.1.2表

  • 表(table)某種特定型別資料的結構化清單
  • 表名唯一、表中資料單一
  • 模式(schema)關於資料庫和表的佈局及特性的資訊

1.1.3列和資料型別

  • 列(column)表中的一個欄位。所以表都是由一個或多個列組成的
  • 資料型別(datatype)所容許的資料的型別。每個表列都有相應的資料型別,它限制(或容許)該表中儲存的資料

1.1.4行

  • 表中的一個記錄

1.1.5主鍵(primary key)

  • 一列(或一組列),其值能夠唯一區分表中的每個行
  • 主鍵應滿足:
  1. 每個行都必須有一個主鍵值(主鍵值不允許為null)
  2. 任意兩行都不具有相同的主鍵值
  • 主鍵規範使用:不更新、不重用

1.2什麼是SQL

  • SQL——Structured Query Language

第2章 MySQL簡介

2.1什麼是MySQL

2.2MySQL工具

  • 執行 MySQL command line 輸入密碼進入MySQL
  • 命令輸入在mysql>之後
  • 命令用;或\g結束
  • help\h獲得幫助
  • 輸入quitexit\q退出

第3章 使用MySQL

1.顯示現有資料庫

  • SHOW DATABASES;                 

  • 如果沒有test資料庫(如下圖)就新建:

  • 建立資料庫
  1. CREATE DATABASE 資料庫名;
  2. GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 資料庫名.* TO 資料庫名@localhost IDENTIFIED BY '密碼';
  3. SET PASSWORD FOR '資料庫名'@'localhost' = OLD_PASSWORD('密碼');
  4. 依次執行3個命令完成資料庫建立。注意:中文 “密碼”和“資料庫”是戶自己需要設定的。如果不設定密碼等,直接執行第一條就行了

  • 此時已經出現自己建立的資料庫TEST

2.使用某現有資料庫

  • USE test;

3.顯示該資料庫中的表

  • SHOW TABLES;

  • 上面顯示的是我建立的三個表,如果沒有(如下圖)就建立:

CREATE TABLE student
(
	s_no char(10) PRIMARY KEY,
	s_name char(24),
	s_age int,
	s_sex char(4),
	s_dept char(20),
	s_major char(30),
	s_class char(10)
);
CREATE TABLE course
(
	c_no int PRIMARY KEY,
	c_name char(18),
	c_credit int
);
CREATE TABLE cs
(
	s_no char(10),
	c_no int,
	cs_grade int,
	PRIMARY KEY(s_no,c_no)
);
  • PRIMARY KEY 為指定該表主鍵
  • 建立表時,每項資料用,隔開,最後一項無逗號
  • 基本格式為:(可以寫在一行,分開書寫便於讀寫。SQL語句遇分號結束)
CREATE TABLE XXX(表名)
(
   XX(列名)  XXX(型別) XXX(屬性)
);

4.顯示錶項屬性

  • DESC student;(等價於SHOW COLUMNS FROM student;)

  • DESC course;
  • DESC cs;

5.插入資料

/*此處,我使用的是我&&舍友的資訊*/
/*****************//往student表中插入資料(安全插法)*******************/
INSERT INTO student(s_no,s_name,s_age,s_sex,s_dept,s_major,s_class)
VALUES
('04161210','HuangChao',20,'man','CS','Computer science&technology','1608'),
('04161211','ZhuYu',21,'man','CS','Computer science&technology','1608'),
('04161212','YangJiaLiang',20,'man','CS','Computer science&technology','1608'),
('04161213','WangYuXiang',20,'man','CS','Computer science&technology','1608'),
('04161214','CuiYuHang',20,'man','CS','Computer science&technology','1608'),
('04161215','XueJiangWei',20,'man','CS','Computer science&technology','1608');

/********************往course表中插入資料(不安全插法:未指明各資料項)*******************/
INSERT INTO course
VALUES
(1,'HighMath',6),
(2,'DataStruct',5),
(3,'English',4),
(4,'P.E.',2),
(5,'DataBase',4),
(6,'OS',4),
(7,'C/C++',10);

/***************//往cs表中插入資料(安全插法)****************/
INSERT INTO cs(s_no,c_no,cs_grade)
VALUES
('04161210',1,93),
('04161210',2,80),
('04161210',3,66),
('04161210',4,77),
('04161210',5,86),
('04161210',6,88),
('04161210',7,90),
('04161211',1,80),
('04161211',2,87),
('04161211',3,88),
('04161211',4,86),
('04161211',5,89),
('04161211',6,82),
('04161211',7,85),
('04161212',1,60),
('04161212',2,63),
('04161212',3,65),
('04161212',4,69),
('04161212',5,65),
('04161212',6,67),
('04161212',7,70),
('04161213',1,90),
('04161213',2,90),
('04161213',3,90),
('04161213',4,100),
('04161213',5,90),
('04161213',6,90),
('04161213',7,90),
('04161214',1,91),
('04161214',2,92),
('04161214',3,93),
('04161214',4,94),
('04161214',5,95),
('04161214',6,96),
('04161214',7,97),
('04161215',1,90),
('04161215',2,90),
('04161215',3,90),
('04161215',4,90),
('04161215',5,90),
('04161215',6,90),
('04161215',7,90);

  • CS表太長,此處只截圖——頭和尾。

6.檢索所有列(打印表)

SELECT *
FROM student;
SELECT *
FROM course;
SELECT *
FROM cs;
  • *為萬用字元
  • 檢索格式:
SELECT *
FROM XXX(表名);

7.修改表中資料

/* 修改student表中資料 */
UPDATE student
SET s_name='黃超',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術(卓越)',s_class='計科1608'
WHERE s_no='04161210';

 

UPDATE student
SET s_name='王宇祥',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術(卓越)',s_class='計科1608'	
WHERE s_no='04161210';
UPDATE student
SET s_name='朱宇',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術',s_class='計科1607'	
WHERE s_no='04161210';
UPDATE student
SET s_name='崔宇航',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術',s_class='計科1607'
WHERE s_no='04161210';
UPDATE student
SET s_name='薛江偉',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術',s_class='計科1607'
WHERE s_no='04161210';
UPDATE student
SET s_name='楊嘉亮',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術',s_class='計科1607'
WHERE s_no='04161210';
  •  再次查看錶中資料

  • 發現:只有第一條記錄被更改了,其他都是原來的資料。檢查之後發現WHERE S_NO = ' 04161210'沒有被改變,所以修改的始終都是第一條記錄。

UPDATE student
SET s_name='黃超',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術(卓越)',s_class='計科1608'
WHERE s_no='04161210';
UPDATE student
SET s_name='王宇祥',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術(卓越)',s_class='計科1608'	
WHERE s_no='04161213';
UPDATE student
SET s_name='朱宇',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術',s_class='計科1607'	
WHERE s_no='04161211';
UPDATE student
SET s_name='崔宇航',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術',s_class='計科1607'
WHERE s_no='04161214';
UPDATE student
SET s_name='薛江偉',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術',s_class='計科1607'
WHERE s_no='04161215';
UPDATE student
SET s_name='楊嘉亮',s_sex='男',s_dept='計算機學院',s_major='電腦科學與技術',s_class='計科1607'
WHERE s_no='04161212';

  • 此時得到的就是我們想要的結果了
  • 另外,需注意:MySQL5.7及以上版本才支援漢字(親自嘗試,不一定是這樣),如果插入漢字有錯誤,且檢查長度等都合乎規範那麼,可能是版本的原因。

 ​​

/* 修改course表中資料 */
UPDATE course
SET c_name = '高等數學A'
WHERE c_no=1;
UPDATE course
SET c_name = '資料結構A'
WHERE c_no=2;
UPDATE course
SET c_name = '大學英語II'
WHERE c_no=3;
UPDATE course
SET c_name = '大學體育II'
WHERE c_no=4;
UPDATE course
SET c_name = '資料庫原理及應用A'
WHERE c_no=5;

 

UPDATE course
SET c_name = '作業系統'
WHERE c_no=6;

8.刪除表中資料

//刪除cs表中資料
DELETE FROM cs
WHERE c_no=1 AND s_no='04161210';
//刪除整個表並重新建立(將表中資料全部清除)
TRUNCATE student;
TRUNCATE course;
TRUNCATE cs;

第4章 檢索資料