檢視mysql資料庫編碼:show vartables like 'char%'
character_set_client
:mysql使用該編碼解讀客戶端發過來的資料。如果客戶端發回來的資料不是這個,就會出現亂碼
character_set_results
:mysql會把資料轉換成該編碼再傳送給客戶端。如果客戶端不使用該編碼,就會出現亂碼
cmd預設使用gbk,需要修改變數
set character_set_client = gbk;
set character_set_results = gbk;
修改後只能當前cmd視窗有效,永久改需要到配置檔案中修改。在 my.ini中設定
資料庫 轉換 成 sql語句
sql語句 轉換成 資料庫
在cmd裡,資料庫 – sql語句
備份:mysqldump - u.... -p.... 資料庫名稱 > sql檔案路徑
注意:沒有建立資料庫,只是備份資料庫內容
恢復:先建立資料庫
exit後,mysql -u… -p… 資料庫名稱 < sql指令碼檔案路徑
第二種 恢復方法:
登入資料庫操作,在空的資料庫中,使用source語句。上一種是建立新的資料庫退出後 執行語句,這個是直接在建立新的資料庫中執行
source + sql指令碼檔案路徑 (無分號)
約束是新增在列上的,同來約束列
主鍵特性(唯一標識)
1.非空,2.唯一,3.被引用
當表的某一列被指定為主鍵後,該列就不能為空,不能有重複出現(例如人的主鍵是身份證號)
建立表時指定主鍵的倆種方式:
1.create table ***()
在某一列後不加逗號,加primary key,
2.在最後那列 加primary key(列名)
修改表時指定主鍵:
alter table *** add primary key(列名);
刪除主鍵:
alter table *** drop primary key;
主鍵自增長
通常主鍵型別為整型,設定為自動增長。保證插入資料時的唯一性和非空性
建立表時指定主鍵自增長: 在primmary key + auto_increment
主鍵的列自動填充,自己指定也行,如果不符合主鍵要求就自動填充
單獨建立乙個列為 主鍵,作為主鍵 。沒有其他意義。
非空約束
因為某一些列不能設定為null值,所以對列新增非空約束
建立表時 對指定的列 後面 +not null
唯一約束
某一些列不能設定重複的資訊,所以我們對列新增唯一約束
指定列 後面 加unique
概念模型
一對多一對一
多對多物件模型:可以雙向關聯,引用的是物件,而不是乙個主鍵
關係模型:只能多方引用一方,引用的是主鍵,而不是整個記錄。
外來鍵約束
特性:1 外來鍵必須引用(另一表,自己也可)主鍵
2 外來鍵可以重複
3 外來鍵可以為空
4 一張表中可以有多個外來鍵
新增外來鍵約束 一對多
乙個表中的一列 作為外來鍵 引用其他表或者自身表的主鍵
語句:建立表時:最後加constraint *** foreign key(自身表的外來鍵的列名) references 引用表(引用表的主鍵列名)
修改表時 加外來鍵約束:alter table *** add constraint *** foreign key(自身表的外來鍵的列名) references 引用表(引用表主鍵列名)
一對一關係
改一下就行,將自身表的外來鍵列指定為 自身表的主鍵,這樣 的外來鍵不能重複 ,對應的唯一的引用表的主鍵 ,就是一對一關係
constraint *** foreign key(自身表的**主鍵**的列名) references 引用表(引用表主鍵列名)
多對多關係
額外使用一張中間表, 建立倆個外來鍵 ,對應倆張表的主鍵。然後倆個外來鍵 將 倆張表的主鍵聯絡起來。
合併結果集
要求 ,倆個表的結構一樣
union,去除重複行
union all,不去重複行
select * from ab union all select * from cd;
連線查詢
連線查詢 之內連線
首先查詢倆個表,from後面這樣會出現笛卡爾積現象,倆個表記錄會相乘。產生很多無用的資料,所以需要加條件
方言:select * from 表1 別名1,表2 別名2 whrer 別名1.列名 = 別名2.列名
標準:select * from 表1 別名1 inner join 表2 別名2 on 別名1.列名 = 別名2.列名
自然:select * from 表1 別名1 natural join 表2 別名2
會自動找條件,找倆個表相同的列作為條件
連線查詢之外連線
外連線有主次,主表的記錄無論滿足不滿足條件,都列印出來,次表只有滿足條件才顯示。次表部分記錄不符合條件使用null補位
1.左外連線,左表為主 表1為主
select * from 表1 別名1 left outer join 表2 別名2 on 條件
2.右外連線,右表為主 ,表2為主
select * from 表1 別名1 right outer join 表2 別名2 on 條件
全外連線
左表 右表 的記錄都顯示出來,不符合的都用null代替
可以將 左外連線 和右外連線的 結果集合並 , 就相當於 全外連線
子查詢
乙個sql語句中含有多個select
查詢工資最高的員工的資訊
select * from emp whrer sal = (select max(sal) from emp);
子查詢出現的位置
from後 作為表 需要對這個表起別名
whrer 後作為條件
單行單列 作為結果集可以 在條件中使用大於等於
多行單列 的話 ,在條件中使用,加上關鍵字all any in 比如*** > all 多行單列
單行多列 類似乙個物件,與查詢的對比
多行多列,一般在from後 作為表,作二次查詢
MySQL學習(二) MySQL語法基礎
開啟命令列,通過net start 服務名 開啟資料庫服務端 其中服務名為安裝時設定的mysql服務,可通過查詢自己電腦得知。同樣,通過net stop 服務名 停止資料服務端。輸入mysql h localhost p 3306 u root p來輸入 其中localhost代表主機 p表示埠號,...
mysql基礎語法演示 mysql基礎語法
1 ddl 增刪改查 1 select 獲取資料 select from 表名 where 條件 2 update 更新資料 update 表名 set 欄位名 值,欄位名 值 where 條件 3 delete 刪除資料 delete from 表名 where 條件 4 insert into ...
mysql 語法入門 mysql基礎語法
1 dml 增刪改查 1 select 獲取資料 select from 表名 where 條件 2 update 更新資料 update 表名 set 欄位名 值,欄位名 值 where 條件 3 delete 刪除資料 delete from 表名 where 條件 4 insert into ...