1. 程式人生 > 實用技巧 >NFS伺服器搭建與配置

NFS伺服器搭建與配置

啟動伺服器:
net start mysql
停止伺服器:
net stop mysql
連線伺服器
mysql -uroot -p123
斷開伺服器:
exit quit \q
資料庫:database
建立:create
建立 展示,表演:show
使用:use
刪除:drop
建立資料庫:
格式: create database 資料庫名;
檢視是否有這個資料庫沒有再建立

可選項,表示在建立資料庫前進行判斷,只有該資料庫目前尚未存在時才執行建立語句
If not exits
Create database if not exits 資料庫名;

資料庫的編碼(字符集)設定
格式:create database 資料庫名 character set =utf-8;

檢視所有的資料庫:
格式:show databases;
使用資料庫(選擇該資料庫為當前資料庫):
格式:use 資料庫名;
刪除資料庫:
格式:drop database 資料庫名;
建立表
Create table 表名(欄位1 欄位型別, 欄位2 欄位型別…)
查看錶結構
Desc 表名;
或者:show columns from 資料表名 [FROM 資料庫名];

資料插入(
(所有欄位資料輸入)
格式:
insert into 表名(欄位1,欄位2,欄位3)
values(值1,值2,值3);
增加欄位(一個或多個)
(增加一個欄位)格式:alter table 表名 add 新欄位名 新欄位型別;

(增加多個欄位)格式:alter table 表名 add 新欄位名1 新欄位型別,add 新欄位名2 新字 段型別;

刪除欄位(一個或多個)
(刪除一個欄位)格式:alter table 表名 drop 欄位名;

(刪除多個欄位)格式:alter table 表名 drop 欄位名1,drop 欄位名2,…,drop 欄位名n ;
修改欄位型別
(修改一個欄位)格式:alter table 表名 modify 欄位名 欄位型別;
(修改多個欄位)格式:alter table 表名 modify 欄位名1 欄位型別,modify 字

修改欄位名
(修改一個欄位)格式:alter table 表名 change 原欄位名 新欄位名 欄位型別;

(修改多個欄位)格式:alter table 表名 change 原欄位名1 新欄位名1 欄位類
查詢所有欄位
1、查詢所有欄位是指查詢表中所有欄位的資料。
2、在Mysql中使用"*"代表所有的欄位。
3、語法格式:select * from 表名;

修改表記錄
格式:
update 表名 set 欄位=值 where 條件; ------修改一個欄位值
update 表名 set 欄位1=值1,欄位2=值2… where 條件; ------修改多個欄位值

刪除記錄(2種方法)

方法一:     格式:delete from 表名 where 條件;
方法二:     格式:truncate  表名where  條件;

SELECT * FROM用來查看錶格的具體內容

修改表名(rename–重新命名):
有2種方法:
方法一:
格式:alter table 原表名 rename to 新表名;
或者:alter table 原表名 rename as 新表名;
方法二:
格式:rename table 原表名 to 新表名;
查詢指定欄位
1、查詢指定欄位是指查詢指定的部分欄位。
2、語法格式:
select 欄位名 from 表名;
3、如果查詢多個欄位,使用“,”對欄位進行分隔
語法格式:
select 欄位名1,欄位名2,欄位名3 from 表名;
去重查詢(重複記錄只查詢一次)
1、使用關鍵字distinct可以去除查詢結果中的重複記錄
2、語法格式:
select distinct 欄位名 from 表名;
資料表的刪除命令(drop):
格式:drop table 表名;
列運算(掌握運算子)
1、列運算:列和列之間進行運算。
2、瞭解運算子:
1)算術運算子:+ - * /(div) %(mod)
2)比較運算子:> >= < <= = != <>
3)邏輯運算子:and(&&) or(||) not(!)
3、列運算實踐:
1)數值型別的列可以做算術運算(+ - * / %)
例如:select 列1.5 from 表名;
select 列1+列2 from 表名;
select 列1
列2 from 表名;
2)字串型別的列可以做連線運算 concat(列1,列2)或者concat(‘字元常量’,列))
例如:
select concat(列1,列2) from 表名;
select concat(’$’,列) from 表名;
3)數值型
轉換NULL值 (把值是NULL的列轉換成數值0計算)
ifnull(age,0)-----把age列中存在的NULL值當成0來計算。
字元型
ifnull(sname,‘無姓名’)-----把sname列中為NULL的轉換為無姓名
4)給列起別名
例如:select 列1+列2 as 名字 from 表名;
注意:as 可以省略
算數運算子 (c語言會用到的)

  • 加號求和的
    —減號求差
    *乘號求積
    /除號求差
    %模求餘數
    列如10%3=1
    10除3的差是3 餘數為1所以答案唯1,
    奇數%2=1
    偶數%2=0
    例如查詢id能被2整除的是?
    Select * from 表名 where id%2=0;
    查詢id不能被二整除的是?
    Select * from 表名 where id%!=0;
    查詢id能被2整除也能被3整除的資訊?
    Select * from 表名 where id%2=0 and id%3=0;
    掌握集合查詢(in)
    1、關鍵字in可以判斷某個欄位的值是否在指定的集合中。
    1)如果欄位的值在集合中,則滿足查詢條件,該記錄可以被查詢出來。
    2)如果欄位的值不在集合中,則不滿足條件,該記錄不能被查詢出來。
    2、案例實踐
    1)查詢學號是1001,1002,1003的記錄
    select * from 表名 where id in(1001,1002,1003);
    2)查詢學號不是1001,1002,1003的記錄
    select * from 表名 where id not in(1001,1002,1003);

