MySQL是最流行的、开源的关系型数据库管理系统,有瑞典MySQL AB公司开发,在WEB 应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)
数据库
数据库( DataBase , DB)
是长期存储在计算机中,按照数据结构有组织,可共享的大量数据资源的集合,是一个数据的仓库;
每个数据库都有一个或多个不同的API用于创建、访问、管理、搜索、和复制所保存的数据;
使用关系型数据库管理系统(RDBMS)来存储和管理的大量数据。所谓关系型数据库,是建立在关系模型的基础上的数据库,是借助于集合代数等高等数学概念和方法来处理数据库中的数据;
RDBMS的特点:
- 数据以表格的形式出现
- 每行为各种记录名称
- 每行为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
关系型数据库(SQL)
- MySQL、Oracle、SQL Server、SQLite、DB2、Access等
- 关系数据库库是通过外键关联来建立表与表之间的联系
非关系型数据库(NoSQL : Not Only SQL)
NoSQL意为不仅仅是SQL(Structured QueryLanguage,结构化查询语言)
NoSQL最初是在 1998年,由Carlo Storzzi最早开发的个轻量、开源、不兼容SQL 功能的关系型数据库
NoSQL描述的是大量结构化数据存储方法的集合,根据结构化方法以及应用场合的不同,主要可以将NoSQL分为以下几类。
数据库的创建
创建数据库:CREATE DATABASE ` 数据库名 ` ;
删除数据库:DROP DATABASE ` 数据库名 ` ;
刷新数据库:SHOW DATABASES ;
使用数据库:USE ` 数据库名 ` ;
数据表的创建
创建数据表需要:
- 表名
- 表字段名
- 定义每个表字段
1 create table `表名`( 2 `字段名` 列类型 [属性] [索引] [注释] , 3 `字段名` 列类型 [属性] [索引] [注释] , 4 `字段名` 列类型 [属性] [索引] [注释] , 5 ............ 6 `字段名` 列类型 [属性] [索引] [注释] , 7 )[表类型][表字符集][注释];
实例
创建一个学生的个人信息,学生表(列,字段)
在建表之前一定要先确立数据库
1 CREATE DATABASE `students`; 2 3 CREATE TABLE `students`.`student`( 4 `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名', 5 `sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别', 6 `birthday` DATETIME DEFAULT NULL COMMENT '生日', 7 `address` VARCHAR(100) DEFAULT NULL COMMENT '地址', 8 `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱', 9 PRIMARY KEY (`name`) ) 10 ENGINE=INNODB 11 CHARSET=utf8 COLLATE=utf8_general_ci;
使用命令行操作数据库:
删除数据表:drop table `表名`;
删除表内数据(不保存表结构):delete from `表名` where 删除条件;
清除表内数据(保存表结构):用 truncate :truncate table `表名`;
修改数据表
修改表名 | ALTER TABLE 旧表名 RENAME AS 新表名 |
添加字段 | ALTER TABLE 表名 ADD 字段名 列属性 [属性] |
修改字段 | ALTER TABLE 表名 MODIFY 字段名 列属性[属性] ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性 [属性] |
删除字段 | ALTER TABLE 表名 DROP 字段名 |
数据类型
数据类型中包含数值类型、字符串类型、日期和时间类型、字符串类型;
- 数值类型
MySQL中支持所有的标准的数值数据类型
BIT数据类型保存为字段值,并且支持MyISAM、MEMORY、InnoDB、和BDB表。
- 日期和时间类型
表示时间值的日期和时间类型为DataTime、Date、TimeStamp、Time和Year。
每个时间类型都有一个有效值范围和一个“零”值,当指定不合法的MySQL不能表示的值时使用“零”值;
数据库查询
名称 | 解释 | 命令 |
DDL(数据定义语言) | 定义和管理数据对象,如数据库,数据表等 | create、drop、alter |
DML(数据操作语言) | 用于操作数据库对象中所包含的数据 | insert、update、delete |
DQL(数据查询语言) | 用于查询数据库数据 | select |
DCL(数据控制语言) | 用于管理数据库的语言,包括管理权限及数据更改 | grant、commit、rollback |
查看数据库定义 | SHOW CREATE DATABASE students; |
查看数据表的定义 | SHOW CREATE TABLE student; |
显示表结构 | DESC student; |
设置严格检查模式 | SET sql_mode=' strict_tables'; |
MySQL的数据管理
UPDATE 更新数据 ( INSERT 插入数据、 DELETE 删除数据、 SELECT 查询数据)
USE students; SELECT * FROM student;
数据插入
MySQL 表中使用了 INSERT INTO SQL语法
方式1
INSERT INTO 表名 (字段1, 字段2,字段3...)
VALUES
(' 值1 ','值2','值3'...);
- 在INTO 字句中指出了表名 student,并指出了新增加的元组与哪些属性上要赋值,属性的顺序可以与 TABLE 表中的顺序不一样。
- VALUES 字句对新元组中的属性赋值,字符串常数要用单引号(英文符号)括起来;
实例
INSERT INTO student (NAME,sex)
VALUES
('李四','男');
以上代码编译运行的结果如下:
方式2:
INSERT INTO 表名
VALUES
(' 值1 ','值2','值3'...);
- INTO 字句中只指出表名,没有指出属性名,这表明新元组中要在表中所有的属性列都要指定值,属性列的值要求与 TABLE 表中的顺序相同;
- VALUES 字句对新元组的各属性列赋值,注意所赋的值要与属性列一致;
INSERT INTO student VALUES ('王五','男','1996.06.03','陕西','1249192060@qq.com');
结果如下图所示:
删除数据
删除语句的一般的格式为:
DELETE
FROM 表名
WHERE 条件;
方式1 删除某一元组的值
1 DELETE 2 FROM student 3 WHERE NAME='李四';
以上编译运行的结果如下图所示:
方式2 删除多个元组的值
DELETE FROM student ;
这条DELETE 语句将使student表成为空表,它删除了student表内的所有元素;
以上编译运行的结果如下图所示:
数据查询
DQL( Data Query Language 数据查询语言 )
- 查询数据库数据 , 如SELECT语句
- 简单的单表查询或多表的复杂查询和嵌套查询
- 是数据库语言中最核心,最重要的语句
语法
以下为在MySQL数据库中查询数据通用的 SELECT 语法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause] [LIMIT N][ OFFSET M]
- 查询语句可以是一个或者是多个表,表之间用逗号隔开,并使用where语句来设定查询的条件;
- select 命令可以读取一条或者多条记录;
- 可以使用 星号(*)代替其他的字段,SELECT语句返回所有的字段数据;
- 可以使用where语句包含任意的条件;
读取数据表:
select * from student; //查询表中所有的数据
DISTINCT关键字的使用
作用 : 去掉SELECT查询返回的记录结果中重复的记录(返回所有列的值都相同),只返回一条
where 条件语句:
- 检索数据表中符合条件的记录;
- 搜索条件可以有一个或多个逻辑表达式组成;
- where语句也可以用在SQL的DELETE或者UPDATE命令;
- where语句类似于if条件,根据MySQL表中的字段值来读取指定的数据;
- 如果使用主键作为where字句的条件查询是非常快速的;
视图:
视图是由一个或几个基本表导出的表,他与基本表不同,是一个虚表。
视图一旦定义了就可以和基本表一样被查询,被删除,也可以在视图上在定义视图,但会对视图的更新(增,删,改)操作有一定的限制;
建立视图
CREATE VIEW 视图名
AS
[WITH CHECK OPTION];
[WITH CHECK OPTION];表示的是对视图进行增、删、改操作时要保证更新、插入或删除的行满足视图定义中的谓词条件;