1墓怀,MySQL支持大型數(shù)據(jù)庫(kù)汽纠,最高可在一個(gè)表中容納 5千多萬(wàn)行。每張表的默認(rèn)文件大小限制為 4GB傀履,不過(guò)如果操作系統(tǒng)支持虱朵,你可以將其理論限制增加到 800 萬(wàn) TB。
2钓账,MySQL中列的自增碴犬,如果為某列設(shè)置自增列,插入數(shù)據(jù)時(shí)無(wú)需設(shè)置此列梆暮,默認(rèn)將自增(表中只能有一個(gè)自增列)
create table tb_name(
nid int not null auto_increment primary key,
num int null
)ENGINE=InnoDB DEFAULT CHARSET=utf8
或
create table tb_name(
nid int not null auto_increment,
num int null,
index(nid)
)ENGINE=InnoDB DEFAULT CHARSET=utf8
- 對(duì)于自增列服协,必須是索引(含主鍵)。
- 對(duì)于自增可以設(shè)置步長(zhǎng)和起始值
show session variables like 'auto_inc%';
set session auto_increment_increment=2;
set session auto_increment_offset=10;
shwo global variables like 'auto_inc%';
set global auto_increment_increment=2;
set global auto_increment_offset=10;
3啦粹,MySQL中的主鍵偿荷,一種特殊的唯一索引,不允許有空值唠椭,如果主鍵使用單個(gè)列遭顶,則它的值必須唯一,如果是多列泪蔫,則其組合必須唯一棒旗。
create table tb1(
nid int not null auto_increment primary key,
num int null
)
或
create table tb1(
nid int not null,
num int not null,
primary key(nid,num)
)
4,MySQL中的清空表
-- 如果清空的表又自增列,那么在清空之后會(huì)繼續(xù)上次自增的值繼續(xù)自增
delete from tb_name;
-- 如果清空的表又自增列,那么在清空之后再次添加數(shù)據(jù)自增的值會(huì)從新開(kāi)始計(jì)算
truncate table tb_name;
5撩荣,MySQL中的修改表
-- 添加列
alter table 表名 add 列名 類(lèi)型;
-- 刪除列
alter table 表名 drop column 列名;
-- 修改列
alter table 表名 modify column 列名 類(lèi)型; -- 類(lèi)型
alter table 表名 change 原列名 新列名 類(lèi)型; -- 列名铣揉,類(lèi)型
-- 添加主鍵
alter table 表名 add primary key(列名);
-- 刪除主鍵
alter table 表名 drop primary key;
alter table 表名 modify 列名 int, drop primary key;
-- 添加外鍵
alter table 從表 add constraint 外鍵名稱(chēng)(形如:FK_從表_主表) foreign key 從表(外鍵字段) references 主表(主鍵字段);
-- 刪除外鍵
alter table 表名 drop foreign key 外鍵名稱(chēng);
-- 修改默認(rèn)值
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
-- 刪除默認(rèn)值
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
6,MySQL中的枚舉:ENUM('value1','value2',...)
CREATE TABLE shirts (
name VARCHAR(40),
size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);
INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),
('polo shirt','small');
mysql> SELECT name, size FROM shirts WHERE size = 'medium';
+---------+--------+
| name | size |
+---------+--------+
| t-shirt | medium |
+---------+--------+
1 row in set (0.00 sec)
UPDATE shirts SET size = 'small' WHERE size = 'large';
COMMIT;
7餐曹,MySQL中的集合:SET('value1','value2',...)
mysql> CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> SELECT col FROM myset;
+------+
| col |
+------+
| a,d |
| a,d |
| a,d |
| a,d |
| a,d |
+------+
5 rows in set (0.00 sec)
8逛拱,MySQL Full Join的實(shí)現(xiàn)
把左右兩個(gè)表的數(shù)據(jù)都取出來(lái),不管是否匹配
MySQL Full Join的實(shí)現(xiàn) 因?yàn)镸ySQL不支持FULL JOIN,下面是替代方法
select * from A left join B on A.id = B.id (where 條件)
union --all可選
select * from A right join B on A.id = B.id (where條件);