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_num  int      NOT NULL AUTO_INCREMENT,
  order_date datetime NOT NULL ,
  cust_id    int      NOT NULL ,
  PRIMARY KEY (order_num)
) ENGINE=InnoDB;

CREATE TABLE productnotes
(
  note_id    int           NOT NULL AUTO_INCREMENT,
  prod_id    char(10)      NOT NULL,
  note_date datetime       NOT NULL,
  note_text  text          NULL ,
  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', '[email protected]');

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_id  from products LIMIT 5; //返回不多于5个结果
mysql> select prod_id  from products LIMIT 5,5; //返回从行5开始的5行,如果没有足够的行,只返回它能返回的那么多行

SELECT 使用完全限定的表名

select products.prod_name from products;
select products.prod_name from crashcourse.products;

你可能感兴趣的:(MySQL必知必会-笔记,1-4章)