mysql的基本語法
crud的操作:
c:create 增
(insert into 表名 values(將要增加的值);值的數量和表中的列數一致)
(insert into 表名(列名) values(給指定的列加值);其他為null,表示不知道)
(insert into 表名 values(將要增加的值),(將要增加的值),(將要增加的值);一次插入多行)
r:read 查
(select * from 表名 ;查詢所有的列)
(select 列名,列名 from 表名 ;查詢所需要的列,列的位置可以換(對列的篩選,術語上叫「投影」))
(select 字段條件 from 表名 where 條件;查詢所有的列(對行的篩選,術語上叫「選擇」))
u:update 修改
(update 表名 set 列名 = 新值, 列名 = 新值 where 條件;)
d:delete 刪除(刪除表中的資料)
(delete from 表名 刪除整個表);
(delete from 表名 where 條件;刪除所需刪除的)
drop database 資料庫名;(刪除資料庫)
use 資料庫名;(使用資料庫,資料庫必須存在)
create table 表名(列名 型別,列名 型別);(建立表)
drop table 表名;(刪除表的結構)
truncate table 表名;(截斷表)
即也是刪除表中的所有資料,但是與delete from 表名 不同的是:
a 截斷時速度更快
b 截斷表時,沒絕對沒有where條件
alter table 表名 add 列名 型別;(給建立好的表新增列)
alter table 表名 drop 列名;(給建立好的刪除加列)
desc 表名;(描述表的結構)(describe)
alter table 表名 modify舊列名 新型別;(修改列的型別)
alter table 表名 change 舊列名 新列名 新型別;(修改列的名字)
alter table 表名 rename to 新錶名或 rename table 表名 to 新錶名;(修改表的名字)
show create table 表名;顯示建表內容
注意:drop 刪除的是結構;delete 刪除表中的資料
alter 修改表的結構;update 修改表中的資料;modify 修改表中的列的型別或約束;change 修改表中的列名和型別
資料型別
數字型別:
整數:tinyint 佔1個位元組 -127~128
smallint 佔2個位元組 -32768~32767
int 佔4個位元組 -2147483648~2147473647
bigint 佔8個位元組
注意:只能存放整數,如果有小數,會四捨五入
實數型別:
decimal(m,n):總共佔m列,小數佔n 列(整數超出範圍報錯,小數超出範圍四捨五入)
float:有6 位有效數字(5位可靠數字 + 1位存疑數字)
double:有15位有效數字(14位可靠數字 + 1位存疑數字)
字串型別:
char:定長 char(10)表示最多存放10個列,不夠10個列的後面補齊,最大列數是255(優缺點:速度快但是浪費空間)
varchar:變長 varchar(10)表示最多存放十個列,不夠的後面不需要補齊(優缺點:節省空間但速度慢)
text:最多存放65535個列
longtext:最多存放4294967295個列
日期型別:
date:年月日
datetime:年月日 時分秒
timestamp:年月日 時分秒
當給日期型別的列新增資料時必須保證格式為 yyyy-mm-dd,並且不能越界,且mysql自動判斷閏年
約束主鍵
主鍵約束:只要在定義的列後面新增 primary key該列就是主鍵了
被新增上主鍵的列:a 主鍵的值不能為空;b 也不能為null
一張表中最多只能有乙個主鍵
復合主鍵
復合主鍵是在所有列定義完之後在定義
復合主鍵雖然包含多個列,但仍然是乙個主鍵
自增長約束
自增長約束:只能給數字型別並且是主鍵的列在其後面新增自增張(auto_increment)
自增長總是從目前最大的值開始,繼續增長的,就算是把最大的值刪了,但是他還是記著,哈哈
被加上unique約束的列,作用是不能重複的,
a 預設值約束:default
b 不允許為空:not null
unique與primary key的區別
unique允許null值進入表中,主鍵不允許
一張表中最多只能有乙個主鍵,但是可以有多個unique約束
補充:資料庫不能避免資料冗餘,只能減少資料冗餘
實體關係:
一對一:使用兩張表,外來鍵在任何一方都可以
一對多:使用兩張表,外間在多的一方
多對多,使用三張表,外來鍵在第三張表中
外來鍵外來鍵要注意的地方:
在從表(子表)中,不能出現主表中沒有的值
比如:班級只有1,2,3班,那麼學生就只能在這三個班)
刪除表的時候,只能先刪除子表(從表),再刪除主表,
當主表中某乙個值被依賴的時候,這個值不能被刪除或修改
主表中被依賴 的列必須是主鍵
被依賴的列,與依賴他的列可以不同,但型別必須一致
級聯刪除(修改):
alter table 表名
add constraint 外鍵名
foreign key(欄位名) references 主表名(欄位名)
on delete(on update) cascade
同時新增級聯刪除和級聯修改
alter table 表名
add constraint 外鍵名
foreign key(欄位名) references 主表名(欄位名)
on delete(on update) cascade on delete(on update) cascade
MySQL key與index的區別
一 key key 是資料庫的物理結構,處於模型層面的,它包含兩層意義和作用,一是約束 偏重於約束和規範資料庫的結構完整性 二是索引 輔助查詢用的 包括primary key,unique key,foreign key 等。primary key 有兩個作用,一是約束作用 constraint 用...
MySql Key和Index 的精簡總結
沒有索引,mysql不得不首先以第一條記錄開始並然後讀完整個表直到它找出相關的行。所有的mysql索引 primary unique和index 在b樹中儲存。字串是自動地壓縮字首和結尾空間。索引用於 快速找出匹配乙個where子句的行 當執行聯結時,從其他表檢索行 對特定的索引列找出max 或mi...
mysql 語法 mysql的刪除語法
刪除資料庫 drop database test 刪除表 drop table ifexists test 刪除表資料 delete from test where id 1 不會減少表或索引所占用的空,可以加where條件,可以進行rollback回滾 truncate table test 執行...