掌握範圍查詢(between…and)
1、關鍵字between…and可以判斷某個欄位的值是否在指定的範圍中。
1)如果欄位的值在指定的範圍中,則滿足查詢條件,該記錄可以被查詢出來。
2)如果欄位的值不在指定的範圍中,則不滿足條件,該記錄不能被查詢出來。
2、案例實踐
查詢年齡在20到40之間的學生記錄
select * from 表名 where age between 20 and 40;
或者:select * from 表名 where age>=20 and age<=40;

掌握空值及多重條件查詢(is null,and,or)
1、空值查詢(is null)
查詢年齡為null的記錄
select * from 表名 where age is null;
2、查詢姓名不為null的學生記錄
select * from 表名 where name is not null;
或者:select * from 表名 where not name is null;
3、帶關鍵字and的多條件查詢
1、查詢年齡大於25歲的男講師
select * from 表名 where age>25 and sex=‘男’;
2、查詢出性別為男、年齡在30歲以下的精英學院的教師
select * from 表名 where sex='男’and age<30 and xueyuan=‘精英學院’;
4、帶關鍵字or的多條件查詢
查詢出部門為大資料或者收入在5千以上教師姓名、性別、年齡
select name,sex,age from 表名 where bumen=‘大資料’ or money>5000

限制查詢結果的數量----limit關鍵字
1、查詢資料時,可能會查詢出很多的記錄,而使用者需要的記錄可能只是很少的一部分,這樣就需要來限制查詢結果的數量。
關鍵字limit可以對查詢結果的記錄條數進行限定,控制它輸出的行數。
2、顯示前3條記錄 select * from 表名 limit 3;
3、使用關鍵字limit還可以查詢結果的中間部分取值。
兩個引數,引數1是開始讀取的第一條記錄的編號(在查詢結果中,第一個結果的記錄編號是0,而不是1);
引數2是要查詢記錄的個數。
例如:查詢出第2條到第4條記錄資訊 select * from 表名 limit 1,3;

