MySQL数据库的概述:
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库信息增、删、查、改管理
------------------------------------------------------------------------------------------------------------------
数据库种类:
● 层次式数据库 :像树一样,一个根,多个枝干,相当于文件夹,一个文件夹下面有多个文件(文件夹),子文件(文件夹)套子文件(文件夹)
● 网络式数据库 :网状数据库,像蜘蛛网似的,纵横交错,不方便管理
● 关系式数据库 :复杂的数据结构归结为简单的二元关系(x横向与y纵向形成的相交)(常用)
------------------------------------------------------------------------------------------------------------------
DOS命令操作数据库: ( 数据库可以不区分大小写,Java必须严格区分 )
● 启动数据库服务: net start 数据库名字
● 关闭数据库服务: net stop 数据库名字
● 连接数据库: mysql -u用户名 -p密码 (如果出现welcome to mysql...表示数据库连接成功)
● 显示所有的数据库: show databases;
● 创建数据库: create database 数据库名字;
● 删除数据库: drop database 数据库名字;
● 进入指定数据库: use 数据库名;
● 显示所有的表: show tables;
● 创建表: create table 表名(字段名1 数据类型,字段名2 数据类型,...字段名n 数据类型);
● 删除表: drop table 表名;
● 查看表结构: desc 表名;
● 查询指定表的所有数据: select * from 表名;
● 退出当前连接 : quit
注意:当一条语句写完后要使用分号(英文状态)来告诉计算机这条语句结束了。在创建表时,字段与字段之间用逗号进行分隔,但是最后一个字段不需要使用逗号
------------------------------------------------------------------------------------------------------------------
表: (行和列组成)
● 行 :表示为一条数据
● 列 :表示为一个字段,每个字段用于存储不同类型的数据
------------------------------------------------------------------------------------------------------------------
数据类型: ( 整数 )
● tinyint(m) : 1字节 -128 ~ 127
● smallint(m) : 2字节 -32768 ~ 32767
● int(m) : 4字节 -21亿 ~ 21亿(常用)
● bigint(m) : 8字节
注意:m表示该字段可以表述的长度,未显示的指明长度,则为默认长度
------------------------------------------------------------------------------------------------------------------
数据类型:(浮点(小数))
● float(m,n) : 4字节 单精度
● double(m,n) : 8字节 双精度(常用)
● decimal(m,n) : 精确到小数点后的位数
注意:m表示该字段总共多少长度,n表示保留多少位小数。未显示的指明长度,则为默认长度,当指明了总长度时,必须指明保留多少小数位
------------------------------------------------------------------------------------------------------------------
数据类型:(文本(字符串))
● char(m) : 0 ~ 255
● varchar(m) : 0 ~ 65535(常用)
● nvarchar(m) : 比varchar的长度还长
● text : 存储长文本,指大小大于8kb的文件
● blob : 用于存储二进制大文件(电影,图片,文件之类)
注意:m表示该字段可以表述的长度,未显示的指明长度,则为默认长度。当使用char类型定义时,如果赋予了长度,但是没有赋值,或者写入值的长度小于赋予的长度,会使用空格进行填充
------------------------------------------------------------------------------------------------------------------
数据类型:(时间日期)
● date : 表示日期 1000-1-1 ~ 9999-12-31
● time : 表示时间 00:00:00 ~ 23:59:59
● datetime : 表示日期时间 1000-1-1 00:00:00 ~ 9999-12-31 23:59:59(常用)
------------------------------------------------------------------------------------------------------------------
修改表结构:
● 增加列: alter table 表名 add 新列名 数据类型;
● 删除列: alter table 表名 drop 列名;
● 修改列名: alter table 表名 change 旧列名 新列名 数据类型;
● 修改列的类型: alter table 表名 modify 列名 新的类型;
● 修改表名: alter table 旧表名 rename 新表名; 或者写为:rename table 旧表名 to 新表名;
------------------------------------------------------------------------------------------------------------------
SQL语句分类:
● DDL (数据定义语言):create、drop、alter等,定义库或者表结构的语句
● DML (数据操作语言):select、insert、update、delete等,操作表中的记录的语句
● TCL (事物管理语言):commit、savepoint、roolback
● DCL (数据控制语言):权限管理语句
------------------------------------------------------------------------------------------------------------------
约束:(not null:非空约束,指定某列不为空)
注意:not null约束只能在定义表时,设置非空约束。 并且只能作用在列级别上的
------------------------------------------------------------------------------------------------------------------
约束:(unique: 唯一约束,指定某列或者几列组合的数据不能重复)
● 修改唯一性约束: alter table 表名 modify 字段名 数据类型 unique;
● 删除约束 : alter table 表名 drop index 字段名;
注意:unique不会约束null值,只会约束写入的值
------------------------------------------------------------------------------------------------------------------
约束:(primary key:主键约束,指定某列或者几列组合的数据唯一并且非空)
● 添加主键 : alter table 表名 add primary key(单个字段名(多个字段使用逗号分隔));
● 修改列为主键 : alter table 表名 modify 字段名 数据类型 primary key;
● 删除主键约束 : alter table 表名 drop primary key;
注意:主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键(与联合唯一约束用法相同),它保证着表结构的完整性,能加快数据库的操作速度。表的记录必须有唯一区分的字段。主键主要是用于其他表的外键关联,以及本记录的修改与删除。一个表只能有一个primary key约束,而且约束中的列不能接受空值(未写入时的null与写入的null没办法比较)。由于primary key约束确保唯一的数据,所以经常用来定义标识列。复合主键定义的字段都不能存在null值,拼接后的值不重复
------------------------------------------------------------------------------------------------------------------
● 在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值
● 列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列
注意:如果不使用自增长需要自行输入主键值。主键列是可以使用字符串作为类的类型的,但是如果要使用自增长,该列必须为整数类型
------------------------------------------------------------------------------------------------------------------
默认值: ( default )
------------------------------------------------------------------------------------------------------------------
约束:(foreign key:外键,指定该列记录属于主表中的一条记录)
如果一张表中有一个非主键的字段指向了别一张表中的主键,就将该字段叫做外键。一张表中可以有多个外键
● 添加外键: alter table 表名 add foreign key (外键字段名) references 主表名 (主表中的主键列);
注意:外键与主键的数据类型要相同。外键的长度可以比主键的长,但是不能比主键少。外键字段名与主键字段名可以不同。关联的主表中的列,必须是主键列。当前表中的外键字段的值,必须在主表存在(已知A、B两个班,甲同学要么还没分班(null),要么只能为A、B班其中一个)
------------------------------------------------------------------------------------------------------------------
外键的默认作用有两点:
● 对子表(外键所在的表)的作用 :子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败
● 对父表的作用 :对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败
------------------------------------------------------------------------------------------------------------------
外键的三种约束模式:
● district : 严格模式(默认), 父表不能删除或更新一个被子表引用的记录
● cascade :级联模式, 父表操作后,子表关联的数据也跟着一起操作
● set null :置空模式,前提外键字段允许为null,父表操作后,子表对应的字段被置空
------------------------------------------------------------------------------------------------------------------
使用外键的前提:
● 表储存引擎必须是innodb,否则创建的外键无约束效果
● 外键的列类型必须与父表的主键类型完全一致
● 外键的名字不能重复
● 已经存在数据的字段被设为外键时,必须保证字段中的数据与父表的主键数据对应起来
------------------------------------------------------------------------------------------------------------------
约束: ( check:检查,指定一个表达式,用于检验指定数据 )
注意:check约束,在mysql中设置后无效果,check 也不约束null的值
● 一对一 :人与身份证(一个人只有一个身份证)
● 一对多 :班级与学生(一个班级有许多个学生)
● 多对多 :学生与课程(一个学生有多门课程,一门课程有很多个学生学习)
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库信息增、删、查、改管理
------------------------------------------------------------------------------------------------------------------
数据库种类:
● 层次式数据库 :像树一样,一个根,多个枝干,相当于文件夹,一个文件夹下面有多个文件(文件夹),子文件(文件夹)套子文件(文件夹)
● 网络式数据库 :网状数据库,像蜘蛛网似的,纵横交错,不方便管理
● 关系式数据库 :复杂的数据结构归结为简单的二元关系(x横向与y纵向形成的相交)(常用)
------------------------------------------------------------------------------------------------------------------
DOS命令操作数据库: ( 数据库可以不区分大小写,Java必须严格区分 )
● 启动数据库服务: net start 数据库名字
● 关闭数据库服务: net stop 数据库名字
● 连接数据库: mysql -u用户名 -p密码 (如果出现welcome to mysql...表示数据库连接成功)
● 显示所有的数据库: show databases;
● 创建数据库: create database 数据库名字;
● 删除数据库: drop database 数据库名字;
● 进入指定数据库: use 数据库名;
● 显示所有的表: show tables;
● 创建表: create table 表名(字段名1 数据类型,字段名2 数据类型,...字段名n 数据类型);
● 删除表: drop table 表名;
● 查看表结构: desc 表名;
● 查询指定表的所有数据: select * from 表名;
● 退出当前连接 : quit
注意:当一条语句写完后要使用分号(英文状态)来告诉计算机这条语句结束了。在创建表时,字段与字段之间用逗号进行分隔,但是最后一个字段不需要使用逗号
------------------------------------------------------------------------------------------------------------------
表: (行和列组成)
● 行 :表示为一条数据
● 列 :表示为一个字段,每个字段用于存储不同类型的数据
------------------------------------------------------------------------------------------------------------------
数据类型: ( 整数 )
● tinyint(m) : 1字节 -128 ~ 127
● smallint(m) : 2字节 -32768 ~ 32767
● int(m) : 4字节 -21亿 ~ 21亿(常用)
● bigint(m) : 8字节
注意:m表示该字段可以表述的长度,未显示的指明长度,则为默认长度
------------------------------------------------------------------------------------------------------------------
数据类型:(浮点(小数))
● float(m,n) : 4字节 单精度
● double(m,n) : 8字节 双精度(常用)
● decimal(m,n) : 精确到小数点后的位数
注意:m表示该字段总共多少长度,n表示保留多少位小数。未显示的指明长度,则为默认长度,当指明了总长度时,必须指明保留多少小数位
------------------------------------------------------------------------------------------------------------------
数据类型:(文本(字符串))
● char(m) : 0 ~ 255
● varchar(m) : 0 ~ 65535(常用)
● nvarchar(m) : 比varchar的长度还长
● text : 存储长文本,指大小大于8kb的文件
● blob : 用于存储二进制大文件(电影,图片,文件之类)
注意:m表示该字段可以表述的长度,未显示的指明长度,则为默认长度。当使用char类型定义时,如果赋予了长度,但是没有赋值,或者写入值的长度小于赋予的长度,会使用空格进行填充
------------------------------------------------------------------------------------------------------------------
数据类型:(时间日期)
● date : 表示日期 1000-1-1 ~ 9999-12-31
● time : 表示时间 00:00:00 ~ 23:59:59
● datetime : 表示日期时间 1000-1-1 00:00:00 ~ 9999-12-31 23:59:59(常用)
------------------------------------------------------------------------------------------------------------------
修改表结构:
● 增加列: alter table 表名 add 新列名 数据类型;
● 删除列: alter table 表名 drop 列名;
● 修改列名: alter table 表名 change 旧列名 新列名 数据类型;
● 修改列的类型: alter table 表名 modify 列名 新的类型;
● 修改表名: alter table 旧表名 rename 新表名; 或者写为:rename table 旧表名 to 新表名;
------------------------------------------------------------------------------------------------------------------
SQL语句分类:
● DDL (数据定义语言):create、drop、alter等,定义库或者表结构的语句
● DML (数据操作语言):select、insert、update、delete等,操作表中的记录的语句
● TCL (事物管理语言):commit、savepoint、roolback
● DCL (数据控制语言):权限管理语句
------------------------------------------------------------------------------------------------------------------
约束:(not null:非空约束,指定某列不为空)
注意:not null约束只能在定义表时,设置非空约束。 并且只能作用在列级别上的
------------------------------------------------------------------------------------------------------------------
约束:(unique: 唯一约束,指定某列或者几列组合的数据不能重复)
单列唯一约束:
联合唯一约束:
● 修改唯一性约束: alter table 表名 modify 字段名 数据类型 unique;
● 删除约束 : alter table 表名 drop index 字段名;
注意:unique不会约束null值,只会约束写入的值
------------------------------------------------------------------------------------------------------------------
约束:(primary key:主键约束,指定某列或者几列组合的数据唯一并且非空)
● 添加主键 : alter table 表名 add primary key(单个字段名(多个字段使用逗号分隔));
● 修改列为主键 : alter table 表名 modify 字段名 数据类型 primary key;
● 删除主键约束 : alter table 表名 drop primary key;
注意:主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键(与联合唯一约束用法相同),它保证着表结构的完整性,能加快数据库的操作速度。表的记录必须有唯一区分的字段。主键主要是用于其他表的外键关联,以及本记录的修改与删除。一个表只能有一个primary key约束,而且约束中的列不能接受空值(未写入时的null与写入的null没办法比较)。由于primary key约束确保唯一的数据,所以经常用来定义标识列。复合主键定义的字段都不能存在null值,拼接后的值不重复
------------------------------------------------------------------------------------------------------------------
标识列特点:(又叫自增列。auto_increment:和主键配合使用,使主键成为自增长)
● 在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值
● 列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列
注意:如果不使用自增长需要自行输入主键值。主键列是可以使用字符串作为类的类型的,但是如果要使用自增长,该列必须为整数类型
------------------------------------------------------------------------------------------------------------------
默认值: ( default )
------------------------------------------------------------------------------------------------------------------
约束:(foreign key:外键,指定该列记录属于主表中的一条记录)
如果一张表中有一个非主键的字段指向了别一张表中的主键,就将该字段叫做外键。一张表中可以有多个外键
● 添加外键: alter table 表名 add foreign key (外键字段名) references 主表名 (主表中的主键列);
注意:外键与主键的数据类型要相同。外键的长度可以比主键的长,但是不能比主键少。外键字段名与主键字段名可以不同。关联的主表中的列,必须是主键列。当前表中的外键字段的值,必须在主表存在(已知A、B两个班,甲同学要么还没分班(null),要么只能为A、B班其中一个)
------------------------------------------------------------------------------------------------------------------
外键的默认作用有两点:
● 对子表(外键所在的表)的作用 :子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败
● 对父表的作用 :对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败
------------------------------------------------------------------------------------------------------------------
外键的三种约束模式:
● district : 严格模式(默认), 父表不能删除或更新一个被子表引用的记录
● cascade :级联模式, 父表操作后,子表关联的数据也跟着一起操作
● set null :置空模式,前提外键字段允许为null,父表操作后,子表对应的字段被置空
------------------------------------------------------------------------------------------------------------------
使用外键的前提:
● 表储存引擎必须是innodb,否则创建的外键无约束效果
● 外键的列类型必须与父表的主键类型完全一致
● 外键的名字不能重复
● 已经存在数据的字段被设为外键时,必须保证字段中的数据与父表的主键数据对应起来
------------------------------------------------------------------------------------------------------------------
约束: ( check:检查,指定一个表达式,用于检验指定数据 )
注意:check约束,在mysql中设置后无效果,check 也不约束null的值
------------------------------------------------------------------------------------------------------------------
约束:(constraint:给约束字段起别名)
注意: 起别名只需在constraint关键字后加上要命名的名字既可
------------------------------------------------------------------------------------------------------------------
表与表之间的关系:● 一对一 :人与身份证(一个人只有一个身份证)
● 一对多 :班级与学生(一个班级有许多个学生)
● 多对多 :学生与课程(一个学生有多门课程,一门课程有很多个学生学习)
------------------------------------------------------------------------------------------------------------------
自己整理,有些地方是扒拉的,如有侵犯,还望告知