天天看點

MYSQL<一>

1 -- ########## 01、資料庫概述 ##########
  2 -- 1、資訊:現實世界中各種可以接觸到的東西
  3 -- 2、資料:資訊在計算機世界中的映射(反映)
  4 
  5 -- Java中可以把資料存儲在記憶體中的各種容器裡,但是電腦掉電後(或程式關閉後),存儲在記憶體中的這些資料就被擦除掉了
  6 
  7 -- 為了解決資料持久化的問題,人類提出了各種解決方案,比如:結繩記事、文字出現(記在石頭上、烏龜殼上、竹簡上、紙上)、計算機的使用(單個檔案、檔案系統、資料庫)
  8 
  9 -- 解決的核心問題:
 10 -- 1、資料的持久化問題(比如:使用頭腦記憶會忘記)
 11 -- 2、大量資料的管理問題
 12 
 13 -- 資料庫(DataBase)是按照資料結構來進行組織、存儲和管理資料的倉庫
 14 
 15 -- 資料庫特點:
 16 -- 1、實作資料共享
 17 -- 2、減少資料的備援
 18 -- 3、保證資料的獨立性
 19 -- 4、實作資料的集中控制
 20 -- 5、資料的完整性和一緻性
 21 -- 6、資料的故障修複
 22 
 23 -- 資料庫的分類(依據資料類型 和 發展曆史)
 24 -- 1、層次型資料模型    ----->  層次型資料庫
 25 -- 2、網狀型資料模型    ----->  網狀型資料庫
 26 -- 3、關系型資料模型    ----->  關系型資料庫(理論依據:關系代數)
 27 
 28 -- 主流資料庫:
 29 -- 關系型資料庫:MySQL(甲骨文公司)、Oracle(甲骨文公司)、SQLServer(微軟)、DB2(IBM)
 30 -- 非關系型資料庫(NoSQL):Mongodb、HBase、Cassandra等等
 31 
 32 -- MySQL資料庫:
 33 -- 特點:體積小、功能比較強大、開源免費(企業特别看重)、應用廣泛
 34 -- 國内網際網路三巨頭BAT:都有自己針對MySQL的定制版本
 35 
 36 -- MySQL資料庫引擎:早期MySQL資料庫預設引擎使用MyISAM引擎,較新的版本預設引擎改為使用InnoDB引擎
 37 -- 1、MyISAM引擎:查詢和增删速度較快,但是不支援事務
 38 -- 2、InnoDB引擎:支援事務,是作為關系型資料庫MySQL的首選引擎
 39 
 40 -- MySQL資料庫環境的搭建:
 41 -- 1、安裝
 42 -- 2、設定
 43 -- 3、檢視MySQL服務是否開啟,輸入指令:services.msc
 44 -- 4、在指令行視窗輸入:mysql -uroot -p設定的密碼
 45 -- 如果看見Welcome to MySQL monitor...字樣,說明安裝和配置均成功
 46 
 47 -- ########## 02、MySQL資料庫文法 ##########
 48 -- MySQL資料庫文法
 49 -- MySQL編碼規範:
 50 -- 1、在MySQL中編寫的SQL語句均以英文分号;結尾
 51 -- 2、強制要求SQL語句中的關鍵字使用大寫,其他小寫
 52 -- 3、命名時,由多個單詞組成的命名,多個單詞之間使用下劃線_連接配接
 53 
 54 -- SQL語言:結構化查詢語言(Structured Query Language)
 55 -- 1、資料定義語言DDL:CREATE、DROP、ALTER、TRUNCATE
 56 -- 2、資料操作語言DML:INSERT、UPDATE、DELETE
 57 -- 3、資料查詢語言DQL:SELECT
 58 -- 4、資料控制語言DCL:COMMIT、ROLLBACK
 59 
 60 -- SQL檔案:儲存為.sql字尾名的檔案
 61 -- SQL語句的注釋:使用--兩個中橫線,接上需要注釋的内容
 62 
 63 -- 資料定義語言DDL
 64 -- 對于資料庫的庫的了解:類比超市,超市中有多個區域,分别賣不同的商品,比如:生鮮、水果、肉類等
 65 
 66 -- MySQL資料庫中庫的概念:database
 67 
 68 -- 檢視MySQL資料庫中所有的庫:(預設有四個庫:information_schema、mysql、performance_schema、test)
 69 -- 注意:這四個庫,前三個都是和MySQL資料系統有關的庫,平時不操作,test這個庫是留給我們随意使用的
 70 SHOW DATABASES;
 71 
 72 -- 建立庫
 73 CREATE DATABASE 資料庫名;
 74 
 75 -- 删除庫
 76 DROP DATABASE 資料庫名;
 77 
 78 -- 檢視MySQL資料庫所支援的引擎類型(檢視列的結果中Support列,标為YES或DEFAULT預設的都是支援的引擎類型,标為NO是不支援的引擎類型)
 79 SHOW ENGINES \g;
 80 
 81 -- 既然MySQL資料庫中可以有多個database庫,是以使用時,首先需要顯式的說明要使用的是哪一個database庫
 82 USE 需要使用的資料庫名;
 83 
 84 -- 對于資料庫的庫中的表的了解:類比超市,不同的區域中有若幹個貨架用來擺放商品
 85 
 86 -- MySQL資料庫真的某個庫中會有若幹個表:table,回想關系型資料庫,這些表其實就是關系的展現
 87 -- 表的特征通過字段:field來進行展現
 88 
 89 -- 檢視使用的這個庫中所有的表
 90 SHOW TABLES;
 91 
 92 -- 建立表
 93 -- CREATE TABLE 表名
 94 -- (
 95 --     字段名1   資料類型,
 96 --     字段名2   資料類型,
 97 --     ...
 98 --     字段名n   資料類型
 99 -- );
