数据库——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:非空约束,指定某列不为空

注意:not  null约束只能在定义表时,设置非空约束。 并且只能作用在列级别上的
------------------------------------------------------------------------------------------------------------------
约束:unique: 唯一约束,指定某列或者几列组合的数据不能重复

单列唯一约束

联合唯一约束


●  添加唯一约束 :    alter  table  表名  add  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关键字后加上要命名的名字既可

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值