MySQL 教程
在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:
· 数据库: 数据库是一些关联表的集合。.
· 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
· 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
· 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
· 冗余:存储两倍数据,冗余可以使系统速度更快。
· 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
· 外键:外键用于关联两个表。
· 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
· 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
· 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
MySQL 中的数据类型
MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:
数字类型
整数: tinyint、smallint、mediumint、int、bigint
浮点数: float、double、real、decimal
日期和时间:
date、time、datetime、timestamp、year
字符串类型
字符串: char、varchar
文本: tinytext、text、mediumtext、longtext
二进制(可用来存储图片、音乐等):tinyblob、blob、mediumblob、longblob
使用MySQL数据库
创建一个数据库
使用 create database 语句可完成对数据库的创建, 创建命令的格式如下:
create database 数据库名 [其他选项];
例如我们需要创建一个名为 namelist的数据库, 在命令行下执行以下命令:
create database namelist;
创建数据库表
使用 create table 语句可完成对表的创建, create table 的常见形式:
create table 表名称(列声明);
以创建 nlist 表为例, 表中将存放序号(id)姓名(name)、联系电话(phone) 这些内容:
create table students
(
id int unsigned not nullauto_increment primary key,
name char(8) not null,
phone char(13) null default"-"
);
create table “表名”(columns) 为创建数据库表的命令, 列的名称以及该列的数据类型将在括号内完成;
括号内声明了3列内容, id、name、phone为每列的名称, 后面跟的是数据类型描述, 列与列的描述之间用逗号(,)隔开;
以 "id intunsigned not null auto_increment primary key" 行进行介绍:
"id" 为列的名称;
"int" 指定该列的类型为 int(取值范围为 -8388608到8388607), 在后面我们又用 "unsigned" 加以修饰, 表示该类型为无符号型, 此时该列的取值范围为 0到16777215;
"not null" 说明该列的值不能为空, 必须要填, 如果不指定该属性, 默认可为空;
"auto_increment" 需在整数列中使用, 其作用是在插入数据时若该列为NULL, MySQL将自动产生一个比现存值更大的唯一标识符值。在每张表中仅能有一个这样的值且所在列必须为索引列。
"primary key" 表示该列是表的主键, 本列的值必须唯一, MySQL将自动索引该列。
下面的 char(8) 表示存储的字符长度为8, default 属性指定当该列值为空时的默认值。
向表中插入数据
insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下:
insert [into] 表名 [(列名1, 列名2, 列名3, ...)]values (值1, 值2, 值3, ...);
其中 [] 内的内容是可选的, 例如, 要给数据库中表插入一条记录, 执行语句:
insert into nlist values(NULL, "xiaoyu","138");
有时我们只需要插入部分数据, 或者不按照列的顺序进行插入, 可以使用这样的形式进行插入:
insert intostudents (name) values("xiaohua");
查询表中的数据
select 语句常用来根据一定的查询规则到数据库中获取数据, 其基本的用法为:
select列名称 from 表名称 [查询条件];
例如要查询 nlist 表中所有学生的名字和年龄, 输入语句:
select name fromnlist;
按特定条件查询:
where 关键词用于指定查询条件, 用法形式为: select 列名称 from 表名称 where 条件;
where 子句不仅仅支持 "where 列名 = 值"这种名等于值的查询形式, 对一般的比较运算的运算符都是支持的, 例如 =、>、<、>=、<、!=以及一些扩展运算符 is [not] null、in、like等等。还可以对查询条件使用 or 和 and 进行组合查询
查询电话中带有 "3" 字的所有人信息: select * from nlistwhere phone like "%3%";
更新表中的数据
update 语句可用来修改表中的数据, 基本的使用形式为:
update 表名称 set 列名称=新值 where 更新条件;
删除表中的数据
delete 语句用于删除表中的数据, 基本用法为:
delete from 表名称 where 删除条件;
创建后表的修改
添加列
基本形式: alter table 表名 add 列名 列数据类型 [after 插入位置];
修改列
基本形式: alter table 表名 change 列名称 列新名称 新数据类型;
删除列
基本形式: alter table 表名 drop 列名称;
重命名表
基本形式: alter table 表名 rename 新表名;
删除整张表
基本形式: drop table 表名;
删除整个数据库
基本形式: drop database 数据库名;