100 
101 -- 最常用的資料類型
102 -- INT:整型
103 -- VARCHAR(長度):字元型
104 
105 -- 檢視表結構
106 -- 寫法1
107 DESC 表名;
108 -- 寫法2
109 DESCRIBE 表名;
110 
111 -- 修改表名
112 ALTER TABLE 舊表名 RENAME 新表名;
113 
114 -- 修改表的字段的資料類型
115 ALTER TABLE 表名 MODIFY 字段名 資料類型;
116 
117 -- 修改表的字段名 和 資料類型
118 ALTER TABLE 表名 CHANGE 舊字段名 新字段名 新資料類型;
119 
120 -- 添加字段(使用FIRST關鍵字把需要的字段添加在表結構的最前面,使用AFTER關鍵字把需要的字段添加在指定字段的後面)
121 ALTER TABLE 表名 ADD 新字段名 資料類型 FIRST;
122 ALTER TABLE 表名 ADD 新字段名 資料類型 AFTER 已存在的字段名;
123 
124 -- 删除字段
125 ALTER TABLE 表名 DROP 字段名;
126 
127 -- 删除表
128 DROP TABLE 表名;
129 
130 -- ########## 03、MySQL的基本增删改查操作 ##########
131 -- 使用指令行編碼SQL語句,效率低下,考慮使用圖形化用戶端工具,例如:MySQL Work Bench、Navicat等,經過反複比較,推薦使用SQLyog
132 
133 -- 重音符`:在MySQL的SQL語句中使用特殊字元(關鍵字)時,一般會考慮使用重音符`,鍵盤位置一般在ESC鍵下方
134 
135 CREATE TABLE userinfo
136 (
137     userid INT,
138     username VARCHAR(10),
139     `password` VARCHAR(10)
140 );
141 
142 DESC userinfo;
143 
144 -- 1、新增資料 INSERT
145 -- A:完整插入形式:INSERT INTO 表名(字段1, 字段2, ..., 字段n) VALUES(值1, 值2,..., 值n);
146 INSERT INTO userinfo(userid, username, `password`) VALUES(1, '張三', '123');
147 -- B:簡寫插入形式:INSERT INTO 表名 VALUES(值1, 值2,..., 值n);
148 INSERT INTO userinfo VALUES(2, '李四', '456');
149 -- C:插入多行形式:
150 --         早期版本:INSERT INTO 表名 VALUES(值1, 值2,..., 值n);INSERT INTO 表名 VALUES(值11, 值12,..., 值1n);
151 INSERT INTO userinfo VALUES(3, '王五', '789');
152 INSERT INTO userinfo VALUES(4, '趙六', '999');
153 --        後續版本:INSERT INTO 表名 VALUES(值1, 值2,..., 值n), (值11, 值12,..., 值1n);
154 INSERT INTO userinfo VALUES(5, '小明', '888'), (6, '小紅', '777');
155 
156 -- 注意:空值 和 空串
157 -- 空串:'',一對單引号包含的内容
158 INSERT INTO userinfo VALUES(7, '小張', '');
159 -- 空值:NULL,特殊值
160 INSERT INTO userinfo VALUES(8, '小李', NULL);
161 -- 下句插入的是字元串NULL
162 INSERT INTO userinfo VALUES(9, '小王', 'NULL');
163 
164 -- 2、修改資料 UPDATE
165 -- A:修改單個字段的值:UPDATE 表名 SET 字段名 = 新值 WHERE 條件子句;(注意:通過WHERE條件限定範圍)
166 UPDATE userinfo SET `password` = '666' WHERE username = '趙六';
167 UPDATE userinfo SET `password` = '999' WHERE userid = 4;
168 UPDATE userinfo SET `password` = '666' WHERE username = '趙六' AND userid = 4;
169 -- B:修改多個字段的值:UPDATE 表名 SET 字段名1 = 新值1, 字段名2 = 新值2, ..., 字段名n = 新值n WHERE 條件子句;(注意:特别注意SET後多個字段指派之間使用的是英文逗号)
170 UPDATE userinfo SET username = '趙雲', `password` = '999' WHERE userid = 4;
171 UPDATE userinfo SET username = '趙六', `password` = '666' WHERE username = '趙雲';
172 UPDATE userinfo SET username = '趙雲', `password` = '999' WHERE username = '趙六' AND userid = 4;
173 
174 -- 3、删除資料 DELETE    TRUNCATE
175 -- A:删除滿足條件的資料:DELETE FROM 表名 WHERE 條件子句;(注意:通過WHERE條件限定範圍)
176 DELETE FROM userinfo WHERE `password` = '777';
177 -- B:删除全部資料:
178 -- 寫法1:不使用WHERE子句的DELETE:DELETE FROM 表名;
179 DELETE FROM userinfo;
180 -- 寫法2:使用TRUNCATE TABLE 表名;(注意:TRUNCATE常常翻譯為截斷和資料庫的表的資料内容的聯系)
181 TRUNCATE TABLE userinfo;
182 
183 -- 最簡單的查詢
184 SELECT * FROM userinfo;      

轉載于:https://www.cnblogs.com/java-le/p/6443399.html