数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)

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:非空约束,指定某列不为空
数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)
注意:not  null约束只能在定义表时,设置非空约束。 并且只能作用在列级别上的
------------------------------------------------------------------------------------------------------------------
约束:unique: 唯一约束,指定某列或者几列组合的数据不能重复

单列唯一约束

数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)

联合唯一约束

数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)

●  添加唯一约束 :   alter  table  表名  add  unique(单个字段名(多个字段使用逗号分隔)); 
●  修改唯一性约束:alter  table  表名  modify  字段名  数据类型  unique; 
●  删除约束 :        alter  table  表名  drop  index  字段名;
注意:unique不会约束null值,只会约束写入的值
------------------------------------------------------------------------------------------------------------------
约束:primary  key:主键约束,指定某列或者几列组合的数据唯一并且非空
数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)
●  添加主键 :      alter  table  表名  add  primary  key(单个字段名(多个字段使用逗号分隔));   
●  修改列为主键 :alter  table  表名  modify  字段名  数据类型   primary  key; 
●  删除主键约束 :alter  table  表名  drop  primary  key;   
注意:主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键(与联合唯一约束用法相同),它保证着表结构的完整性,能加快数据库的操作速度。表的记录必须有唯一区分的字段。主键主要是用于其他表的外键关联,以及本记录的修改与删除。一个表只能有一个primary  key约束,而且约束中的列不能接受空值(未写入时的null与写入的null没办法比较)。由于primary  key约束确保唯一的数据,所以经常用来定义标识列。复合主键定义的字段都不能存在null值,拼接后的值不重复
------------------------------------------------------------------------------------------------------------------

标识列特点:又叫自增列。auto_increment:和主键配合使用,使主键成为自增长

数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)

●  列的数据类型为不带小数的数值类型
●  在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值
●  列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列
注意:如果不使用自增长需要自行输入主键值。主键列是可以使用字符串作为类的类型的,但是如果要使用自增长,该列必须为整数类型
------------------------------------------------------------------------------------------------------------------
默认值:default
数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)
------------------------------------------------------------------------------------------------------------------
约束:foreign  key:外键,指定该列记录属于主表中的一条记录
如果一张表中有一个非主键的字段指向了别一张表中的主键,就将该字段叫做外键。一张表中可以有多个外键
数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)
●  添加外键:alter  table  表名  add  foreign  key (外键字段名)  references  主表名 (主表中的主键列);
注意:外键与主键的数据类型要相同。外键的长度可以比主键的长,但是不能比主键少。外键字段名与主键字段名可以不同。关联的主表中的列,必须是主键列。当前表中的外键字段的值,必须在主表存在(已知A、B两个班,甲同学要么还没分班(null),要么只能为A、B班其中一个)
------------------------------------------------------------------------------------------------------------------
外键的默认作用有两点:
●  对子表(外键所在的表)的作用:子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败
●  对父表的作用:对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败
------------------------------------------------------------------------------------------------------------------
外键的三种约束模式:
●  district:  严格模式(默认), 父表不能删除或更新一个被子表引用的记录
●  cascade:级联模式, 父表操作后,子表关联的数据也跟着一起操作
●  set  null:置空模式,前提外键字段允许为null,父表操作后,子表对应的字段被置空
------------------------------------------------------------------------------------------------------------------
使用外键的前提:
●  表储存引擎必须是innodb,否则创建的外键无约束效果
●  外键的列类型必须与父表的主键类型完全一致
●  外键的名字不能重复
●  已经存在数据的字段被设为外键时,必须保证字段中的数据与父表的主键数据对应起来
------------------------------------------------------------------------------------------------------------------
约束:check:检查,指定一个表达式,用于检验指定数据
数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)
注意:check约束,在mysql中设置后无效果,check 也不约束null的值

------------------------------------------------------------------------------------------------------------------

约束:constraint:给约束字段起别名
数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)
注意: 起别名只需在constraint关键字后加上要命名的名字既可

------------------------------------------------------------------------------------------------------------------

表与表之间的关系:
●  一对一:人与身份证(一个人只有一个身份证)
●  一对多:班级与学生(一个班级有许多个学生)
●  多对多:学生与课程(一个学生有多门课程,一门课程有很多个学生学习)

------------------------------------------------------------------------------------------------------------------

自己整理,有些地方是扒拉的,如有侵犯,还望告知