1.数据和表
保存所有东西的地方
定义数据
你要记录事物,人以及各种重要性,以前你会写很多本子或者便签....
开动脑筋:有更好的办法组织信息吗?、
有!我们需要数据库。在创建数据库前,我们需要了解存储数据的类型,以及如何把数据分类。
多张便签和上面的内容有什么不同?和相同之处!
比如客户信息,张三和李四有First Name、Last Name、Birthday、profession、status、Location等等。
我们把这些信息放在一行里,就形成了表table,表中有列colume和行row,表这个概念跟我们熟悉的另一个软件很像——Excel。
什么是数据库?
数据库是保存表和其他相关SQL结构的容器。
查看快递,下单外卖,线上购物,预定机票,网上购电影票,你实际都在一个数据库中查找信息,这就是在进行查询(query)行为。
数据库想象成保存信息的容器,里面还有若干张表。数据库由表构成。表是数据库中包含数据的结构,由列和行组成。刚才张三和李四的First Name、Last Name、Birthday等就是表中的一列。表的行就是张三或李四的具体信息,First Name张,Last Name三,Birthday2030年1月1日。
FristName | LastName | Birthday | Profession | status | Location |
张 | 三 | 2030年1月1日 | 律师 | 中级 | 北京 |
李 | 四 | 2031年12月10日 | 工程师 | 高级 | 上海 |
数据库中所有的表应该能以某种方式相互关联。
列示存储在表中的一块数据。通常也叫做字段(field)。
行是一组能够描述某个事物的列的集合。列和行构成了表。通常也叫做记录(record)。
举个例子,这有一张通讯录表:
first_name | last_name | address | city | state | id_num |
Joe | Epps | XXX | XXX | XXX | XXX |
AI | Jones | XXX | XXX | XXX | XXX |
Mary | Morris | XXX | XXX | XXX | XXX |
Lou | Green | XXX | XXX | XXX | XXX |
请思考下:图书馆有书本、借书人,它们都有哪些属性?
- books:title,author,cost,scan_code...
- library_patron:first_name,last_name,address...
接受命令
启动数据库,默认你已经安装完毕MySQL(为什么用它不用其它的DBMS,因为MySQL开源)。
mysql -h 127.0.0.1 -u<用户名> -p<密码>
第一步,创建用来装表格的数据库。
CREATE DATABASE gregs_list;
1.创建一个名叫gregs_list数据库名,创建命令大写CREATE DATABASE,命令必须以分号结尾。但大写不是必须的,SQL不区分大小写,这样写的好处方便阅读。
第二行表示语句响应信息,知道查询成功执行了。
注意:给数据库命名需要符合一定规则,使用几个单词连接也不能有空格,可以使用下划线,例如gregs_list,GregsList,gregslist都是可以的。
2.现在要告诉RDBMS需要使用刚刚创建的数据库。
USE gregs_list;
这样下面所作的每件事都是在gregs_list数据库中。
设定表:CREATE TABLE语句
我们利用患者的数据,看看如何运作,创建一个患者表及其类型,通过命令提示符SQL让RDBMS执行此命令。
姓名name | sex性别 | age年龄 |
张三 | 男 | 31 |
李四 | 男 | 25 |
CREATE TABLE patient——list
(
patient_name VARCHAR(10),
patient_sex VARCHAR(6),
patient_age VARCHAR(4)
);
括号中建立列,最后一行的分号告诉RDBMS命令结束了。VARCHAR是可变动字符的意思,这就是数据类型,属性中的数据是需要指定类型的。我们可以尝试创建更复杂的表格,使用CREATE TABLE命令,或者把患者信息填充的更加完善,生日,职业,出生地,居住地,血型,身份证号码等等。
设计SQL很简单
刚才已经了解如何创建列,事物的属性,接下来需要确定每列的正确数据类型与长度。了解这两点后,写SQL将更加简单。
CREATE TABLE my_contacts --创建名为my_contacts的表
{
last_name VARCHAR(30), --加入名为last_name的列,最多存30个字符
first_name VARCHAR(20), --加入名为first_name的列,最多存20个字符
email VARCHAR(50), --加入名为email的列,最多存50个字符
birthday DATE, --加入名为birthday的列,存储日期数据
profession VARCHAR(50), --加入名为profession的列,最多存50个字符
location VARCHAR(50), --加入名为location的列,最多存50个字符
status VARCHAR(20), --加入名为status的列,最多存50个字符
interests VARCHAR(100), --加入名为interests的列,最多存100个字符
seeking VARCHAR(100) --加入名为seeking的列,最多存100个字符
};
在MySQL中属于以上语句就完成了一张my_contacts表的创建
mysql> CREATE TABLE my_contacts
-> (
-> last_name VARCHAR(30),
-> first_name VARCHAR(20),
-> email VARCHAR(50),
-> birthday DATE,
-> profession VARCHAR(50),
-> location VARCHAR(50),
-> status VARCHAR(20),
-> interests VARCHAR(100),
-> seeking VARCHAR(100)
-> );
Query OK, 0 rows affected (0.22 sec)
感谢作者Lynn Beighley