約束的作用
作用:完整性約束是為了表的資料的正確性,如果資料不正確,則資料不能新增到表中。
約束的分類
1、主鍵約束-----唯一標識
a:當某一列添加了主鍵約束後,那麼這一列的資料就不能重複出現,也不能為空。
b:每一個表中只能定義一個主鍵。
c:指定主鍵約束的關鍵字primary key(普ruai mo kei)
d:主鍵約束的方式有3種:
1)建立表的列的同時指定主鍵 格式: 列名 列型別 primary key;
2)建立表的列之後獨立指定主鍵 格式: primary key(列名);
3)修改表指定主鍵 格式:alter table 表名 add primary key(列名);
e:刪除主鍵約束(注意:只是刪除主鍵約束,不會刪除主鍵列)
格式:alter table 表名 drop primary key;
2、主鍵自增長約束
a:主鍵必須是整型才可以自增長。
b:當主鍵設定為自動增長後,在沒有給出主鍵值時,主鍵從1開始,每次自增1。
當主鍵設定為自動增長後,在給定主鍵值後,會在給定值的基礎上每次自增1。
c:指定主鍵自增長約束的關鍵字是:auto_increment (ao tu in ke rui men te)
d:主鍵自增長約束的方式有2種:
1)建立表的列的同時指定主鍵自增長 格式:列名 型別 primary key auto_increment;
2)修改表時設定主鍵自增長 格式:alter table 表名 change 舊列名 新列名 型別 primary key auto_increment;
3)刪除主鍵自增長約束:格式:alter table 表名 change 舊列名 新列名 型別;(只是加自增長約束,新列名和舊列名一樣就行)
e:主鍵自增長設定初始值
alter table 表名 auto_increment=初始值;

3、非空約束
   a:指定非空約束的列不能沒有值,否則報錯。
   b:非空約束的關鍵字 not null
   c:非空約束的格式: 列名 型別  not null;    
   d:欄位預設是可以為空   例如: age int ;  等價於 age int null;

4、唯一約束
   a:欄位指定唯一約束後,那麼欄位的值必須是唯一的。類似於主鍵約束。
   b:唯一約束的關鍵字 unique
   c:唯一約束多的格式:列名 型別 unique;(you ni Q)
   d:取消唯一約束: alter table 表名 drop index 列名;  
     alter table student drop index sname;

5、外來鍵約束	                         
   a:主外來鍵是構成表與表關聯的唯一途徑。
   b:外來鍵是另一張表的主鍵。
   c:外來鍵約束的格式:
     cons traint 外來鍵名 fore ign key(外來鍵列) re fe re nces 主鍵表(主鍵列);
   肯斯追她         fao rui kei        
   d:刪除外來鍵約束的格式:
     alter table 外來鍵表 drop foreing key  外來鍵名;
   e:檢視外來鍵:show create table 表名;
6、預設值約束(補充) 
   a、使用關鍵字default(di fao te)設定列的預設值 
   b、語法格式: 
      列名 型別 default 預設值;
      例如:性別列預設值為男   sex varchar(50) default '男';
            年齡列預設值為20   age int default 20;

掌握order by子句對查詢結果排序ASC升序,DESC降序
1、使用關鍵字order by 對查詢的結果進行排序。
2、在預設情況下,order by 按升序輸出結果。升序(ASC) 降序(DESC)
3、排序的語法格式:
select * from 表名 order by 欄位名 asc/desc;
4、當排序時欄位值相同,可以按照另一個欄位排序
語法格式:
select * from 表名 order by 欄位1 asc/desc,欄位2 asc/desc;

掌握模糊查詢 (like) like----喜歡,像
1、使用關鍵字like實現模糊查詢,有兩種萬用字元:% 和 下劃線(
2、“%”----可以匹配一個或多個字元,可以代表任意長度的字串。
1)查詢姓王的學生資訊 :select * from 表名 where name like ‘王%’;
2)查詢名字中包含“明”的學生資訊: select * from 表名 where name like ‘%明%’;
3、“
”----可以匹配一個字元。
1)查詢以m開頭,以n結尾的3個字元姓名的學生資訊 select * from 表名 where name like ‘m_n’;
2)查詢由5個字母構成的姓名的學生資訊 select * from 表名 where name like ‘_____’;
這是一個縱向運算的函式
聚合函式是用來做縱向運算的函式。

count()函式
1、功能:統計指定列不為null的記錄行數
2、查詢student表中記錄數 select count() from student;
查詢student表中sex列不為空的記錄行數 select count(sex) from student;
查詢student表中工資大於10000的人數 select count(
) from student where money>10000;
3、多列欄位同時統計就行數
格式:select count(欄位1),count(欄位2) from 表名;
sum()函式
1、功能:計算某列的和
2、計算score列之和 select sum(score) from 表名;
3、計算多列的和格式: select sum(列1),sum(列2) from 表名;

