数据库MySQL
适用于中小型企业,MySQL数据库适合搭集群,单独拿一台MyCat出来管理许多子数据库
通俗地讲,数据库就是把一些数据整合到一起,其实质还只存在硬盘里
SQL语句(Structured Query Language;结构化查询语言)— 掌握语句是重点
SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。
SQL语言由3种语言组成:
- 1、DDL - 表
- 2、DML - 数据
- 3、DCL - 权限
MySQL特征:
- 性能快捷、优化SQL语言、
- 容易使用、
- 多线程 和 可靠性、
- 多用户支持、
- 可移植性 和 开发源代码,
- 遵循国际标准 和 国际化支持、
- 为多种编程语言提供API
MySQL的不足之处:
不能直接处理XML数据、一些功能上支持的不够完善和成熟、不能提供任何OLAP(实时分析系统)功能
数据库系统的使用:
数据库基础知识
数据库由一批数据构成的 有序集合,这些数据被分门别类地存放在一些结构化的 数据表(table)里,而数据表之间又往往存在交叉引用的关系,这种关系使数据库又被称为 关系型数据库
-
档案柜 <==> 数据库
-
抽屉 <==> 表
-
文件 <==> 记录
数据库:
数据表:
数据在表中的存放:
-
数据 —— DML语言 (Data Manipulation Language ;数据操作语言):
增(insert)、删(delete)、改(update)、查(select) -
权限 —— DCL语言(Data Control Language ;数据控制语言):
用来控制存储许可、存取权限
GRANT、REVOKE -
表 —— DDL语言 (Data Definition Language; 数据定义语言)
用来建立数据库,数据库对象和定义其列
00、MySQL中使用SQL语言几点说明
-
属于一个SQL语句,使用分号(;)结尾,否则mysql认为语句没有输入完
-
箭头(->)代表SQL语句没有输入完
-
取消SQL语句使用 ( \c )
-
SQL语句 关键字 和 函数名 不区分大小写(Linux区分,Windows不区分)
-
使用函数时,函数名 和 后面的括号 之间不能有空格
表的主键(PRIMARY KEY)、
唯一性 (UNIQUE)、
非空值约束(NOT NULL)、
一、数据类型种类
数值型 分为 整型 和 浮点型
- 字符串:
- 日期和时间值
存储如“2005 -1-1” 或者“12:00:00”这样的数值的值。在MySQL中日期是按”年-月-日”的顺序。
- NULL值
是一种无类型的值,表示“空,什么也没有”。
- NULL 和 NOT NULL
默认为NULL,即插入值时没有在此字段插入值时自动填NULL,如果指定了NOT NULL,则必须在插入值时在此字段添入值,不允许插入NULL值。
- DEFAULT
可以通过此属性来指定一个缺省值,即如果没有在此列添加值,那么默认添加 DEFAULT 后指定值。
- ZEROFILL
前导零填充数值类型值以达到列的显示宽度。
举例:
create table test2(num1 int default 1,num2 int zerofill);
- 字符串列类型
1、CHAR 和 VARCHAR类型
CHAR类型 和 VARCHAR类型 长度范围都是0~255之间的大小。他们之间的差别在于MySQL处理存储的方式:
CHAR 类型 把这个大小视为值的准确大小(用空格填补比较短的值)。
VARCHAR 类型 把它视为最大值并且只使用了存储字符串实际上需要的字节数(增加了一个额外的字节记录长度)。
因而,较短的值当被插入一个语句为 VARCHAR类型 的字段时,将不会用空格填补(然而,较长的值仍然被截短 )。
2、BLOB 和 TEXT类型
BLOB是二进制的对象,如果想存储二进制数 BLOB 将是最佳选择,而 TEXT与之相同,只是BOLOB按照二进制编码排序(区分大小写),TEXT按照字符文本模式排序(不区分大小写)。
3、ENUM 和 SET类型
是特殊的串类型,其列值必须从固定的串集中选择,二者差别为前者必须是只能选择其中的一个值,而后者可以多选。(不推荐使用)
二、字符串列类型的可选属性
-
BINARY
使用此属性可以使列值作为二进制串处理,即看成BLOB类型。 -
NULL 和NOT NULL
同数值型功能相同 -
DEFAULT
同数值型功能相同
说明:
每个时间和日期列类型都有一个零值,当插入 非法数值 时就用 零值 来添加
表示日期时必须先按:年,月,日的顺序给出
DATE ,TIME ,DATETIME 分别是存储日期,时间与日期和时间的组合,其格式为“YYYY-MM-DD”,“hh:mm:ss” 和 “YYYY-MM-DD hh:mm:ss”,对于 DATETIME类型,日期和时间部分都需要
TIMESTAMP
时间戳列类型以YYYYMMDDhhmmss的格式来表示值,其取值范围是19700101000000到2037年的某个时间,主要用于记录更改或创建某个记录
---------------------------------------------------------------------DDL-------------------------------------------------------------------------------------------------------------
三、创建数据库操作 ・DDL
建立数据库操作:
语法:create database 数据库名
叙述:创建一个具有指定名称的数据库。如果要创建的数据库已经存在,或者没有创建它的适当权限,则此语句失败。
例:建立一个student库。
mysql> create database student;
1.创建表
查询—>新建查询
建立表操作:
语法:
create table 表名(
列名1 列类型 [<列的完整性约束>],
列名2 列类型 [<列的完整性约束>],
... ...);
叙 述:在当前数据库下新创建一个数据表。
列类型:表示该列的数据类型。
例:
建立一个表 school, 其由两列组成,第一列属性为非空,并做为主键,并自增
create table school(
school_id int(10) not null auto_increment primary key,
school_name varchar(20)
);
CREATE TABLE stu(
Sno INT(4) PRIMARY KEY AUTO_INCREMENT, #“4”表示学号类型
Sname VARCHAR(20) UNIQUE, #“20”表示字节长
Ssex VARCHAR(4), #“4”也表示字节长
Sbirthday datetime,
Stel VARCHAR(30)
)
常见完整性约束:
PRIMARY KEY 主码约束(主键)
UNIQUE 唯一性约束
NOT NULL 非空值约束
AUTO_INCREMENT 用于整数列默认自增1
UNSIGNED 无符号整数
DEFAULT default_value 默认值约束
DEFAULT cur_timestamp 创建新记录时默认保存当前时间(仅适用timestamp数据列)
ON UPDATE cur_timestamp 修改记录时默认保存当前时间(仅适用timestamp数据列)
CHARACTER SET name 指定字符集(仅适用字符串)
数据表类型:
在创建一个新的MySQL数据表时,可以为它设置一个类型,其中最重要的 3种类型 是
MyISAM:成熟、稳定和易于管理
InnoDB:加入事物、数据行级锁定