數據庫學習之初始-創建表及幾個命令


所用軟件:mysql server

一,創建一個表 用creat

create table candidats
(
candidats_id int(10)   not null   auto_increment,
candidats_name char(10) not null,
candidats_addr char(50) null,
candidats_age char(10) null,
candidats_school char(50) null,
candidats_company char(50) null,
candidats_interests char(50) null,
candidats_salary int(10) null,
candidats_family char(100) null,
primary key (candidats_id)
)engine=innodb;

這樣就創建了一個表,有幾點在創建的過程中容易被忽略的地方

auto_increment: 表示candidats_id 這一列的數據由數據庫自動生成,不用人為賦值。且每張表最多只能有一個列作為auto_increament;

primary key(): 定義主鍵,該表里面每一列唯一的標識符,注意主鍵在定義的時候 不能為空;

engine=innodb: 確認用哪個引擎。mysql里面 有多個引擎,用於具體管理和處理數據。如果不對引擎作定義,則使用默認引擎。我們可以根據不同的任務選擇合適的引擎。innodb 支持事務性處理,但不支持全文本搜索;myisam 支持全文本搜索,但不支持事務處理。事務處理即保證成批的mysql 被執行。

二,希望顯示所創建的表可以用show:

show columns from candidats;

三,表創建好了,用insert 為其添加內容

insert into candidats (candidats_name,
candidats_addr,
candidats_age,
candidats_school,
candidats_company,
candidats_interests,
candidats_salary,
candidats_family)
values ('Zhou', 'beijing', '25', 'beijing university', 'alibaba', null, '20000', 'married'),
('Bao', 'Chengdu', '35', 'sichuan normal university', 'JD', null, '35000', null),
('Zhao', 'Beijing', '28', 'Qinghua university', 'sina', null, null, null);

不同行內容之間用逗號隔開,不想賦值的用null. 注意定義的時候如果為not null ,則在添加內容時不能為空。

四,給表添加好內容后,用select 查看表的內容

select candidats_name from candidats;// 查看單列的內容;

結果如下:(囧,博客園粘貼不了截圖);

select candidats_id, candidats_name, candidats_company from candidats;//查看某幾列內容;

要查看整個表的內容可以用 *

select * from candidats;

五:要是想查看某一行或者某一類的內容呢? 可以用where來過濾

 

select * from candidats
where candidats_company = 'ali'; // 這樣就可以過濾出表里面所有公司是ai的行了。

這段用到的where,可以 用多種用法

select candidats_id, candidats_name, candidats_salary from candidats
where candidats_salary>15000;//選擇薪水大於15000的。

還可以有小於,等於,等

where 還可以用 in /and/or/not/is null等一起作為過濾條件,比如:

select candidats_id, candidats_name, candidats_company from candidats
where candidats_company in ('baidu', 'JD');

六,對於過濾出來的數據,可用order by來進行排序。

select candidats_id, candidats_name, candidats_salary from candidats
where candidats_addr= 'Beijing'
order by candidats_salary desc;//表示以薪水來進行排序,desc 表示按降序。mysql 默認的升序。

七,要是只想查看前面某幾行,或者比如 想查找薪水最高是多少,可以用limit.

select distinct candidats_salary from candidats
order by candidats_salary desc
limit 1;

也可以顯示前幾行,limit 3 表示顯示前三行。

注意mysql默認第一行為0

顯示從第3行開始的4行,用limit 3,4

這里面用了一個distinct。不用的話,mysql會將所有的salary值返回。用discint 表示返回不同值。

八,通常不會將所有東西寫在一張表里面,那樣太繁復且不好更改,比如將所有候選人信息以及公司信息記錄在一個表里面。通常最好的方式是一張表記錄候選人信息,一張表記錄各公司信息。那查詢的時候,如何查詢兩張表里面的某些內容呢?

需要將兩張表關聯起來。

用inner join ....on...

比如:

select candidats_name, candidats_school, candidats_company, company_size
from candidats inner join company on candidats_company = company_name;

這里面兩張表里面通過公司名字進行關聯。

九,想要對表里面某個數據進行更新,用update

update candidats
set candidats_salary = '19000'
where candidats_id = '5';

set 對想要更新的數據進行賦值,where 定義具體是哪個位置的數據。試了幾次,這里where只能用主鍵來定位要更新的數據位置。

刪除某行用delete

delete from candidats
where candidats_id = 4;// 這里刪除第四行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM