在數(shù)據(jù)庫里面操作表:
①:首先要打開數(shù)據(jù)庫:
操作如下:?
use?db_name;
?
②:其次要寫表信息:
操作模版如下:
?
mysql>?create??table???tb_name
->?(
->?列信息
->?)[表選項];
?
?
操作實例如下:
mysql>create?table?score
?????->(
?????->stu?int,
?????->name?varchar(20),
?????->ke?varchar(10),
?????->fen?int
?????->);
記住:
①:內(nèi)容被圓括號包含,而不是花括號
②:每個內(nèi)容以逗號,結(jié)尾
③:最后的一個元素沒有,逗號
????④:表名不能以數(shù)字開頭;
?
?
修改表名:(數(shù)據(jù)庫名是不能改的)
rename?table?old_tb_name?to?new_tb_name;
?
?
查看表:(查看表的個數(shù))
show?tables;
?
?
?
描述表:(查看表的結(jié)構(gòu))
?
??desc?tb_name;???(desc?表示describe)
示例:?desc??newscore;?
?
?
刪除表:
drop?table?tb_name;
?
退出:
\c
用法:清空當(dāng)前陳述,發(fā)現(xiàn)自己打錯了的時候用。
?
?
數(shù)據(jù)庫的增刪改查:
增:
增以行為單位,可以增加某一列的信息,也可以增加一整行的信息。
模板:
insert?into?tb_name
(表頭1,表頭2,表頭3,表頭4,表頭5)??----如果此處什么都不寫,表示每個變量都要給值!!
values
(內(nèi)容1,內(nèi)容2,內(nèi)容3,內(nèi)容4,內(nèi)容5);
?
例如:
insert??into?massage
(id,name,title,content,date)
values
(1,'余亮','第二天學(xué)mysql','我一定要挺過來','2015/8/16');
?
插入列:
alter?table?tb_name?add?列名?varchar(10);
?
小技巧:
可以一次增加多行;
?
查:
select?*?from?tb_name?where?表達(dá)式;
可以加條件查看表;查看部分列部分行
注:?name,content表示查看的列,
?????id>2表示查看的行;
?
改:
模版:
update?tb_name
set
表頭=值,??(要改的行的?內(nèi)容)
表頭=值?(要改的行的?內(nèi)容)
where
表達(dá)式;?(通過原值定位行)
?
示例:
update?massage
set
id=2,
content=’今天沒遲到’
where
id=1;
?
?
注意:
where?前面的值后沒有,逗號。
?
刪:
delete?from?massage?where?表頭=’內(nèi)容’;
delete?from?massage?where?content=’今天沒遲到’;
?
?
?
列的默認(rèn)值:
設(shè)置格式:
not?null?default?值;
示例:
在插入一個列的時候,可以聲明獵德默認(rèn)值:
如:
?alter?table?feature?add?homenum?tinyint?unsigned?not?null?default?0;
解釋圖中圈紅地方的意思:
Null:
下面的YES表示該列的值可以為NULL,表示未設(shè)默認(rèn)值
下面的NO表示該列的值不可以為NULL,表示已設(shè)默認(rèn)值
Default:
下面的NULL表示默認(rèn)值為NULL,表示未設(shè)默認(rèn)值。
如果下面的值為非NULL,則表示已設(shè)置默認(rèn)值。
?
?
?
詳解列類型:
引子:建表就是聲明列的過程,聲明列直接影響數(shù)據(jù)庫占用硬盤的大小,所以列類型很重要。
?
①:數(shù)值型:
1:整型:
?分五類?:
??tinyint??????
??smallint
??mediumint
??int
??highint
?
?
以數(shù)學(xué)的角度討論以上五種整型;
1.占據(jù)空間
2.存儲范圍
整型默認(rèn)為有符號位
?
?
?
整型列的可選屬性:
1.tinyint(M)?
??M代表寬度,只有在zerofill下才有意義;
2.unsigned
?作用:聲明整型為無符號位,影響存儲范圍。
?用法:放在int?關(guān)鍵字后面;
?示例:int?unsigned;
3.zerofill
?零填充(如果某列為zerofill,默認(rèn)就是無符號);
?
2.1浮點型/小數(shù)型:
定義格式:
float(M,D),
double(M,D)
M:精度(總位數(shù),不含小數(shù)點)
D:標(biāo)度(小數(shù)位數(shù))
float?(4,2)的范圍是?-99.99~+99.99
提示:float?double對小數(shù)部分非常不準(zhǔn)確,所以記賬不能用浮點數(shù);
?
2.2定點數(shù):
decimal(M,D)
或者numbric也是一樣的。
它是以字符串的形式存放,很精確;
記賬一般使用decimal;
關(guān)于定點數(shù)和浮點數(shù)的區(qū)別,下面的兩個鏈接繼續(xù)說明:
http://m.blog.csdn.net/blog/moqiang02/40616467#
http://www.educity.cn/wenda/399662.html
3:字符型
?
?分三種:
?char(M)??
定長字符串,M代表寬度,即可容納的字符數(shù),始終占M個字符
細(xì)節(jié):???
????當(dāng)實際存的字符串N<M,那么尾部則以空格填充
????當(dāng)取出該字符串時,將空格去掉。
?
弊端:1.當(dāng)存放的數(shù)據(jù)尾部有空格時會被去掉
??????2.容易造成浪費(fèi);
好處:1,存放的字符沒有限制。
??????2.利用率可能是100%
??????3.速度快。
?Varchar(M)?
?變長字符串,M代表寬度,即可容納的字符數(shù),設(shè)N<M,寬度為N,占N個字符;
細(xì)節(jié):
???存放的是數(shù)據(jù)加長度,即i個字符+(1~2個字節(jié));
???這里的字節(jié)是指字符的個數(shù);
utf-8:??一個字符占1個字節(jié)。?一個漢字占3個字節(jié)。
?0<M<65535?,?在utf-8中?大約能存22000個左右漢字;
?
缺點:存放的字符只能是22000左右。
??????占用率小宇100%。
??????速度慢。
?
區(qū)別總結(jié):
1.存儲的數(shù)據(jù)大小有區(qū)別
2.空間利用率有區(qū)別
3.對空格的處理有區(qū)別
char與varchar的選擇:
1.空間利用效率,四字成語表,char(4),
???????????????個人簡介,微博140字,varchar(140).
?
2速度
?用戶:?用char(浪費(fèi)不了多少空間)
?test:
文本串:
?特點:可以存放較大的內(nèi)容,但是速度稍慢;
備注:不能給test類型的變量加上默認(rèn)值
提示:內(nèi)容不大時用char?,?varchar
?
?
4:日期型:
year:
表示年份
一個字節(jié),表示1901~2155;.
如果輸入兩位,“00~69”表示2000~2069
??????????????“70~99”表示1970~1999
date:
表示日期
典型格式:
1992-08-01
日期類型:‘10000-1-1?到?9999-12-31’
time:
表示時間:
hh:mm:ss
1.表示時間?
2.表示時間間隔
?范圍:?‘-838’59’’59’’’~838’59’’59’’’’
datetime:
表示日期和時間:
典型格式:
‘1984-03-21?11:35:33’
?
總結(jié):
在實際php開發(fā)中,可以用時間戳表示,意思是從1970-01-01?00:00:00到當(dāng)前的秒數(shù);
函數(shù)是?time()
將時間戳轉(zhuǎn)化為日期
date(‘Y-m-d’,time());
?
5.enum
enum是個類型
?
典型格式:
?
sex?enum{‘男’,‘女’};
?
缺點:不是元信息,里面有內(nèi)在關(guān)聯(lián):enum的值可以新建一個表,不符合關(guān)系型數(shù)據(jù)庫的設(shè)計理念。
**************************以上為第二天內(nèi)容***********************************