MySQL必知必会-笔记,1-4章

1章 了解SQL 数据库概念
数据库

数据库是一个以某种有组织的方式存储的数据集合。 数据库(database)保存有组织的数据的容器(通常是一个文件或者一组文件)


表是一种结构化文件,可以用来存储某种特定类型的数据。表(table)某种特定类型数据的结构化清单 注意:存储在表中的数据是一种类型的数据或一个清单,决不应该将顾客的清单和订单的清单存储在同一个数据库表中 数据库中每个表都有一个名字,用来标识自己,此名字是唯一的。不同数据库可以使用相同表名,同一数据库不能使用相同表名。

模式(schema)
关于数据库和表的布局及特性的信息。

列 (column)
表中的一个字段,所有表都是有一个或多个列组成的

数据类型(datatype)
所容许的数据的类型, 数据库表中每个列都有响应的数据类型,它限制该列中存储的数据 注:数据类型限制数据种类,还帮助正确的排序数据,并在优化磁盘使用方面起重要作用

行(row)
表中的一个记录,也可以称为数据库记录(record)

主键(primary key)
一列(或一组列)其值能够唯一区分表中每一行 表中每一行都应该有可以唯一标识自己的一列,如一个顾客表可以使用顾客编号列,订单表可以使用订单ID 表中任何列都可以作为主键。 主键通常定义在表的一列上,但也可以一起使用多个列作为主键(所有列值的组合必须是唯一的,但单个列的值可以不唯一)

主键的最好习惯
除MySQL强制实施的规则外,应该坚持的几个普遍认可的最好习惯为: ? 不更新主键列中的值; ? 不重用主键列的值; ? 不在主键列中使用可能会更改的值。(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)

什么是SQL
结构化查询语言(Structured Query Language)的缩写,是一种专门用来与数据库通讯的语言。 >>几乎所有重要的DBMS都支持SQL,但任意两个DBMS实现的SQL都不完全相同

2章MySQL简介 什么是MySQL
MySQL是一种DBMS(数据库管理系统), 它是一种数据库软件

MySQL优点
>>成本--MySQL是开放源代码的,一般可以免费使用(甚至可以免费修改)。 >>性能--MySQL执行很快(非常快) >>可信赖 --某些非常重要和声望很高的公司、站点都使用MySQL来处理自己的重要数据 >>简单--很容易安装和使用

基于客户机-服务器的软件
MySQL、Oracle以及Microsoft SQL Server等数据库是基于客户机—服务器的数据库 关于数据、数据添加、删除和数据更新的所有请求都由服务器软件完成。这些请求或更改来自运行客户机软件的计算机

3章 使用MySQL 创建数据库
使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 3 rows in set (0.00 sec)

创建一个数据库crashcourse
mysql> CREATE DATABASE crashcourse; Query OK, 1 row affected (0.06 sec) 注意:不同操作系统对大小写的敏感。

选择你所创建的数据库
mysql> USE crashcourse Database changed 此时你已经进入你刚才所建立的数据库crashcourse.

创建表:
CREATE TABLE orders ( order_numintNOT NULL AUTO_INCREMENT, order_date datetime NOT NULL , cust_idintNOT NULL , PRIMARY KEY (order_num) ) ENGINE=InnoDB; CREATE TABLE productnotes ( note_idintNOT NULL AUTO_INCREMENT, prod_idchar(10)NOT NULL, note_date datetimeNOT NULL, note_texttextNULL , PRIMARY KEY(note_id), FULLTEXT(note_text) ) ENGINE=MyISAM;

增加表行
INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country,\ cust_contact, cust_email) VALUES(10001, 'Coyote Inc.', '200 Maple Lane', 'Detroit', 'MI', '44444', 'USA', \ 'Y Lee', 'ylee@coyote.com');

mysql中engine=innodb和engine=myisam的区别
查看表
mysql> SHOW TABLES; +-----------------------+ | Tables_in_crashcourse | +-----------------------+ | orders| +-----------------------+ 1 row in set (0.00 sec)

查看表列
mysql> SHOW COLUMNS FROM customers; //SHOW COLUMNS 要求给出一个表名 +--------------+-----------+------+-----+---------+----------------+ | 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) 注:什么是auto_increment 自动增量? >>>在每个行添加到表中时,MySQL可以自动地为每个行分配下一个可用编号,不用在添加一行时手动分配唯一值 >>>这样做必须记住最后一次使用的值,如果需要它,则必须在用CREATE语句创建表时把它作为表定义的组成部分

DESCRIBE语句
DESCRIBE语句 MySQL支持用DESCRIBE作为SHOW COLUMNSFROM的一种快捷方式。 换句话说,DESCRIBE customers; 是SHOW COLUMNS FROM customers; 的一种快捷方式。

4章 检索数据 SELECT语句
声明: SQL语句和大小写 请注意,SQL语句不区分大小写,因此SELECT与select是相同的。同样,写成Select也没有关系。示例: mysql> select prod_id,prod_name,prod_price from products; mysql> select * from products mysql> select vend_id from products; mysql> select distinct vend_id from products; //distinct: 表示只返回不同(唯一)的vend_id行

SELECT 限制结果 (LIMIT子句)
mysql> select prod_idfrom products LIMIT 5; //返回不多于5个结果 mysql> select prod_idfrom products LIMIT 5,5; //返回从行5开始的5行,如果没有足够的行,只返回它能返回的那么多行

【MySQL必知必会-笔记,1-4章】SELECT 使用完全限定的表名
select products.prod_name from products; select products.prod_name from crashcourse.products;

    推荐阅读