Bootstrap

数据库学习一:创建数据库 、创建表、向表中插入数据与检索数据

1.显示数据库信息:通过show database命令。


2.为了获得一个数据库内的表的列表,使用show tables;

3.创建数据库 ,使用create database 数据库名;


再使用show命令可以看出系统中多了一个自己创建的数据库名。


4.创建表。数据库是表的容器,表,必须属于某个数据库。因而在创建表之前要指定数据库

1.可以通过语法指明表所属的数据库。库.表语法。如果任何的标识符出现了特殊字符,需要使用反引号包裹,

不同的标识符需要用不同的反引号包裹。

2.可以指定当前的默认数据库。use db_name;只是设定了默认数据库,不会影响其它数据库。

这里表示使用了当前默认数据库sample_db;

接下来可以创建表了。创建表时要先分析需要保存的实体数据拥有哪些属性,这些属性应如何保存。

列定义: 列名   列的数据类型   [列的属性(约束)]

创建表的SQL命令:create table 表名(列结构) [表选项];

主键:一列(或一组列),其值能够唯一区分表中每个行。没有主键,更新或删除表中特定的行很困难。因而大多数数据库设计人员都应保证创建的每个表都具有一个主键,以便于以后的数据操纵和管理。


由于上面采用use sample_db; 命令,故在创建表时会默认放在sample_db数据库中。接下来可以在数据库中查询数据库中所包含的表,可以看到表vendors已经被创建。


外键:外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。

例子分析:假如有一个包含产品目录的数据库表,其中每个类别的物品占一行。对于每种物品要存储的信息包括产品描述和价格,以及生产该产品的供应商信息。假设有由同一供应商生产的多种物品,那么应该在何处存储供应商信息(如供应商名、地址、联系方法呢)?

解决:将数据和产品信息分开存储。可以建立两个表,一个表存储供应商信息,另一个表存储产品信息。

vendors表包含所有供应商信息,每个供应商占一行,每个供应商具有唯一的标识(主键),可以是供应商ID。

products表只存储产品信息,它除了供应商ID(vendors表的主键)外不存储其他供应商信息。

vendors表的主键叫做products表的外键,这个外键将vendors表和products表关联,利用供应商ID能从vendors表中找出相应供应商的详细信息。

创建products表和外键的代码如下:


创建外键的命令: FOREIGN KEY (字段名) REFERENCES 关联表名(关联字段名)

这样利用供应商ID能从vendors表中找出相应供应商的详细信息。

此时可以看到数据库中增加了一个名为products的表。


5.数据操作。包括创建数据(插入数据)、获得数据(查询、检索数据)、删除数据、修改(更新)数据

①创建数据。命令:insert into 表名(字段列表) values (值列表); 

按照字段列表处的字段名先后顺序去对应添加值。不需要与创建表时的字段列表顺序一致,这样插入数据 更灵活,也方便修改。

如果在插入时要为所有的字段设置值,那么可以省略字段列表,但是要求值的顺序与创建表的时候字段的顺序一样,不灵活,一般采用上面那种写法。

          

以上语句命令向vendors表和products表中添加了数据。

② 获得数据。select 字段列表 from 表名 查询条件;

除了指定所需的列外,select语句还可以检索所有的列,通过*通配符来完成。

可以看到在创建数据之后,表中已经添加了我们创建的相应数据项。

从这条语句的输出中可以看出,检索出的数据并不是并不是以纯粹的随机顺序显示的。如果没有对数据排序,数据一般以它在底层表中出现的顺序显示。可以是数据最初添加到表中的顺序。

如果要对数据进行排序,可以使用命令:order by 字段名;

排序前:检索数据结果


排序后:检索数据结果,order by默认以升序排序(字符类型:从A到Z。数值类型:从小到大)。

                 

若想按照降序排序可以采用DESC关键字。


若想在多个列上排序。


若想对多格列进行降序排序,需要对每个列指定DESC关键字。

若想对多个列排序,按照某一字段名降序,再按照某一字段名升序排列,可以这么写。

以降序排序产品,然后再对产品名排序:


限制结果:LIMIT命令。select 语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT语句。

LIMIT 4指示MYSQL返回不多于4行。


为得到从第几行到第几行,需要指定要检索的开始行和行数。LIMIT 4,3指示MYSQL返回从行4开始的3行。

第一个数为开始位置,第二个数是要检索的行数。注意:检索出来的第一行是行0而不是行1.


可以使用ORDER BY 和 LIMIT 的组合,找出一个列中的最高值或最低值。

           

③ 删除数据。 delete from 表名 条件;

④更新数据。update 表名  set  字段名;




可以看到数据已经更新了

             

;