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;
推荐阅读
- Debezium的基本使用(以MySQL为例)
- Java学习|如何在eclipse中导入mysql-connector-java.jar包以及关于不同版本mysql-connector-java的jar包下载
- MySQL|如何实现两个数据库之间表的同步更新(增,删,改)
- python|python mysql教程视频_Mysql -1_ Python系列视频(一)——Python语言基础_Python视频-51CTO学院...
- 数据库(mysql命令3及pymsql的使用)---12.20
- Centos安装Mysql数据库和Mysql主从配置
- #|MySQL夺命66问,面试必看!(荣耀典藏版)
- MySQL|MySQL 中with rollup的用法,对分组再汇总
- 数据结构|MySQL主从复制详细介绍
- mysql5.5中文乱码问题