DAY01 MySQL入門
第一章 數據庫介紹
1.1 什么是數據庫
數據存儲的倉庫,本質上是一個文件系統,作用:方便管理數據的。
1.2 數據庫管理系統
數據庫管理系統(DataBase Management System, DBMS):指一種操作和管理數據庫的大型軟件。
數據庫管理系統—>MySQL軟件—>多個倉庫—>多張表—>多條記錄(數據)
1.3 實體(java類)和表關系
1.4 常見關系型數據庫
1.MYSQL:開源免費的數據庫,小型的數據庫.已經被Oracle收購了,MySQL6.x版本(商業、社區)也開始收費。2.Oralce:收費的大型數據庫,Oracle公司的產品你。Oracle收購SUN公司,收購MySQL。3.DB2:IBM公司的數據庫產品,收費的。常應用在銀行系統中。4.OceanBase:阿里的大型數據庫,性能已超越Oracle全球第一。5.SQLServer:Microsoft 公司收費的中型的數據庫。C#、.net等語言常使用。6.SyBase:已經淡出歷史舞臺。提供了一個非常專業數據建模的工具PowerDesigner。7.SQLite:嵌入式的小型數據庫,應用在手機端。
第二章 MySQL安裝和使用
2.1 安裝
2.2 配置
第三章 SQL
3.1 概述
什么是SQL
結構化查詢語言(Structured Query Language)
通過SQL語言完成數據庫操作。實現對數據庫中的對象(數據庫、數據庫表、數據庫中數據等)進行增刪改查。
C:create 創建
R:retrieve(read)檢索、查詢
U:update 修改
D:delete 刪除
SQL方言
SQL是一套標準,所有的數據庫廠商都實現了此標準;但是各自廠商在此標準上增加了特有的語句,這部分內容我們成為方言。
舉個例子:MySQL方言注釋 #
我們在學習sql語句時,同時要關注每一家數據庫特有的方言。
SQL書寫規范
1. sql語句可以單行或多行書寫,最后以分號結尾2.sql語句(在windows平臺下)不區分大小寫,建議關鍵字大寫SELECT * FROM student;3.注釋單行-- 所有數據庫廠商支持# 僅mysql廠商支持(方言)多行/* 注釋內容 */
SQL分類
1. DDL(Data Definition Language)數據定義語言(命令了解,掌握圖形化工具操作)用來定義數據庫對象:數據庫,表,列等。關鍵字:create(創建),drop(刪除),alter(修改)等2. DML(Data Manipulation Language)數據操作語言(重點)用來對數據庫中表的數據進行增刪改。關鍵字:insert(插入),delete(刪除),update(修改)等3. DQL(Data Query Language)數據查詢語言(特別重要)用來查詢數據庫中表的記錄(數據)。關鍵字:select(查詢),from(從哪張表查詢),where(指定查詢條件)等4. DCL(Data Control Language)數據控制語言(了解中的了解)由DBA(數據庫管理員)完成DCL用來定義數據庫的訪問權限和安全級別,以及創建用戶。關鍵字:grant(授權),revoke(撤銷權限)等5. TCL(Transaction Control Language)事務控制語言用于控制數據庫的事務操作,關鍵字:commit,savepoint,rollback等
第四章 SQL基礎操作
4.1 DDL
- 進入公司后,數據庫和表只創建一次,通常有DBA數據庫管理員操作 DataBase Adminisitrator
- 而且我一會講圖形化工具,可以簡化這里面的代碼(10分鐘內搞定)
操作數據庫
- 創建庫、顯示庫、修改庫、刪除庫操作
C:創建
1、直接創建數據庫【掌握】語法:create database 數據庫名稱;實例:create database day01;
2、創建數據庫并指定字符【了解】語法:create database 數據庫名稱 charset 字符集名稱;實例:create database day01_1 charset gbk;
R:查詢
1、查看所有數據庫語法:show databases;
2、查看建庫語句語法:show create database 數據庫名稱;實例:show create database day01;
U:修改
1、修改數據庫字符集語法:alter database 數據庫名稱 charset 新字符集;實例:alter database day01_1 charset utf8;
D:刪除
1、直接刪除數據庫語法:drop database 數據庫名稱;實例:drop database day01_1;
使用數據庫
1、進入/切換某一個具體的數據庫語法:use 數據庫名稱;實例:use day01;
2、查看當前所在哪個數據庫中語法:select database();
操作表
- 創建表、顯示表、修改表、刪除表操作
C:創建
1. 創建表(掌握)語法:CREATE TABLE 表名(列名1 數據類型,列名2 數據類型,列名3 數據類型,...);實例:CREATE TABLE student(id INT,name VARCHAR(32));
2. 常用數據類型(平時去寫會用就行)int:整形float:浮點型double:浮點型decimal:浮點型(保留精準度)decimal(m,n) 指定范圍m 總長度n 小數長度例如:decimal(5,2)999.99 最大值0.01 最小值varchar:字符型varchar(n) 指定容納多少個字符 1-65535 包含字母,符號,漢字text:文本型date:日期類型datetime:日期時間類型3. 克隆表創建表時,可以快速指定另一個張表的結構語法:create table 新表名 like 舊表明;實例:create table stu like student;
R:查詢
1. 查看所有表語法:show tables;2. 查看建表語句語法:show create table 表名;實例:show create table stuent;3. 查看表結構 語法:desc 表名稱;實例:desc student;
U:修改
1. 添加一列語法:alter table 表名 add 列表 數據類型;實例:alter table stu add jieshao varchar(50);2. 修改類型語法:alter table 表名 modify 列表 數據類型;實例:alter table stu modify jieshao varchar(100);3. 修改列名和類型語法:alter table 表明 change 舊列表 新列表 新類型;實例:alter table stu change jieshao intro varchar(100);4. 刪除指定列語法:alter table 表名 drop 列表;實例:alter table stu drop intro;5. 修改表字符集語法:alter table 表名 charset 字符集;實例:alter table stu charset gbk;6. 修改表名字語法:rename table 舊名稱 to 新名稱;實例:rename table stu to stu1;
D:刪除
1. 直接刪除表語法:drop table 表明;實例:drop table stu;
圖形化工具
4.2 DML
添加記錄
1. 語法:insert into 表名(列名1,列名2 ...) values(值1,值2...);2. 注意:列名和值的數據類型要對應字符串類型可以使用單雙引號,推薦單引號字符串可以插入一切(任意)類型,MySQL底層實現了隱式轉換個別列名字段名如果跟關鍵字沖突了,我們可以使用反引號包裹起來例如:`name`3. 練習:-- 插入一條學院信息INSERT INTO student(id,`name`) VALUE(1,'張三');-- 指定部分列名INSERT INTO studnt(id) VALUES(2);-- 省略表列表名 前提:values中為所有列賦值INSERT INTO student VALUES(3,'劉備');-- 如下語法錯誤INSERT INTO student VALUES(4);--批量插入數據INSERT INTO student(id,`name`) VALUES(5,'趙云'),(6,'諸葛亮');
蠕蟲復制
作用:將一張表的記錄,快速復制到另外一張表應用場景:數據的遷移需求:創建一張stu新表,表結構與student一致,實現數據的快速遷移要求:二張表結構相同步驟:1. 克隆表create table stu like student;2. 數據遷移-- 查詢student表中的所有數據SELECT * FROM student;-- 將student表的查詢結果插入到stu表INSERT INTO stu SELECT * FROM student;
修改記錄
1. 語法:update 表名 set 列1=值1,列2=值2 ... [where 條件]注意:where條件可以不指定,如果沒有指定,就是修改所有記錄mysql語法中,如果講師通過中括號括起來內容,代表該內容可以不寫2. 實例:-- 修改名稱為'zhangfei'UPDATE stu SET `name`='zhangfei';-- 指定where條件UPDATE student SET `name`='zhangfei' WHERE id=1;
刪除記錄
1. 語法:delete from 表名 [where條件]2. 解釋:[] 中的語法內容可以不寫,如果沒有寫where條件,刪除所有3. 實例:-- 刪除數據DELETE FROM student WHERE id=2;4. 摧毀表,重構表先把表刪除,再創建一個相同結構的新表truncate table 表名;-- 刪除整張表數據DELETE FROM stu; -- 一條條的刪除,最終刪除所有數據TRUNCATE TABLE stu; -- 刪除整張表后,再重新創建表
知識小結
- 新增:insert into 表名
- 修改:updat 表名 set
- 刪除:delete from 表名
4.3 DQL簡單查詢(檢索)
導入數據
-- 創建表
create table student1(id int,name varchar(20),chinese double,english double,math double
);
-- 插入記錄
insert into student1(id,name,chinese,english,math) values(1,'tom',89,78,90);
insert into student1(id,name,chinese,english,math) values(2,'jack',67,98,56);
insert into student1(id,name,chinese,english,math) values(3,'jerry',87,78,77);
insert into student1(id,name,chinese,english,math) values(4,'lucy',88,NULL,90);
insert into student1(id,name,chinese,english,math) values(5,'james',82,84,77);
insert into student1(id,name,chinese,english,math) values(6,'jack',55,85,45);
insert into student1(id,name,chinese,english,math) values(7,'tom',89,65,30);
語法
1. 格式:-- 查詢展示所有列:SELECT * FROM 表名;-- 查詢展示指定列:SELECT 列1, 列2, ... FROM 表名;2. 去重關鍵字 DISTINCT:用于去除重復記錄SELECT DISTINCT 列名 FROM 表名;3. 查詢結果可進行數學運算,不影響原表記錄4. NULL 參與數學運算結果仍為 NULL,可使用 IFNULL() 函數處理:IFNULL(列名, 默認值) 若該列值為 NULL,則返回默認值(如:IFNULL(english, 0))。5. 設置別名(AS 可省略):SELECT 列名 [AS] 列別名 FROM 表名 [AS] 表別名;注意:AS 關鍵字在別名設置中可以省略。
練習
-- 查詢表中所有學生的信息
SELECT * FROM student1; -- 查詢表中所有學生的姓名和對應的語文成績
SELECT `name`, chinese FROM student1; -- 查詢表中學生姓名(去重)
SELECT DISTINCT `name` FROM student1; -- 在所有學生數學分數上加10分特長分
SELECT id, `name`, math + 10 FROM student1; -- 統計每個學生的總分
SELECT id, `name`, chinese + IFNULL(english, 0) + math FROM student1; -- 使用別名表示學生總分
SELECT id, `name`, chinese + IFNULL(english, 0) + math AS '總分' FROM student1;
4.4 DQL條件查詢
導入數據
-- 創建表
CREATE TABLE student2 (id int,name varchar(20),age int,sex varchar(5),address varchar(100),math int,english int
);-- 插入記錄
INSERT INTO student2(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);
練習
# SQL 練習 - 關系運算符
-- 查詢math分數大于80分的學生
SELECT * FROM student2 WHERE math > 80;
-- 查詢english分數小于或等于80分的學生
SELECT * FROM student2 WHERE english <= 80;
-- 查詢age等于20歲的學生
SELECT * FROM student2 WHERE age = 20;
-- 查詢age不等于20歲的學生
SELECT * FROM student2 WHERE age != 20;# SQL 練習 - 邏輯運算符
-- 查詢age大于35且性別為男的學生(兩個條件同時滿足)
SELECT * FROM student2 WHERE age > 35 AND sex = '男';
-- 查詢age大于35或性別為男的學生(兩個條件其中一個滿足)
SELECT * FROM student2 WHERE age > 35 OR sex = '男';
-- 查詢id是1或3或5的學生
SELECT * FROM student2 WHERE id = 1 OR id = 3 OR id = 5;
-- in關鍵字
-- 再次查詢id是1或3或5的學生
SELECT * FROM student2 WHERE id IN (1, 3, 5);
-- 查詢id不是1或3或5的學生
SELECT * FROM student2 WHERE id NOT IN (1, 3, 5);
-- 查詢english成績大于等于77,且小于等于87的學生
SELECT * FROM student2 WHERE english BETWEEN 77 AND 87;
-- 查詢英語成績為null的學生
SELECT * FROM student2 WHERE english IS NULL;# SQL 練習 - like模糊匹配
-- 查詢姓馬的學生
SELECT * FROM student2 WHERE name LIKE '馬%';
-- 查詢姓名中包含'德'字的學生
SELECT * FROM student2 WHERE name LIKE '%德%';
-- 查詢姓名,且姓名有三個字的學生
SELECT * FROM student2 WHERE name LIKE '馬__';
DAY02 查詢&約束&多表
回顧
1、數據庫介紹 數據庫存儲的倉庫,是文件系統。數據庫中的數據都會持久化到磁盤中。 數據庫管理系統(DBMS)---> mysql軟件 ---> 數據庫 ---> 多張表 ---> 多條記錄(多條數據)2、安裝與啟動mysql 參照 mysql安裝教程一步步操作即可 登錄 mysql [-h主機IP] -u用戶名 -p密碼 退出 exit 或者 quit 3、SQL語句 結構化查詢語言,作用:通過SQL完成數據庫對象的CRUD(增刪改查)操作 數據庫方言:例如:mysql可以通過 # 進行單行注釋 DDL:操作數據庫和表 create alter drop DML:對表中數據進行增刪改操作 insert update delete DQL:對表中數據進行查詢操作 select from where DCL:主要進行權限控制 grant TCL:主要進行事務控制 begin commit rollback4、基本操作 DDL 操作庫 create database 數據庫名稱; drop database 數據庫名; use 數據庫名稱; # 切換數據庫 select database(); # 查看當前數據庫操作表create table 表名(列名1 數據類型,列名2 數據類型,...);常操作的一些數據類型:int 整型varchar(長度)datedatetimefloatdoubletext刪除表:drop table 表名;查看表結構:desc 表名;DML (重點)insert into 表名(列名1,列名2...) values(值1,值2...);update 表名 set 列名1=值1,列名2=值2 ... [where條件]delete from 表名 [where條件]DQL (重點)select ... from 表名 [where條件]關系運算: > < = !=邏輯運算: and or notin關鍵字between ... and ... 取值范圍條件空值條件is nullis not null