日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

d3 tip mysql_mysql

發布時間:2023/12/10 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 d3 tip mysql_mysql 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字符:

char(10)->定長、10個字符寬度。如果右側不夠,則空格補齊,取出來的時候刪除空格。

varchar(10)->變長、最多10個字符

如:存姓名的時候,沒必要為了那幾個長度去使用varchar,使用定長去存儲會提高效率!

日期時間:

Year->1字節->95||1995->【1901-2155】

Date->日期->1998-12-31->【1000-01-01->9999-12-31】

Time->時間->13:56:23->->【-838:59:59->838:59:59】

datetime->時間戳->1970-01-01 00:00:00到當前的秒數

Tip:Date? Date? datetime在insert的時候需要加上引號 、實際開發中,一般不是用這些,直接使用787657676類似于這個樣子的整形來存儲(其實就是以1970年0點為準,然后換算成秒數存儲)。搞iOS開發的肯定遇到過

not null:

1、NULL查詢不便、索引效率不高、所以實用中避免列的值為NULL

2、聲明列的值為NOT NULL,并且default一個默認值

主鍵與自增:

主鍵primary key此列不重復,就能夠區分每一行!

一個表中只能有一個auto_increment,而且這一列必須加上primary key索引

修改列:

alter table tableName add 列名 類型 屬性... ->默認在table的最后

alter table tableName add 列名 類型 屬性 after 制定列名->將增加到制定的列名后面

alter table tableName drop column 列名

alter table tableName change 列名 新名字 類型 屬性...

alter table tableName modify 列名 新屬性...

change可以修改列名,但是modify不能修改列明,只能修改列的屬性

視圖(View):

create view vgoods as select goods_name , goods_id from goods;

view又被稱為虛擬表,view是sql語句的一個查詢結果。

好處:

1、權限控制時可以用;如:某幾個列允許用戶查詢,其他列不可以。

create view tmpview as select goods_name from goods;

select * from tmpview;

2、簡化復雜的查詢;

3、修改物理表,虛擬表一定會被修改;如果物理表完全 一 一對應著虛擬表,則修改虛擬表會映射到物理表。但是,比如虛擬表是求平均之類的,不是一一對應的,則不能修改虛擬表,因為沒法確認到物理表的具體的某一個位置。

查詢view有兩種可能:

1、將創建view的語句和查詢view的語句合并,然后直接查物理表。這種方式叫做merge

2、如果view的形成就比較復雜了,那首先查詢物理表,在內存中形成一個view,然后再查詢這個view。

使用merge方式:create algorithm-merge view view1 as select ... from goods;

使用temptable:create algorithm-temptable view view2 as select ... from goods;

自己搞不定就讓數據庫自動決定!

表\視圖管理語句:

查看所有表:show tables;

查看結構:desc table/view-name;

查看建表/視圖過程:show create ?table/view ?table/view-name;

刪除表/視圖:drop table table/view-name;

查看表的詳細信息:show table status;加上\G會豎著顯示

改表名:rename table old-name to new-name;

清空表數據:truncate;

delete和truncate的區別:

delete ?from table-name where id = 2;(id是auto_increment的),下次再插入一個數據的時候,id會直接從3開始,而不會從2開始,即使id=2的已經被刪掉。

truncate table-name;相當于執行了兩步,首先drop掉這個table。然后又重新建立一次!

所以...自己體會

存儲引擎:

Myisam:單純的存取而已,沒有什么檢查之類的!

InnoDB:存取都有檢查,有自己的日志!

以上兩者參考燕十八的比喻!

eg:create....( ... ) engine-InnoDB default charset-utf8;

字符集亂碼問題:

文本本來的字符集與展示的字符集不一致就導致了亂碼!

我要存的類型是gbk/utf8:set character_set_client = gbk/utf8;

我要取數據,請返回給我gbk/utf8類型的數據:set character_set_result = gbk/utf8;

連接器不要設置比較小的字符集,不然會損失掉數據,而且是不可逆的!

如果client、result、connect都設置為同一樣字符集,比如utf8,那就可以直接簡寫為set names utf8;

亂碼的話檢查四個地方:php文件類型、php mate類型(meta charset='utf-8')、創建的table的類型、有沒有執行set names utf8;

校對集就是一種排序規則。

索引:

作用:

1、索引就相當于數據的目錄,能快速定位數據的位置。

2、索引是有代價的,它提高了查詢的速度,但是損耗了增刪改的效率。

3、一般在查詢比較頻繁的列上加索引,而且重復率低的的列上效果更好。比如:性別,只有男、女(shit,其他的不考慮),所有就沒必要加上索引。

類型:

普通索引key、唯一索引unique key、主鍵索引primary key、全文索引(在中文環境下無效,一般用第三方的解決方案)

索引在所有的列設置完了之后設置!

設置索引

設置索引長度

多列索引

冗余索引:

就是在某個列上存在多個索引。

索引操作:

show index from table-name \G;

alter table table-name drop index index-name;/drop index index-name on table-name; ?(刪除索引)

alter table table-name add index unique index-name(line-name);(增加索引)

alter table table-name add primary key (line-name);(增加主鍵索引,不需要索引名)

alter table table-name drop primary key;(刪除主鍵索引)

事務:(myisam不支持事務)

特性:隔離性、原子性、一致性、持久性(一旦commit之后,就沒法rollback)。

start transaction;啟用事務

commit;確認

rollback;回滾

我算是知道什么是事務什么事回滾了!!

總結

以上是生活随笔為你收集整理的d3 tip mysql_mysql的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。