码迷,mamicode.com
首页 > 数据库 > 详细

数据库学习之初始-创建表及几个命令

时间:2016-12-18 20:36:26      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:val   文本   自动生成   条件   主键   sina   数据库   添加   ...   

所用软件: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;// 这里删除第四行。

 

数据库学习之初始-创建表及几个命令

标签:val   文本   自动生成   条件   主键   sina   数据库   添加   ...   

原文地址:http://www.cnblogs.com/test-2016/p/6195255.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!