MYSQL基礎知識總結
一、資料庫特點:結構化,無有害,無重複;
二、資料庫優點:按一定的資料模型組織,描述和儲存;可為各種使用者共享,冗餘度小,節省儲存空間易擴充套件,編寫有關資料應用程式。
三、常用Dos操作指令:
安裝資料庫:mysqld -install,開啟/關閉資料庫:start mysql/net stop,監聽埠資訊:netstat -a,登陸資料庫:mysql -uroot -p,顯示預設資料庫:use dbname,顯示所有資料庫:show databases,顯示預設資料庫中的所有表:show tables,放棄正在輸入的指令:\c,顯示命令清單:\h,退出mysql程式:\q,檢視mysql伺服器狀態資訊:\s,mysql版本資訊:SELECT version(),開啟表結構:desc table。
四、資料庫語法組成:
1.DDM(Data Definition Language資料庫定義語言):create table,drop table,alter table等
2.DCL(Data Control Language資料控制語言):grant,revoke等;
3.DML(Data Manipulation Language資料操作語言)查詢SELECT、插入insert、update修改、刪除delete;
五、MYSQL三種常用的資料型別:文字:char,varchar,text;數字,日期和時間型別;
六、常見的完整性約束:
primary key 主鍵;unique 唯一性約束;not null非空約束;auto_increment整數列自增;預設值:default;
七、常用操作
- 顯示錶結構:DESC 表名;
- 刪除表操作:drop table 表名
- 除資料庫操作:drop database 資料庫名
- 更改表結構操作:alter table 表名 action;(action可以是以下操作)
- add 列名 建表語句[first/after]--在表中新增列,制定其位置;
- add primary key (列名)-- 新增一個主鍵,如果主鍵已存在,會報錯;
- add foreign key (列名) reference 表名 (列名);-- 為表新增一個外來鍵;
- alter列名 set default 預設值;-- 更改指定列的預設值
- drop 列名 -- 刪除一列
- drop primary key -- 刪除主鍵
- engine 型別名 -- 改變表的型別
- rename as 新表名 -- 改變表名
- change 舊列名 新列名 [first /after]-- 更改列的型別和名稱
- modify 和change相同;
八、運算子
- 比較運算子:<>,BETWEEN ,IN,<=>,BINARY(區分大小寫)
- 位運算子:<< :a<<b 將a向左移動b個二進位制位,a*2的b次方;與>>相反
九、集函式
1.記數函式: count(列名)計算元素的個數
2.求和函式: sum(列名) 對某一列的值求和,但屬性必須是整型
3.計算平均值:avg(列名)對某一列的值計算平均值
4.求最大值: max(列名)找出某一列的最大值
5.求最小值: min(列名)找出某一列的最小值
十、增刪改查基本操作:
1.建立資料庫school並設定型別utf-8;
create database school character set utf8;
2.刪除資料庫school
drop database school
3.建立學生表
create table student(
id int not null auto_increment primary key,//新增id列,並設定int型自增,主鍵
sname varchar(20) not nul
);
4.新增列 sex
alter table student add column sex char(2) not null after name;
5.刪除列 sex
alter table student drop column sex;
6.修改列名,型別
alter table student change sex ssex bit not null;
7.資料庫插入資料
insert into student (name,sex,age) values ('張三','男',18);
8.更新表資料
update student set sex='女' where id = 3;
9.刪除表中資料
delete FROM student where id = 2;
10.查詢所有資訊
SELECT * FROM student;
11.外來鍵關聯
alter table score add constraint FK_score foreign key(id)reference student (sid)
12.複製表
create table sscore SELECT * FROM score;
13.複製表結構
create table sscore SELECT * FROM score where 0=1;
14.更換表名
alter table 表名 rename 新表名;
15.設定預設值(之前欄位內容不會改變)
alter table student alter sage set default'18';
16.建立索引:
- create index IX_customer on customer(cusname)(給customer的cusname建立一個索引)
- alter table customer add index IX_customer(cusname)(給建立好的表中新增一個索引)
十一、查詢記錄操作
- FROM子句:指定查詢資料的表
- where子句:查詢資料的過濾條件
- group by子句:對where子句的查詢進行分組
- having子句:對分組後進行條件限制
- order by子句:對查詢進行排序操作 DESC,ASC;
- limit對查詢目錄進行限制數目.
十二、經典查詢:
1.查詢學生的詳細記錄:SELECT * FROM student;
2.查詢資訊系、美術系和計算機系學生的姓名和性別
- SELECT sname,ssex FROM student where sdept in (‘資訊系','美術','計算機系');
- SELECT sname,ssex FROM student where sdept='資訊系' or sdept='美術' or sdept='計 算機系'
3.查詢選修了課程的學生人數 :SELECT count(*) FROM score;
4.查詢年齡在20-23(包括20,23)的學生姓名
SELECT sname FROM student where sage between 20 and 23;
5.查詢年齡最大的三個學生的姓名和年齡,或第四五個學生
SELECT sname,sage FROM student order by sage desc limit3(limit 3,2);
6.查詢學生平均成績在70分以上的同學的姓名和平均成績
SELECT s.sname,avg(s2.score)FROM student s,score s2 where s.id = s2.sid groupby s2.score having avg(s2.score)>70;
7.查詢所有同學的學號,姓名,選課書,總成績;
SELECT t.id,t.sname,COUNT(s.cid),SUM(s.score)FROM student t, scores s WHEREt.id = s.sid GROUP BY t.id;
8.查詢姓“李”的老師的個數
SELECT COUNT(*) FROM teacher WHERE tname LIKE '李%';
9.查詢所有課程成績小於60分,同學的學號、姓名
SELECT t.id,t.sname FROM student t,scores s WHERE t.id=s.sid AND s.score<60;
10.查詢所有,課程成績小於60分的同學的學號、姓名;
SELECT t.id,t.sname FROM student t,scores s WHERE t.id =s.sid GROUP BYs.score<60;
11.查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時,按課程號降序
排列
SELECT c.cname,AVG(s.score)FROM course c,scores s WHERE c.id=s.`cid`GROUP BYs.cid ORDER BY AVG(s.`score`),s.`cid` DESC;
12.查詢任何一門課程成績在70分以上的姓名、課程名稱和分數;(只要有一個就可以)
SELECT c.cname,s.score FROM course c,scores s WHERE c.id = s.`cid` ANDs.`score`<60;