所用軟件: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;// 這里刪除第四行。