MySQL基础知识1之MySQL数据类型
MySQL数据库
数据库基本概念 Database
数据库(DB)是存放数据的仓库,只不过这些数据存在一定的关联,并按一定的格式存放在计算机上。
从广义上讲,数据不仅包含数字,还包括了文本、图像、音频、视频等
数据库管理系统(DBMS)
数据库管理系统(Database Management System)是管理数据库的软件系统,它按一定的数据模型组织数据
数据定义功能可定义数据库中的数据对象。
数据操纵功能可对数据库表进行基本操作,如插入、删除、修改、查询
数据的完整性检查功能保证用户输入的数据应满足相应的约束条件
数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据
数据库的并发控制功能使多个应用程序可在同一时刻并发地访问数据库的数据
数据库系统
数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件平台、软件平台
和与数据库有关的人员一起构成了一个完整的数据库系统
数据库基本概念
数据库管理系统根据数据模型对数据进行存储和管理,数据库管理系统采用的数据模型主要有层次模型、网状模型和关系模型
数据模型
层次模型:
以树形层次结构组织数据
网状模型:
每一个数据用一个节点表示,每个节点与其他节点都有联系,这样数据库中的所有数据
节点就构成了一个复杂的网络
数据模型
关系模型:
以二维表格(关系表)的形式组织数据库中的数据。
表格中的一行称为一个记录,一列称为一个字段,每列的标题称为字段名
如果给每个关系表取一个名字,则有n个字段的关系表的结构可表示为:关系表名(字段名1,…,字段名n),通常把关系表的结构称为关系模式
现在流行的数据库管理系统大部分为关系型数据库,如Oracle、MySQL SQLServer、DB2等
关系型数据库的标准语言是SQL(Structured Query Language,结构化查询语言)
SQL语言的功能包括4个部分
数据查询(select)
数据操纵(delete/update/insert)
数据定义(create/alter/drop)
数据控制(grant/revoke)
MySQL数据库常用命令
创建库:create database [if not exists] 库名;
创建表:
create table [if not exists] 表名
(
字段名 数据类型 [约束],
字段名 数据类型 [约束],
字段名 数据类型 [约束]
);
销毁表:drop table [if exists] 表名;
MySQL数据库的数据类型
数值类型:MySQL可以处理普通十进制的数据,也可以处理十六进制的数据。
字符串类型:MySQL中的字符型数据是用来保存字符串的。
日期和时间类型:日期和时间是一些诸如“2006-09-10”或“12:30:43”这样的值
NULL值: NULL是一种“无类型”的值
MySQL数据库常用命令
查询数据:select * from 表;
插入数据:insert into 表名[(字段名,字段名,...)] values (值,值,...);
修改数据:update 表名 set 字段名=值,字段名=值,... where 条件表达式
删除数据:delete from 表名 where 条件表达式
清空表数据:truncate table 表名;
数据库完整性及约束
主键、唯一键
数据完整性
确保数据库中包含的数据尽可能地准确和一致的数据性质
存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库
称为已丧失数据完整性。
满足数据完整性的数据的特点
数据的值正确无误
数据的存在必须确保同一个表格数据之间的和谐统一
数据的存在必须确保维护不同表格之间的数据的和谐统一
MySQL使用完整性约束防止不合法的数据进入到基表中。管理员和开发人员
可以定义完整性规则,限制数据表中的数据。
数据完整性的分类
实体完整性
实体完整性也可以称为行完整性,要求表中的每一行有一个唯一的标识符,这个标识符就是主关键字。
域完整性
域完整性又称为列完整性,指定一个数据集对某一个列是否有效和确定是否允许空值。
参照完整性
参照完整性又可以称为引用完整性。参照完整性保证主表中的数据与从表(被参照表)中数据的一致性
主键:在表中能唯一标识表的每个数据行的一个或多个表列
外键:如果一个表中的一个字段或若干个字段的组合是另一个表的主键则称该字段或字段组合为该表的外键
外键所在的表叫做子表或者从表
被参照的表叫父表或者主表
数据库完整性及约束
约束(Constraint)是在表上强制执行的数据校验规则,用于保护数据的完整性。如下:
实体完整性
unique key(唯一键)、primary key(主键)、auto_increment(自动增长)
域完整性
not null(非空)、check(检查)、default(缺失值)
参照完整性
foreign key(外键)
主键约束:primary key
表中一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,
通过它可强制表的实体完整性
创建表结构添加主键
修改表结构添加主键
主键作用
唯一的标示表中的一条记录
建立表中数据快速查找的一种机制
建立主键的原则
主键应该是唯一的
主键应该尽可能紧凑,以便提高数据库的检索能力
每一张表中都有一列,不是用来存放数据的,是用来给每行记录做标识的,
并且这列数据为主键+自动增长(auto_increment)
域完整性
唯一键约束:unique
确保某一列或者某几列的值唯一
唯一性约束约束允许列为null值
非空约束:not null
非空约束用于限定表中某些列的数据不能为空
缺失值约束:default
当插入时没有赋值,会使用默认值
检查约束:check
检查约束用于确保域完整性
目前所有的MySQL版本虽然可以定义check约束,但是没有任何意义,也就是说当前的MySQL版本是不支持check约束的
参照完整性
外键约束:foreign key
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此
可见,外键表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,
具有此外键的表被称为主表的从表
外键约束:foreign key
保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,
外键只能引用主表中的列的值或使用空值
创建:先创建主表,再创建从表
删除:先删除从表,再删除主表
数据库查询语句
基本查询语句
查询指定列和所有列
select * from stu;
select id,username,password from stu;
where添加表达式
select * from stu where age>18;
select * from stu where age between 18 and 20;
select * from stu where sex in ('男','女');
select * from stu where age>18 or username like '章%';
select * from stu where id is not null or age>18;
order by 字段
order by用于对查询得到的结果集进行排序,排序的方式有两种降序(desc),升序(asc)
select * from stu order by age;
内连接
select 字段列表 from 表a inner join 表b on 连接条件
左外连接
LEFT JOIN 会取得左表(tableA)全部记录,即使右表(tableB)并无对应匹配记录
select 字段列表 from 表a left join 表b on 连接条件
推荐阅读
-
mysql 误删除ibdata1之后的恢复方法_MySQL
-
《高性能MySQL》笔记——MySQL建表数据类型的选择
-
MySQL大批量数据插入,PHP之for不断插入时出现缓慢的解决方案及
-
MySQL之—CentOS下以RPM方式安装MySQL5.5详细介绍
-
MySQL:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY with sql_mode=only_full_group
-
codeigniter-CI 框架中如何使mysql的某个字段自加1?
-
MySQL心得10-1--事务_MySQL
-
mysql执行sql语句提示Expression #1 of ORDER BY clause is not in GROUP BY
-
MySQL 报错:#1 of ORDER BY clause is not in GROUP BY sql_mode=only_full_group_by
-
SQL在有数据情况下更改列的数据类型的方法_MySQL