首页 > 代码库 > 数据库学习之初始-创建表及几个命令
数据库学习之初始-创建表及几个命令
所用软件: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;// 这里删除第四行。
数据库学习之初始-创建表及几个命令