建立帶有空格的列名
create table customer (
customerid integer not null auto_increment,
`first name` varchar(16),
`last name` varchar(16),
primary key (customerid)
) engine=innodb charset=utf8;
帶有空格的屬性,無論實在建立的過程中或是 crud 操作都需要用 `` 重 音符將其包括起來。
連線字段
出於某種目的 ,我們可能想要將表中的兩列組合在一起,在 sql 中可以使用 + 將兩個字段連線在一起,但是在 mysql 中我們需要借助 concat() 函式。
select
concat(first name, last name)
from
customer;
轉換函式
有的時候我們可能需要將null 值轉換成有意義的內容。可以借助 ifnull 將 null 值轉換成其它內容。
select
ifnull(last name, 'unknown') as 'name'
from
customer;
case 表示式
有時候我們會將人的性別儲存為 int 型別, 0 代表男性,1 代表女性。所以這個時候我們在查詢資料庫的時候需要將資料進行轉換。
select
case
when *** = 0 then 'man'
when *** = 1 then 'woman'
else 'unknown'
end as '***'
from
customer;
以上**的意思就是,如果查詢到 *** 為 0, 則返回 man,如果 *** 為 1,則返回 woman,如果既不是 0 也不是 1,則返回 unknown.
限制行有時候,對於資料庫中成千上萬條記錄,可能只有前幾條是我們感興趣的,那麼這個時候我們可能用到 limit 關鍵字。
select
case
when *** = 0 then 'man'
when *** = 1 then 'woman'
else 'unknown'
end as '***'
from
customer
limit 1;
以上**就是返回資料庫中的第一條記錄。
下面我們將建立兩張表,接下來的內容都圍繞這兩張表展開。
create table student (
studentid integer not null,
studentname varchar(16) not null,
student*** smallint,
primary key (studentid)
) engine=innodb charset=utf8;
create table address (
addressid integer not null,
province varchar(8),
city varchar(8),
foreign key (addressid)
references student (studentid)
) engine=innodb charset=utf8;
向表中插入幾條資料。
insert into student values(1,'hwaphon',0);
insert into student values(2,'sun',1);
insert into address values(1,'anhui','wuhu');
insert into address values(2,'hebei','tianjin');
not 操作符
select
studentname
from
student
where
not student*** = 0;
實際上可以使用 <> 實現同樣的效果。
select
studentname
from
student
where
student*** <> 0;
模糊匹配
比如我們現在想找乙個名字中帶有 phon 的人。
select
studentname
from
student
where
studentname like '%phon%';
%代表可以匹配任意多個任意字元,當然還存在 _字元,代表可以匹配乙個任意字元。
內聯接select
from
student
inner join
address on student.studentid = address.addressid;
雖然使用 where 語句也能達到相同的效果,但是並不推薦那麼做。
外聯接外聯接分為三種,分別是左外聯接,右外聯接和全鏈結。下面,我們舉例來看看這三種聯接。
首先,再插入一條 student 記錄。
insert into student values(3,'john',0);
這個時候 adress 表中並沒有 john 的位址資訊,所以如果這個時候使用內聯接查詢資料,顯示結果如下。
demo01.png
如果我們想既想進行聯接操作,又不想讓資訊丟失,那麼這個時候我們只能使用左外聯接了。
select
from
student
left outer join
address on student.studentid = address.addressid;
這時候的查詢結果如下。
demo02.png
是的,本來應該被忽略掉的 john 又顯示出來了,這就是左外聯接的作用,讓本來應該在聯接過程中消失的主表資訊顯示出來,但是它不存在的那些列會自動填充 null。右外聯接和全聯接的作用和這個類似。
Yum安裝MySQL,來自MySQL官網並補充
跟著mysql官網進行安裝操作 我只想說mysql官網寫了個錘子 中間出現很多問題,做個總結 檢視安裝的myql rpm qa grep mysql 解除安裝myql yum remove mysql community server xx 1 新增mysql yum repository wget...
mysql官網日期函式 MySql日期函式
日期函式 date add 函式和 adddate 函式 他們兩個是同義詞,用法一樣 對指定日期增加幾天,幾個小時,幾分鐘,幾秒鐘 引數說明 date 起始日期或者起始時間 expr 指定的是乙個間隔值,在起始時間中增加或者減少,注意 expr是乙個字串.對於負值間隔,可以以 開頭 unit 表示的...
mysql官網最簡捷方法重置mysql8密碼
如何重置根密碼 乙個文字檔案d mysql mysql init.txt 內容為 alter user root localhost identified by admin2 一句啟動命令mysqld defaults file d mysql my.ini init file d mysql my...