@作者 Stone的博客 www.1314sl.com
----- 字段屬性:
主鍵:primary key 主鍵 唯一約束;不能重復(fù)
在創(chuàng)建表的時候,在后面加 primary key 關(guān)鍵字
-- 追加主鍵
alter table 表名 modify 字段名 primary key
alter table 表名 add primary key(字段名);
--更新&刪除主鍵
alter table 表名 drop primary key;
--主鍵分類
id int primary key comment '邏輯主鍵'
------ 自動增長
不給值或者給NULL的時候哺窄,會自動被系統(tǒng)+1操作
--自增長通常跟主鍵搭配
auto_increment
1.任何一個字段要做自增長前提是本身是一個索引(Key 攔有值)
2.必須是int型
3.一張表只能有一個自增長
default NUll 不給值 都會觸動自增長
----列屬性(修改自增長)
向下修改不生效
向上修改生效
alter table 表名 auto_increment = 值;
查看字增長變量
show variables like 'auto_increment%';
-- 修改自增長步長
set auto_increment_increment=5;--一次自增5
-- 刪除自增長
字段的一個屬性奥吩,可以通過 modify 進(jìn)行修改(沒有 auto_increment)
Alter table 表名 modify 字段 類型;
alter table 表 modify id int;
--查看 desc 表名
-- 列屬性(唯一鍵)
unique key --唯一鍵
數(shù)據(jù)不能重復(fù),可以有多個唯一嘀韧,允許為空胰舆。
本質(zhì)與主鍵差不多塞蹭。
-- 增加唯一鍵
1.在創(chuàng)建表的時候棘捣,字段之后跟 unique / unique key;
2.在所有的字段之后。unique key(字段默勾,字段);
not null unique key --PRI 表中又沒有主鍵
3.在創(chuàng)建表之后增加唯一
alter table 表名 add unique key (字段);
--- 刪除唯一鍵
先刪除后新增
alter table 表名 drop unique key -- 錯誤的
alter table 表名 dropindex 索引名字;
--------索引
幾乎所有的索引都是建立在字段之上
根據(jù)某種算法碉渡,將已有得數(shù)據(jù)(未來可能新增的數(shù)據(jù))
--索引的意義
1.提示查詢數(shù)據(jù)的效率
2.約束數(shù)據(jù)的有效性(唯一性等)
Mysql中提供了多種索引
主鍵:primary key
唯一: unique key
全文: fulltext index
普通: index
全文索引,最大的問題是如何確定關(guān)鍵字
英文很容易:單詞與單詞之間有空格
中文很難:沒有空格母剥,中文可以各種隨意組合(分詞:sphinx)
---------------- 關(guān)系
一對一
一對多(多對一)
多對多
sqlserver 主表 外表
---- 范式:減少數(shù)據(jù)冗余
1NF - 6NF
------- 1NF
第一范式:在設(shè)計(jì)表存儲數(shù)據(jù)的時候滞诺,如果表中設(shè)計(jì)的字段存儲的數(shù)據(jù),在取出來使用之前
還血藥額外的處理环疼,不滿足第一范式习霹。
數(shù)據(jù)不需要再次拆封
-- 2NF
/*
不允許出現(xiàn)部分依賴
在輸出舍得的過程中,如果有復(fù)合主鍵
且表中又字段并不是由整個主鍵來確定炫隶,
而是依賴主鍵中的某個字段淋叶,存在字段依賴的部分問題
稱之為:部分依賴
*/
-- 3NF
不能出現(xiàn)傳遞依賴
--逆規(guī)范化
磁盤利用率與效率的對抗
就是增大空間,提高效率
-------------數(shù)據(jù)高級操作---------------------
數(shù)據(jù)操作:增刪改查
新增:
insert into 表名【字段名】 values (值列表);
在數(shù)據(jù)插入的時候伪阶,假設(shè)主鍵對應(yīng)的值已經(jīng)存在煞檩,插入一定會失敗栅贴!
-- 主鍵沖突
更新操作
insert into 表名【字段名】values(值列表) on dupllcate key update 字段=值;
替換
replace into 表名【字段名】values(值列表;
-------蠕蟲復(fù)制
復(fù)制創(chuàng)建表(表結(jié)構(gòu))
create table 新表名 like 舊表名;
蠕蟲復(fù)制:先查出數(shù)據(jù)斟湃,然后將查出的數(shù)據(jù)新增一遍
insert into 表名【字段列表】 select 字段列表 * from 數(shù)據(jù)表名(舊表)
-- 蠕蟲復(fù)制 成倍增長
insert into 自己 select * from 自己;
意義:
1.從已有表拷貝數(shù)據(jù)到新表中
2.可以迅速的讓表中的數(shù)據(jù)膨脹到一定的數(shù)量級。測試表的壓力已經(jīng)效率
---- 高級 更新數(shù)據(jù)
基本語法
update 表名 set 字段=值 |where 條件|
高級更新
update 表名 set 字段 =值 |where 條件| limit 更新數(shù)量|
-- 把表中的 a 變成 c
update 表 set 字段='c' where 字段='a' limit 3;
!!!GBK 不區(qū)分大小寫筹误。
---- 高級 刪除數(shù)據(jù) 可以 通過 limit 來限制數(shù)量
delete from 表名【where 條件】【limit 數(shù)量】;
刪除數(shù)據(jù)以后桐早,自增長
思路:數(shù)據(jù)的刪除是不會該表表結(jié)構(gòu),只能刪除表后重建厨剪。
TRUNCATE 表名 -刪除后,重置自增長
------- 高級 數(shù)據(jù)查詢(select 選項(xiàng))
基本語法:
select 字段列表 * from 表名 where 條件|
完整語法:
select 字段列表 * from 數(shù)據(jù)源 where 條件 group by
having order by limit;
All:默認(rèn)的友存,保留所有的結(jié)果
Distinct : 去重祷膳,將重復(fù)的去掉
-- 字段別名
字段名 [as] 別名;
不寫 as 也行
--- 數(shù)據(jù)源
/* 從一張表中取出一條記錄,去另外一張表中匹配所有的記錄
而且保留 記錄數(shù)和字段數(shù)
這種結(jié)果為:笛卡爾積(交叉連接)
沒什么用屡立,盡量不用
*/
子查詢:
select * from (select * from 表名);
-- 高級 where 子句
where 子句的目標(biāo)用來判斷數(shù)據(jù)直晨,篩選數(shù)據(jù)
where 返回結(jié)果 0 或者 1 0 帶表false 1帶表true ;
運(yùn)算符:
> 大于
< 小于
>= 大于等于
<= 小于等于
!= <> 不等于
= 等于
模糊查詢里用到的:
like
between and
in / not in
邏輯運(yùn)算符:
&&(and) 并
||(or) 或者
!(not) 非
rand 取得一個0和1之間的隨機(jī)數(shù)
floor 向下取整!
1.
select * from 表 where id=1 || id=3 || id=5;
||
||
select * from 表 where id in(1,3,5);
2.
select * from 表 where height>=170 and heihgt<=180;
||
||
select * from 表 where height between 170 and 180;
--------------- Group by 分組----------------
聚合函數(shù):
COUNT() :統(tǒng)計(jì)分組后的記錄數(shù),每一組有多少條記錄
Max() :統(tǒng)計(jì)每組中最大的值
Min() :統(tǒng)計(jì)最小值
AVG() :統(tǒng)計(jì)平均值
SUM() : 統(tǒng)計(jì)和
select 聚合函數(shù),字段名 from 表名 group by 字段名
多字段排序:
--order by 放在語句最后
select * from 表名 border by 字段名(desc/asc),
group_concat(字段)
回溯統(tǒng)計(jì):with rollup
-- Having 子句
Having 字句 進(jìn)行條件判斷
having 能做 where 能做的幾乎所有事情 但是where卻不能
select 字段名 from 表名 group by 字段 having 條件
--- order by
select * from 表名 order by 字段 desc/asc;
-- limit 子句
limit 有兩種使用方式勇皇。
只用來限制長度
------
length:每頁顯示的數(shù)量
Offset:offset-(頁碼-1)*每頁顯示數(shù)量
@作者 Stone的博客 www.1314sl.com
![oneNate筆記](http://oypem0qjb.bkt.clouddn.com/Stone/1510498981617.jpg)
oneNate筆記
@作者 Stone的博客 www.1314sl.com