avg()函式
1、功能:計算某列的平均值
2、計算score列的平均值 select avg(score) from 表名;
3、平均值保留兩位小數
round(平均值,2) -----會進行四捨五入計算
select round(avg(score),保留的小數)from 表名
max()函式
1、功能:找出某列中的最大值
2、語法格式: select max(列名)from 表名;
3、找出多列中的最大值: select max(列名1),max(列名2) from 表名;
min()函式
1、功能:找出某列中的最小值
2、語法格式: select min(列名)from 表名;
3、找出多列中的最小值: select min(列名1),min(列名2) from 表名;

靈活運用分組查詢group by子句
例如:每個公司都有多個部門,如果統計每個部門的在職員工人數,那麼就需要分組統計人數…
分組查詢需要使用關鍵字group by
語法格式:
select … from 表名 group by 列名;
例如:
查詢每個部門的部門編號和每個部門的人數:
select id,count(*) from 表名 group by id;

having用法(補充)

having 用法與WHERE用法類似,但有三點不同
1、HAVING只用於GROUP BY(分組統計語句),
2、WHERE 是用於在初始表中篩選查詢,HAVING用於在WHERE和GROUP BY 結果中查詢。
3、HAVING可以使用聚合函式,面WHERE 不能。

這個是用在聚合函式的用法。當我們在用聚合函式的時候,一般都要用到GROUP BY 先進行分組,然後再進行聚合函式的運算。
HAVING子句----練習
查詢工資總和大於9000的部門編號以及工資和:
SELECT deptno, SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal) > 9000;

掌握limit子句
限制查詢結果的數量----limit關鍵字
1、查詢資料時,可能會查詢出很多的記錄,而使用者需要的記錄可能只是很少的一部分,這樣就需要來限制查詢結果的數量。
關鍵字limit可以對查詢結果的記錄條數進行限定,控制它輸出的行數。
2、顯示前3條記錄 select * from 表名 limit 3;
3、使用關鍵字limit還可以查詢結果的中間部分取值。
兩個引數,引數1是開始讀取的第一條記錄的編號(在查詢結果中,第一個結果的記錄編號是0,而不是1);
引數2是要查詢記錄的個數。
例如:查詢出第2條到第4條記錄資訊 select * from 表名 limit 1,3;
合併結果集
1、合併結果集就是把不同表中的記錄連到一起,這樣查詢結果會產生笛卡爾積。
笛卡爾積:多表連線時,表中記錄個數的乘積。
笛卡爾積中會存在我們不想要的結果,那麼怎麼去除這些記錄呢?用條件過濾不想要的記錄。

2、合併結果集的方法:內連線查詢和外連線查詢。

內連線查詢 inner join內連線只顯示符合條件的記錄
1、內連線是最普通的連線型別,它要求構成連線的表中有等同的欄位。
2、內連線要求構成連線的每一部分的每個表的匹配,不匹配的行將被排1除。
3、語法格式:
假設兩個表中都有等同的欄位user
select 欄位名 from 表1,表2 where 表1.user=表2.user; ------隱式內連線
或者:select 欄位名 from 表1 inner join 表2 on 表1.user=表2.user; ------顯式內連線(效率高)

