数据库基础
-
什么是数据库。
数据库是一个以某种有组织的方式存储数据的集合,理解数据库的一种简单的办法就是将其想象成一个文件柜。,此文件柜是一个存放数据库的物理位置,无论数据是以什么形式什么以及如何组织的。保存有组织的数据的容器 -
表(table)
某种特定类型数据的结构化清单。数据库中的每个表都有一个名字,用来标识自己,测名字是唯一的,这表示在一个数据库中,没有其他表具有相同的名字。在相同的数据库中不能两次使用相同的表名,但是在不同的数据库中可以使用相同的表名。模式(schema): 关于数据库和表的布局以及特性信息。 -
列和数据类型
表由列组成,列中存储着表中的某部分信息。
列(column) 表中的一个字段。所有的表都是由一个或者多个列组成的。
数据类型(datatype) 所容许的数据的类型。每个表列都有相同的数据类型,它限制(或容许)该列中存储的数据。 数据类型限制可存储在列中的数据种类,还帮助正确的排序数据,并在优化磁盘使用方面起重要作用。 -
行(row)表中的一个记录。
你可能听过有人在提到行(row)时称其为数据库记录(record)。在很大程度上,这两个术语可以互相代替的,但真正意义上,行才是正确的术语。 -
主键(primary key)表中的每一行都应该有可以唯一标识自己的一列或一组列,其值能够唯一区分表中的每个行。数据库中应该总是定义主键,虽然并不总是需要主键,但大多数数据库设计人员都应保证他们创建的表有主键,以便于以后的数据库操纵和管理。
表中的任何列都可以作为主键,只要它满足以下条件: -
任意两行都不具有相同的主键值。
-
每个行都必须有一个主键(主键列不允许NULL值)
主键通常是定义在表的一列上,也可以一起使用多个列作为主键。在使用多个列作为主键是,上述条件必须应用构成主键的所有的列,所有列值得组合必须是唯一的。
主键的最好习惯 除了数据库强制要求的以外应该坚持一些普遍的习惯:- 不更新主键中的值。
- 不重用主键列中的值
- 不在主键列中使用可能会更改的值
-
sql
SQL是结构化查询语言(Structured Query Language)的缩写,SQL是一种专门用来和数据库通信的语言。
MySQL
- 什么是mysql
数据库的所有存储、检索、管理和处理实际上是由数据库软件----DBMS(数据库管理系统)完成的。MySQL是一种DBMS,即它是一种数据库管理软件。
进入mysql:
mysql -u root -p -h myserver -P 3306
其中 -u 后是用户名
-p后是密码
-h后是主机地址
-P后是端口号。mysql默认端口3306
需要注意:
- 命令输入在mysql> 之后;
- 命令用;或\g结束,没有结束的情况下,劲按Enter 不执行命令。
- 输入help、\help获取帮助。(输入 help select 获得使用 select语句的帮助);
- 输入quit或exit退出程序。
- 选择数据库
mysql> use school;
Database changed
必须先用use打开数据库,才能读取数据。
2. 了解数据库和表
查看所有的数据库
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| mysql |
| performance_schema |
| school |
| student_examination_sys |
| sys |
| test_type |
| tw_theater |
+-------------------------+
8 rows in set (0.01 sec)
查看所有的表
mysql> use school
Database changed
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| customers |
| orderitems |
| orders |
| productnotes |
| products |
| student |
| vendors |
+------------------+
7 rows in set (0.00 sec)
查看所有的列
mysql> show columns from customers;
+--------------+-----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-----------+------+-----+---------+----------------+
| cust_id | int(11) | NO | PRI | NULL | auto_increment |
| cust_name | char(50) | NO | | NULL | |
| cust_address | char(50) | YES | | NULL | |
| cust_city | char(50) | YES | | NULL | |
| cust_state | char(5) | YES | | NULL | |
| cust_zip | char(10) | YES | | NULL | |
| cust_country | char(50) | YES | | NULL | |
| cust_contact | char(50) | YES | | NULL | |
| cust_email | char(255) | YES | | NULL | |
+--------------+-----------+------+-----+---------+----------------+
9 rows in set (0.02 sec)
DESCRIBE table_name 是 select COLUMNS from table_name 的一种快捷方式。
自动增量(auto_increment)
某些表列需要唯一值,在每个行添加数据到表中时,MySQL可以自动的为每一个行分配下一个可用编号,不用在添加一行时手动分配唯一值(这个值必须记住)。这个功能就是所谓的自动增量。
支持的其他show语句:
- show status;显示服务器状态。
- show create database和show create table;显示建表和建库语句
- show GRANTS;显示授予用户的安全权限。
- show error 和 show warnings;用来显示错误和告警信息。