什么是數據庫?
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。
每個數據庫都有一個或多個不同的 API 用于創建,訪問,管理,搜索和復制所保存的數據。
我們也可以將數據存儲在文件中,但是在文件中讀寫數據速度相對較慢。
所以,現在我們使用關系型數據庫管理系統(RDBMS)來存儲和管理的大數據量。所謂的關系型數據庫,是建立在關系模型基礎上的數據庫,借助于集合代數等數學概念和方法來處理數據庫中的數據。
RDBMS 即關系數據庫管理系統(Relational Database Management System)的特點:
- 1.數據以表格的形式出現
- 2.每行為各種記錄名稱
- 3.每列為記錄名稱所對應的數據域
- 4.許多的行和列組成一張表單
- 5.若干的表單組成database
第一. 創建數據庫
語法: CREATE DATABASE 數據庫名稱
創建數據庫
第二.刪除數據庫
語法: DROP DATABASE 數據庫名
刪除數據庫
第三 ,數據類型
MySQL支持多種類型,大致可以分為三類:數值、日期/時間和字符串(字符)類型。
1.數值類型
數值類型
2.日期與時間類型
日期與時間類型
3.字符串類型
字符串類型
CHAR 和 VARCHAR 類型類似,但它們保存和檢索的方式不同。它們的最大長度和是否尾部空格被保留等方面也不同。在存儲或檢索過程中不進行大小寫轉換。
BINARY 和 VARBINARY 類似于 CHAR 和 VARCHAR,不同的是它們包含二進制字符串而不要非二進制字符串。也就是說,它們包含字節字符串而不是字符字符串。這說明它們沒有字符集,并且排序和比較基于列值字節的數值值。
BLOB 是一個二進制大對象,可以容納可變數量的數據。有 4 種 BLOB 類型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它們區別在于可容納存儲范圍不同。
有 4 種 TEXT 類型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。對應的這 4 種 BLOB 類型,可存儲的最大長度不同,可根據實際情況選擇。
第四. 創建數據表
表的結構信息: 表名 ,表字段名, 定義表字段類型
語法:
CREATE TABLE 表名(字段名,字段類型) CREATE TABLE userinfo( user_id INT NOT NULL AUTO_INCREMENT, user_name VARCHAR(50) NOT NULL, user_password VARCHAR(50) NOT NULL, age INT NOT NULL, address VARCHAR(50), user_date DATE, PRIMARY KEY(user_id) )ENGINE=INNODB DEFAULT CHARSET=utf8;
創建表
創建成功
解釋說明:
1.如果不行字段為空,可以把它設置為NOT NULL,表示插入數據時不能為空,不插入數據是會報錯
2.如果想設置列為自增,可以把它設置為 AUTO_INCREMENT,這事自動增加+1,一般設為主鍵
3.想把那個列設置為主鍵,可以使用關鍵字 PRIMARY KEY
4.ENGINE 設置存儲引擎,CHARSET 設置編碼。
第五 .刪除表
語法 : DROP TABLE 表名
刪除表
刪除成功
刪除成功
第六.插入數據
語法: INSERT INTO 表名 ( 字段名1, 字段名2,...字段名N ) VALUES ( 數值1, 數值2,...數值N ); //插入數據 INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (1,"張三","123456",18,"中國",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (2,"李四","999",19,"中國",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (3,"張三","156",18,"中國",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (4,"lusi","123456",18,"美國",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (5,"王五","123",18,"",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (6,"王五","123456",34,"中國",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (7,"趙六","123",22,"中國",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (8,"aa","123456",18,"英國",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (9,"bb","234",18,"美國",NOW()); //說明 now()是一個函數,可以返回當前日期
插入數據
插入成功
插入成功
第七,查詢
語法:SELECT 字段名1,字段名2.... FROM 表名
*號
說明:*號代替字段表示查詢userinfo表的所以信息返回出來,正式項目中盡量不要全表查詢,這樣會查詢很久,容易卡機
字段名
說明:查詢userinfo表中的所有姓名和密碼
where子句的查詢
說明:WHERE關鍵字是判斷子句的條件
題目意思是查詢userinfo表中的年齡為18歲的有哪些人的名稱列出來
and關鍵字的使用
說明:AND 關鍵字的使用 意思表示"與",一定要跟WHERE關鍵字一起使用,表示條件判斷
題目說明:查詢suerinfo表中年齡為18歲,并且地址為中國的,有哪些人的姓名
OR的關鍵字
說明:OR關鍵字意思表示為"或者" ,一定要跟WHERE關鍵字一起使用,表示條件判斷
題目意思是查詢userinfo表中年齡為18歲的或者地址為美國的有哪些人呢的姓名
like的關鍵字
說明:LIKE關鍵字意思是模糊查詢,%:表示占位符的,一定要跟WHERE關鍵字一起使用
題目意思是查詢userinfo表中地址第二個字為國的名字個有哪些人的姓名和地址
條件符號
條件符號說過
代碼如下:
/*查詢*/ SELECT * FROM userinfo SELECT user_name,user_password FROM userinfo SELECT user_name FROM userinfo WHERE age=18 SELECT user_name FROM userinfo WHERE age=18 AND address="中國" SELECT user_name,address FROM userinfo WHERE address LIKE "%國" SELECT user_name FROM userinfo WHERE age=18 OR address="美國"
第八.更新
語法: UPDATE 表名 SET 字段名1=value1,字段名2=value2... WHERE 條件
update 表名稱 set 列名稱=新值 where 更新條件;
說明:題目意思是把ID為9的姓名更新為"更新了"其實更新就是更新表中某個字段的數據
查詢語句中你可以使用一個或者多個表,表之間使用逗號, 分割,并使用WHERE語句來設定查詢條件。
- 你可以在 WHERE 子句中指定任何條件。
- 你可以使用 AND 或者 OR 指定一個或多個條件。
- WHERE 子句也可以運用于 SQL 的 DELETE 或者 UPDATE 命令。
- WHERE 子句類似于程序語言中的 if 條件,根據 MySQL 表中的字段值來讀取指定的數據。
第九 ,刪除
DELETE FROM 表名 [WHERE 條件]
刪除先表信息
刪除先表信息
題目:請刪除userinfo表id為10的這一行數據
代碼如:/*刪除*/ DELETE FROM userinfo WHERE user_id=10
刪除后的表數據
刪除說明:
1. 如果沒有指定 WHERE 子句,MySQL 表中的所有記錄將被刪除。
2.你可以在 WHERE 子句中指定任何條件
3.您可以在單個表中一次性刪除記錄。
DROP和DETELE刪除關鍵字的有什么區別的講解:
答:
一、delete
1、delete是DML,執行delete操作時,每次從表中刪除一行,并且同時將該行的的刪除操作記錄在redo和undo表空間中以便進行回滾(rollback)和重做操作,但要注意表空間要足夠大,需要手動提交(commit)操作才能生效,可以通過rollback撤消操作。
2、delete可根據條件刪除表中滿足條件的數據,如果不指定where子句,那么刪除表中所有記錄。
3、delete語句不影響表所占用的extent,高水線(high watermark)保持原位置不變。
二. drop
1、drop是DDL,會隱式提交,所以,不能回滾,不會觸發觸發器。
2、drop語句刪除表結構及所有數據,并將表所占用的空間全部釋放。
3、drop語句將刪除表的結構所依賴的約束,觸發器,索引,依賴于該表的存儲過程/函數將保留,但是變為invalid狀態。
第十, Mysql排序
如果我們需要對讀取的數據進行排序,我們就可以使用 MySQL 的 ORDER BY 子句來設定你想按哪個字段哪種方式來進行排序,再返回搜索結果。
語法: SELECT 字段名1,字段名2... from 表名 ORDER BY 根據哪個字段進行排序 ASC或者DESC
題目說明:根據userinfo表 于age年齡進行升序排序
代碼如:SELECT * FROM userinfo ORDER BY age ASC
升序
題目說明:根據userinfo表 于age年齡進行降序排序
代碼如:SELECT * FROM userinfo ORDER BY age DESC
說明:
1.你可以使用任何字段來作為排序的條件,從而返回排序后的查詢結果。
2.你可以設定多個字段來排序。
3.你可以使用 ASC 或 DESC 關鍵字來設置查詢結果是按升序或降序排列。 默認情況下, 它是按升序排列。
4 .你可以添加 WHERE...LIKE 子句來設置條件。
第十一 ,DISTINCT關鍵字的說明,表示去除重復的
語法: SELECT DISTINCT 字段名1,字段名2 FROM 表名;
說明
題目說明:查詢userinfo表中的姓名沒有重復的
最后總結:這次主運用這些關鍵字
- SELECT 查詢
- LIKE 模糊查詢
- SELECT DISTINCT 去除重復
- WHERE 子句
- AND & OR "與""或"
- ORDER BY "排序"
- ASC 或 DESC 升序 和降序
- INSERT INTO 插入
- UPDATE SET 更新
- DELETE 刪除
- DROP 刪除表結構