一、兩張表 city表和province表。分別為城市與省份的關(guān)系表。
表名:cityid City Provinceid1 廣州 12 深圳 13 惠州 14 長(zhǎng)沙 25 武漢 3………. 廣州表名稱:province:id Province1 廣東2 湖南3 湖北……….
1、寫一條sql語(yǔ)句關(guān)系兩個(gè)表,實(shí)現(xiàn):顯示城市的基本信息。顯示字段:城市id ,城市名, 所屬省份 。如:Id(城市id) Cityname(城市名) Privence(所屬省份)
select A.id,A.Cityname,B.Province from city as A,province as B where A.provinceid=B.id
2、如果要統(tǒng)計(jì)每個(gè)省份有多少個(gè)城市,請(qǐng)用group by 查詢出來。顯示字段:省份id ,省份名,包含多少個(gè)城市。
select B.id,B.Province,count(*) as num from city A,province B where A.provinceid=B.id group by B.id
二、主鍵 和外鍵表示什么?一般用于做什么?
主鍵:能夠唯一表示數(shù)據(jù)表中的每個(gè)記錄的字段或者字段的組合就稱為主鍵。一個(gè)主鍵是唯一識(shí)別一個(gè)表的每一行記錄,但這只是其作用的一療分,主鍵的主要作用是將記錄和存放在其他表中的數(shù)據(jù)進(jìn)行關(guān)聯(lián),在這一點(diǎn)上,主鍵是不同表中各記錄間的簡(jiǎn)單指針,主鍵約整就是確定表中的每一條記錄,主鍵不能是空值,唯一約束是用于指定一個(gè)或多個(gè)列的組合值具有唯一性,以防止在列中輸入重復(fù)的值,所以,主鍵的值對(duì)用戶而言是沒有什么意義,并且和它賦予的值也沒有什么特別聯(lián)系。
外鍵:若有兩個(gè)表A,B,C是A的主鍵,而B中也有C字段,則C就是表B的外鍵,外鍵約束主要用來維護(hù)兩個(gè)表之間數(shù)據(jù)的一致性。A為基本表,B為信息表。在數(shù)據(jù)庫(kù)中,常常不只是一個(gè)表,這些表之間也不是相互獨(dú)立的,不同的表之間需要建立一種關(guān)系,才能將它們的數(shù)據(jù)相互溝通,而在這個(gè)溝通過程中,就需要表中有一個(gè)字段作為標(biāo)志,不同的記錄對(duì)應(yīng)的字段取值不能相同,也不能是空白的,通過這個(gè)字段中不同的值可以區(qū)別各條記錄,就像我們區(qū)別不同的人,每個(gè)人都有名字,但它卻不能作為主鍵,因?yàn)槿嗣苋菀壮霈F(xiàn)重復(fù),而身份證號(hào)是每個(gè)人都不同的,所以可以根據(jù)它來區(qū)別不同的人,數(shù)據(jù)庫(kù)的表中作為主鍵的段段就要像人的身份證號(hào)一樣,必須是每個(gè)記錄的值都不同,這才能根據(jù)主鍵的值來確定不同的記錄。
關(guān)系:外鍵一定是另外某個(gè)表的主鍵。
三、select now(),Date_ADD(now(),INTERVAL 14 day),Date_SUB(now(),INTERVAL 3 Day) from table; 會(huì)獲得什么內(nèi)容,請(qǐng)寫出來。
會(huì)獲得三條數(shù)據(jù):第一條:當(dāng)前時(shí)間;第二條:當(dāng)前時(shí)間加上14天;第三條:當(dāng)前時(shí)間減去3天。
四、您所知道的MYSQL 數(shù)據(jù)庫(kù)備份,還原方式有哪幾種?備份:一,搭建主從架構(gòu),master-slave,通過binlog文件同步復(fù)制主庫(kù)的數(shù)據(jù),也可以直接通過binlog文件恢復(fù)數(shù)據(jù)。二,通過系統(tǒng)計(jì)劃任務(wù)執(zhí)行mysqldump做周期性全備份。三,物理備份,直接拷貝數(shù)據(jù)文件、參數(shù)文件、日志文件。還原:一.通過mysql操作工具,如phpmyadmin,sqlyog等導(dǎo)入備份過的數(shù)據(jù)庫(kù)文件。二.將物理備份的文件拷貝到mysql的data目錄下
五、內(nèi)容管理系統(tǒng)中,表message有如下字段id 文章idtitle 文章標(biāo)題content 文章內(nèi)容category_id 文章分類idhits 點(diǎn)擊量創(chuàng)建上表,寫出MySQL語(yǔ)句
Create table if not exists message(
Id int not null AUTO_INCREMENT PRIMARY key comment ‘文章id’,
title varchar(60) not null comment ‘文章標(biāo)題’,
Content text not null comment ‘文章內(nèi)容’,
Category_id tinyint not null comment ‘文章分類id’,
Hits int not null default 0 comment ‘點(diǎn)擊量’
)engine=myisam default charset = utf8;
六、同樣上述內(nèi)容管理系統(tǒng):表comment記錄用戶回復(fù)內(nèi)容,字段如下comment_id 回復(fù)idid 文章id,關(guān)聯(lián)message表中的idcomment_content 回復(fù)內(nèi)容現(xiàn)通過查詢數(shù)據(jù)庫(kù)需要得到以下格式的文章標(biāo)題列表,并按照回復(fù)數(shù)量排序,回復(fù)最高的排在最前面文章id 文章標(biāo)題 點(diǎn)擊量 回復(fù)數(shù)量用一個(gè)SQL語(yǔ)句完成上述查詢,如果文章沒有回復(fù)則回復(fù)數(shù)量顯示0
select m.id,m.title,m.hits,count(c.comment_content) count from message m,comment c where m.id = c.coment_id group by m.id order by count desc;
七、內(nèi)容管理系統(tǒng),表category保存分類信息,字段如下category_id int(4) not null auto_increment;category_name varchar(40) not null;用戶輸入文章時(shí),通過選擇下拉菜單選定文章分類寫出如何實(shí)現(xiàn)這個(gè)下拉菜單
<?php
$dsn = ‘mysql:host=***;dbname=***’;
$pdo = new PDO($dsn,’用戶名’,’密碼’);
$sql = ‘select category_id,category_name from category’;
$list = $pdo->query($sql);
//使用類似smarty模板引擎
$this->assign(‘list’,$list);
?>
//模板實(shí)現(xiàn)端
-請(qǐng)選擇分類-
{foreach $list as $val}
{$val.category_name}
{/foreach}
八、PHP文件操作
1、內(nèi)容管理系統(tǒng):用戶提交內(nèi)容后,系統(tǒng)生成靜態(tài)HTML頁(yè)面;寫出實(shí)現(xiàn)的基本思路
2、簡(jiǎn)單描述用戶修改發(fā)布內(nèi)容的實(shí)現(xiàn)流程和基本思路
1)當(dāng)用戶提交后生成一個(gè)由url地址MD5后的文件的編譯頁(yè)面,用文件處理file函數(shù)生成一個(gè)模板合成頁(yè),判斷模板編譯頁(yè)是否有,模板頁(yè)無或者編譯頁(yè)的創(chuàng)建時(shí)間戳小于模板頁(yè)的修改時(shí)間都會(huì)從新生成編譯頁(yè)面,編譯后的頁(yè)面會(huì)調(diào)用對(duì)應(yīng)數(shù)據(jù)庫(kù)的值顯示在頁(yè)面中,通過對(duì)內(nèi)存數(shù)據(jù)的讀取釋放,顯示出我們看到的靜態(tài)數(shù)據(jù),然后用file文件將其保存起來生成靜態(tài)的頁(yè)面
2)當(dāng)用戶修改了發(fā)布內(nèi)容都會(huì)修改數(shù)據(jù)相關(guān)的內(nèi)容,并通過編譯頁(yè)面更新靜態(tài)數(shù)據(jù)并用文件的方式緩存起來,當(dāng)用戶查看時(shí)將不做任何數(shù)據(jù)庫(kù)查找,直接調(diào)用該緩存文件即可