eg:create table aaa(id1 int(10) zerofill,id2 int (10)); mysql
(1) int(n) 中的 n表明寬度,表示沒有設定寬度的時候,用0填充,須要配合zerofill來使用。sql
eg: insert into aaa values(12,11);性能
(2) varchar 存儲變長的字符串,即根據存入的值的長度來動態變化優化
存儲空間:加密
非空:65533字節spa
可空:65532字節設計
優勢:節省空間,操做簡單code
缺點:在update的時候,若是數據的長度變化了,就會去申請空間,從而有額外的工做,對性能有影響。cdn
應用場景:1.字符串最大長度比平均真實值大的比較多,這個時候就會用。blog
2.更新頻率比較低的字符串字段
(3) char 存儲定長的字符串
存儲長度:create table t (char(10) not null)
非空:存儲255字節
可空:存儲254字節
應用場景:1.適合存儲比較短的字符串
2.存儲固定的長度或者存儲長度比較接近的字符串 。例如:手機號、MD5加密的密碼、郵編等
3.常常變動的數據(不須要釋放空間從新申請,即不會產生內存碎片)
4.存儲比較短的字符串值,例如:Y/N
有趣的例子:
create table test_char(name char(10));
insert into test_char values('abc'),(' abc'),('abc ');
select concat("'",name,"'") from test_char;
複製代碼
結果以下:
結論:若是插入的值末尾有空格,會自動截取掉。
(4) text:存儲變長的非二進制的字符串
(5) blog:用於存儲二進制數據,大二進制數據,也就是能夠存儲流,圖片或者音頻文件
(6) 日期時間類型
建表的時候能夠將爲null的 賦其餘默認值,如:字符串的設置'',數據類型的設爲0,不要將null設爲默認值。
插曲:查詢Linux性能參數 top、htop、free -m、df -hl
select distinct <select_list>
  from <left_table>
  <join_type> join <right_table>
  on <join_condition>
  group by <group_by_list>
  having <having_condition>
  order by <order_bu_list>
  limit <limit_number>
複製代碼
join 建表語句
create database test2017;
use test2017;
複製代碼
左表t1
create table t1(id int not null,name varchar(20));
insert into t1 values(1,'t1a');
insert into t1 values(2,'t2a');
insert into t1 values(3,'t3a');
insert into t1 values(4,'t4a');
insert into t1 values(5,'t5a');
複製代碼
右表t2
create table t2(id int not null,name varchar(20));
insert into t2 values(2,'t2b');
insert into t2 values(3,'t2c');
insert into t2 values(4,'t2d');
insert into t2 values(5,'t2f');
insert into t2 values(6,'t2a');
複製代碼
1.笛卡爾積(至關於兩個for循環)
2.左鏈接 left join left outer join
左表所有保留,右表關聯不上的用null表示。結果 t1 中存在id爲1的,t2中沒有,則對應t2中的記錄用null表示。
左表應該都是小表。
3.右鏈接 right join
右表所有保留,左表關聯不上的用null表示。
4.內鏈接 inner join
兩個表的公共部分。
5.查詢左表中獨有部分
6.查詢右表中獨有數據
7.全鏈接
在MySQL中沒有full join
歡迎關注個人公衆號,第一時間接收最新文章~ 搜索公衆號: 碼咖 或者 掃描下方二維碼: