MySQL 語法基礎二

2021-10-24 07:26:44 字數 3664 閱讀 5481

檢視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 ...