列明如果有特殊字元,如# 或者 - 等,需要用反引號`(數字鍵1左邊的符號)將列明括起來,否則會報錯
1. varchar(n):長度為n個位元組的可變長度且非unicode的字元資料。n必須是乙個介於1和8,000之間的數值。儲存大小為輸入資料的位元組的實際長度
2. nvarchar(n):包含n個字元的可變長度unicode字元資料。n的值必須介於1與4,000之間。位元組的儲存大小是所輸入字元個數的兩倍。所輸入的資料字元長度可以為零。nvarchar適用中文和其他字元,其中n表示unicode編碼,可以解決多語言之間的轉換問題。使用nvarchar儲存英文本元會增大一倍的儲存空間.但是在儲存代價已經很低廉的情況下,優先考慮相容性會帶來更多好處的。
加上 n 代表存入資料庫時以 unicode 格式儲存。saleusername的字段型別為varchar(50)update tablename set saleusername='小覃祝你⑭快樂' where id=87
select * from tablename where id=87
why?saleusername欄位裡的文字怎麼變成這樣了。⑭這個符號怎麼變成了?
那麼,稍微改一下,在引數值前面加上n。現在可以看到調皮的⑭出來了。
update tablename set saleusername=n'小覃祝你⑭快樂' where id=87
insert的執行結果相當於執行了into
workers
select'a
',25,'
統計',3000,1
union
allselect'b
',30,'
設計規劃
',9000,2
union
allselect'c
',20,'
**員',2000,3
insert但是使用insert into ... select ... union all的資料插入效率要比下面分條插入的方式高的多。into workers values ('
a',25,'
統計',3000,1
);insert
into workers values('
b',30,'
設計規劃
',9000,2
);insert
into workers values('
c',20,'
**員',2000,3);
insert into ... select ... union all這個語句分為兩部分,select ... union all 和insert
其實 select ... union all... 又由三個select 語句組成,通過union all 將select的結果聯合起來,然後一次性插入到資料庫中。
單獨執行:
select'a會產生3行。',25,'
統計',3000,1
union
allselect'b
',30,'
設計規劃
',9000,2
union
allselect'c
',20,'
**員',2000,3
最後,通過insert語句,將3行一次性插入到workers表中。這樣比下面分三次插入到表中的效率要高很多。
驅動表與被驅動表:在兩表連線查詢中,驅動表只需要訪問一次,被驅動表可能被訪問多次。內連線與外連線:
過濾條件where 和 on:
一般情況下,我們都把只涉及單錶的過濾條件放到
where
子句中,把涉及兩表的過濾條件都放到on
子句中,我們也一般把放到on
子句中的過濾條件也稱之為連線條件
左連線與右連線:
左連線和右連線是左外連線和右外連線簡稱,只有外連線才分左右,且外連線一定會分左右。
可以據此來分辨內連線和外連線:
如果join語句前面有left或者right, 則一定是外連線,此時on的語義與where的語義不同;
如果join語句前面沒有left或者right, 則一定是內連線,此時on的語義與where相同。
標識內連線和外連線的關鍵字inner|cross 和 outer都是可以省略的。
含義:1、count(*) :統計所有的行數,包括為null的行(count(*)不單會進行全表掃瞄,也會對錶的每個字段進行掃瞄。而count('x')或者count(column)或者count(0)等則只進行乙個欄位的全表掃瞄)。
2、count(1):計算一共有多少符合條件的行(其實就可以想成表中有這麼乙個字段,這個字段就是固定值1,count(1),就是計算一共有多少個1..同理,count(2),也可以,得到的值完全一樣,count('x'),count('y')都是可以的。count(*),執行時會把星號翻譯成欄位的具體名字,效果也是一樣的,不過多了乙個翻譯的動作,比固定值的方式效率稍微低一些。)
3、count(列名):查詢列名那一列的,欄位為null不統計。
執行效果:
1、count(*)包括了所有的列,相當於行數,在統計結果的時候,不會忽略列值為null。
2、count(1)包括了忽略所有列,用1代表**行,在統計結果的時候,不會忽略列值為null。
3、count(列名)只包括列名那一列,在統計結果的時候,會忽略列值為空。
執行效率:
列名為主鍵,count(列名)會比count(1)快
列名不為主鍵,count(1)會比count(列名)快
如果表多個列並且沒有主鍵,則 count(1) 的執行效率優於 count(*)
如果有主鍵,則 select count(主鍵)的執行效率是最優的
如果表只有乙個字段,則 select count(*)最優
**
mysql學習筆記 51 mysql學習筆記
初學mysql時整理,隨時更新 資料操作 增 insert into 表名 字段列表 values 值列表 值列表 如果要插入的值列表包含所有字段並且順序一致,則可以省略字段列表。可同時插入多條資料記錄!replace 與 insert 完全一樣,可互換。insert into 表名 set 欄位名...
mysql學習筆記 51 Mysql 學習筆記
一.首先進入mysql mysql u root p新增使用者許可權設定 grant all privileges on to jerry localhost identified by aa1234567 只允許本機訪問 grant all privileges on to jerry 10.80...
mysql做筆記 mysql學習筆記
alter table 新增,修改,刪除表的列,約束等表的定義。檢視列 desc 表名 修改表名 alter table t book rename to bbb 新增列 alter table 表名 add column 列名 varchar 30 刪除列 alter table 表名 drop ...