一、mysql數(shù)據(jù)庫的基本使用:增刪改查
1、前提:
????1>啟動數(shù)據(jù)庫服務(wù):service mysqld start
????2>登錄mysql? :mysql -u root? -p? ? ----->接著輸入密碼? 回車。
????-u:?指定登錄用戶名
????-p:使用密碼登錄
????3>使用數(shù)據(jù)庫:?use?mysql ;
2、數(shù)據(jù)庫的“增刪改”
-- 2.1 增加數(shù)據(jù)
-- 插入所有字段。一定依次按順序插入
INSERT INTO student VALUES(1,'張三','男',20);
-- 注意不能少或多字段值
-- INSERT INTO student VALUES(2,'李四','女');
-- 插入部分字段
INSERT INTO student(id,NAME) VALUES(2,'李四');
-- 2.2 修改數(shù)據(jù)
-- 修改所有數(shù)據(jù)(建議少用)
UPDATE student SET gender='女';
-- 帶條件的修改(推薦使用)
UPDATE student SET gender='男' WHERE id=1; -- 修改id為1的學(xué)生,修改性別為男
-- 修改多個字段,注意: SET 字段名=值,字段名=值,....
UPDATE student SET gender='男',age=30 WHERE id=2;
-- 2.3 刪除數(shù)據(jù)
-- 刪除所有數(shù)據(jù)(建議少用)
DELETE FROM student;
-- 帶條件的刪除(推薦使用)
DELETE FROM student WHERE id=2;
--? 另一種方式
-- delete from: 可以全表刪除? ? ? 1)可以帶條件刪除? 2)只能刪除表的數(shù)據(jù),不能刪除表的約束? 3)使用delete from刪除的數(shù)據(jù)可以回滾(事務(wù))
-- truncate table: 可以全表刪除? 1)不能帶條件刪除 2)即可以刪除表的數(shù)據(jù),也可以刪除表的約束 3)使用truncate table刪除的數(shù)據(jù)不能回滾
TRUNCATE TABLE student;
3、數(shù)據(jù)庫的“查”
-- 3.1 查詢所有列
SELECT * FROM student;
-- 3.2 查詢指定列
SELECT id,NAME,gender FROM student;
-- 3.3 查詢時添加常量列
-- 需求: 在查詢student表時添加一個班級列,內(nèi)容為“java”
SELECT id,NAME,gender,age,'java' AS '學(xué)科'? FROM student;
-- 3.4 查詢時合并列
-- 需求: 查詢每個學(xué)生的servlet和jsp的總成績
SELECT id,NAME,(servlet+jsp) AS '總成績' FROM student;
-- 注意:合并列只能合并數(shù)值類型的字段
SELECT id,(NAME+servlet) FROM student;
-- 3.5 查詢時去除重復(fù)記錄(DISTINCT)
-- 需求: 查詢學(xué)生的性別? ? 男 女
SELECT DISTINCT gender FROM student;
-- 另一種語法
SELECT DISTINCT(gender) FROM student;
-- 需求: 查詢學(xué)生所在的地區(qū)
SELECT DISTINCT address FROM student;
-- 3.6 條件查詢(where)
-- 3.6.1 邏輯條件: and(與)? ? or(或)
-- 需求: 查詢id為2,且姓名為李四的學(xué)生
SELECT * FROM student WHERE id=2 AND NAME='李四'; -- 交集
-- 需求: 查詢id為2,或姓名為張三的學(xué)生
SELECT * FROM student WHERE id=2 OR NAME='張三'; -- 并集
-- 3.6.2 比較條件: >? <? >=? <=? =? <>(不等于)? ? between and (等價于>= 且 <=)
-- 需求: 查詢servlet成績大于70分的學(xué)生
SELECT * FROM student WHERE servlet>70;
-- 需求: 查詢jsp成績大于等于75,且小于等于90分的學(xué)生
SELECT * FROM student WHERE jsp>=75 AND jsp<=90;
-- 另一個語法
SELECT * FROM student WHERE jsp BETWEEN 75 AND 90; -- (包前包后)
SELECT * FROM student WHERE gender<>'男';
-- 3.6.3 判空條件(null 空字符串):? is null / is not null / =''? / <>''
-- 需求: 查詢地址為空的學(xué)生(包括null和空字符串)
-- null vs? 空字符串
-- null:表示沒有值
-- 空字符串:有值的!
-- 判斷null
SELECT * FROM student WHERE address IS NULL ;
-- 判斷空字符串
SELECT * FROM student WHERE address='';
SELECT * FROM student WHERE address IS NULL OR address=''; -- (包括null和空字符串)
-- 需求: 查詢有地址的學(xué)生(不包括null和空字符串)
SELECT * FROM student WHERE address IS NOT NULL AND address<>'';
-- 3.6.4 模糊條件: like
-- 通常使用以下替換標(biāo)記:
-- % : 表示任意個字符
-- _ : 表示一個字符
-- 需求: 查詢姓‘張’的學(xué)生
SELECT * FROM student WHERE NAME LIKE '李%';
-- 需求: 查詢姓‘李’,且姓名只有兩個字的學(xué)生
SELECT * FROM student WHERE NAME LIKE '李_';
-- 3.7 聚合查詢(使用聚合函數(shù)的查詢)
-- 常用的聚合函數(shù): sum()? avg()? max()? min()? count()
-- 需求:查詢學(xué)生的servlet的總成績 (sum() :求和函數(shù))
SELECT SUM(servlet) AS 'servlet的總成績' FROM student;
-- 需求: 查詢學(xué)生的servlet的平均分
SELECT AVG(servlet) AS 'servlet的平均分' FROM student;
-- 需求: 查詢當(dāng)前servlet最高分
SELECT MAX(servlet) AS '最高分' FROM student;
-- 需求: 查詢最低分
SELECT MIN(servlet) AS '最低分' FROM student;
-- 需求: 統(tǒng)計當(dāng)前有多少學(xué)生(count(字段))
SELECT COUNT(*) FROM student;
SELECT COUNT(id) FROM student;
-- 注意:count()函數(shù)統(tǒng)計的數(shù)量不包含null的數(shù)據(jù)
-- 使用count統(tǒng)計表的記錄數(shù),要使用不包含null值的字段
SELECT COUNT(age) FROM student;
-- 3.8 分頁查詢(limit 起始行,查詢幾行)
-- 起始行從0開始
-- 分頁:當(dāng)前頁? 每頁顯示多少條
-- 分頁查詢當(dāng)前頁的數(shù)據(jù)的sql: SELECT * FROM student LIMIT (當(dāng)前頁-1)*每頁顯示多少條,每頁顯示多少條;
-- 需求: 查詢第1,2條記錄(第1頁的數(shù)據(jù))
SELECT * FROM student LIMIT 0,2;
-- 查詢第3,4條記錄(第2頁的數(shù)據(jù))
SELECT * FROM student LIMIT 2,2;
-- 查詢第5,6條記錄(第3頁的數(shù)據(jù))
SELECT * FROM student LIMIT 4,2;
-- 查詢第7,8條記錄 (沒有記錄不顯示)
SELECT * FROM student LIMIT 6,2;
-- 3.9 查詢排序(order by )
-- 語法 :order by 字段 asc/desc
-- asc: 順序,正序。數(shù)值:遞增,字母:自然順序(a-z)
-- desc: 倒序,反序。數(shù)值:遞減,字母:自然反序(z-a)
-- 默認(rèn)情況下,按照插入記錄順序排序
SELECT * FROM student;
-- 需求: 按照id順序排序
SELECT * FROM student ORDER BY id ASC;
SELECT * FROM student ORDER BY id; -- 默認(rèn)正序
SELECT * FROM student ORDER BY id DESC;-- 反序
-- 注意:多個排序條件
-- 需求: 按照servlet正序,按照jsp的倒序
SELECT * FROM student ORDER BY servlet ASC,jsp DESC;
-- 3.10 分組查詢(group by)
-- 需求: 查詢男女的人數(shù)
-- 預(yù)期結(jié)果:
--? 男? 3
-- 女? 2
? -- 1) 把學(xué)生按照性別分組(GROUP BY gender)
? -- 2) 統(tǒng)計每組的人數(shù)(COUNT(*))
SELECT gender,COUNT(*) FROM student GROUP BY gender;
-- 3.11 分組查詢后篩選
-- 需求: 查詢總?cè)藬?shù)大于2的性別
-- 1) 查詢男女的人數(shù)
-- 2)篩選出人數(shù)大于2的記錄(having)
--- 注意: 分組之前條件使用where關(guān)鍵字,分組之前條件使用having關(guān)鍵字
SELECT gender,COUNT(*) FROM student WHERE GROUP BY gender HAVING COUNT(*)>2;
二、執(zhí)行SQL文件,建表插數(shù)據(jù)一步到位!
Linux中執(zhí)行sql 文件:當(dāng)你在部署項目時,往往是直接執(zhí)行SQL腳本,不可能一步一步的去手動建庫,建表。
所以先說下運行SQL文件的步驟:
1、創(chuàng)建需要的數(shù)據(jù)庫:create?database"數(shù)據(jù)庫的名稱";
2、查看下自己建的庫:?show?databases;

3、指定你要執(zhí)行sql文件的庫:?use “數(shù)據(jù)庫名”;? ? ---->例:use?fairyonline;
4、命令執(zhí)行SQL?文件:?source /root/sql/fairyonline.sql;
注:起初我把需要執(zhí)行的sql?文件放在了? root/sql? ?文件夾里面了。? 后面的?fairyonline.sql? ?是需要執(zhí)行的SQL文件。

5、查看下庫里面的表和數(shù)據(jù),對不對:show tables;? ? ? ? 最后? 退出mysql :?quit;? 或者?exit;