外連線查詢 outer join所有記錄都顯示沒有的記錄為null
1、與內連線不同,外連線是指使用outer join關鍵字將兩個表連線起來。
外連線生成的結果集不僅包含符合連線條件的行資料,而且還包括左表(左外連線時的表)、右表(右外連線時的表)或兩邊連線表(全外連線時的表)中所有的資料行。
2、語法格式:
select 欄位名 from 表名1 left|right|outer join 表名2 on 表名1.欄位名1=表名2.欄位名2;
3、外連線分為左外連線(left join)、右外連線(right join)和全外連線3種類型。
4、左外連線:
左連線是先查詢出左表(即以左表為主),然後查詢右表,右表中滿足條件的顯示出來,不滿足條件的顯示NULL。
列如:select * from 表名1 left outer join 表名2 on 是誰和誰連線的;
5、右外連線:
右連線就是先把右表中所有記錄都查詢出來,然後左表滿足條件的顯示,不滿足顯示NULL。
列如:select * from 表名2 right outer join 表名1 on 是誰和誰連線的;
在前面顯示的表為主表在後面顯示的為附表
個人補充:一般來講那個表的資料多一般是父表,視情況而定
如果父表是ts 子表為tt 那麼用左外連結ts父表在左邊,用右外連結ts父表在連線的右邊
合併查詢結果 (補充)
1、合併查詢結果是將多個select語句的查詢結果合併到一起。

   合併查詢結果使用關鍵字union和union all。
   1)關鍵字union是將所有的查詢結果合併到一起,然後去除重複記錄;
   2)關鍵字union all則只是簡單地將結果合併到一起,不會去除重複記錄。

2、語法格式:
   select 欄位 from 表1    union/union all    select 欄位 from 表2;

1、子查詢就是巢狀查詢,即select中包含select,如果一條語句中存在兩個,或兩個以上select,那麼就是子查詢語句了。
2、子查詢出現的位置:
1)where後作為條件存在
2)from後作為表存在(多行多列)

帶關鍵字in的子查詢 查詢多列
1、只有子查詢返回的結果列包含一個值時,比較運算子才適用。
2、假如一個子查詢返回的結果集是值的列表,這時比較運算子就必須用關鍵字in代替。
3、in 運算子可以檢測結果集中是否存在某個特定的值,如果檢測成功就執行外部的查詢。
4、練習:查詢性別和工資與李鵬飛完全相同的員工資訊
select * from 表名 where (sex,salary)in (select sex,salary fron 表名 where sname=‘李鵬飛’);
帶比較運算子的子查詢 > >= < <= = != <> 查詢一列
練習1:查詢工資高於李鵬飛的員工資訊
select * from 表名 where salary>(select salary from 表名 where sname=‘李鵬飛’);
練習2:查詢分數大於班級平均分的學生的資訊
select * from student where score>(select avg(score) from student);

帶exists的子查詢
1、含有exists的子查詢特點:
含有exists的子查詢實際上不產生任何資料
在有返回行的情況下,子查詢將返回true,反之則返回false
由於僅僅判斷是否存在返回行,所以子查詢的選擇列表通常指定為(*)
2、練習:
1)如果student中存在name為張三,則查詢表中的所有學生的姓名、性別和年齡
select sname,sex,age from student where exists (select * from student where sname=‘張三’);
2)如果student中不存在name為張三,則查詢表中的所有學生的姓名、性別和年齡
select sname,sex,age from student where not exists (select * from student where sname=‘張三’);

帶any的子查詢-----等價於找最小值
1、關鍵字any表示滿足其中任意一個條件。
2、使用關鍵字any時,只要滿足內層查詢語句返回的結果中的任意一個,就可以通過該條件來執行外層查詢語句。
3、練習:查詢工資大於大資料任意一人薪資的員工資訊
select * from 表名 where salary > any(select salary from 表名 where sname=‘大資料’);
等價於:select * from 表名 where salary >(select min(salary) from 表名 where sname=‘大資料’);

帶all的子查詢------等價於找最大值
1、關鍵字all表示滿足所有條件。
2、使用關鍵字all時,只有滿足內層查詢語句返回的所有結果,才可以執行外層查詢語句。
3、練習:查詢工資高於大資料所有人的員工資訊
select * from 表名 where salary > all(select salary from 表名 where sname=‘大資料’);
等價於:select * from 表名 where salary >(select max(salary) from 表名 where sname=‘大資料’);

合併查詢結果
1、合併查詢結果是將多個select語句的查詢結果合併到一起。

   合併查詢結果使用關鍵字union和union all。
   1)關鍵字union是將所有的查詢結果合併到一起,然後去除重複記錄;(比較常用)
   2)關鍵字union all則只是簡單地將結果合併到一起,不會去除重複記錄。

2、語法格式:
       select * from 表1    union/union all    select * from 表2;
    或 select 欄位 from 表1    union/union all    select 欄位 from 表2;