约束

约束:给表的字段名添加限制条件;

非空约束(not null):添加非空约束后,字段值不能为null;

唯一约束(unique):添加唯一约束后,字段值不能重复;

主键约束(primary key):添加了主键约束,主键值不能为null并且不能重复;

自增:当自增字段名赋值为null时,字段值会自动增长;删除数据库数值不会减,数值会从曾经的最大值基础上+1;可以使用truncate使自增数值清零;

默认约束(default):给字段添加默认约束,当不对此字段赋值时,默认值生成;

CREATE TABLE student (id int,age default 10);

检查约束(check):在MySQL中,check约束后,语法支持,但是不生效;

外键约束:指用来建立两张表之间关系的字段,值指向另外一张表的主键,一张表主键只能有一个,但是外键可以有多个;添加外键约束后,外键的值可以为null、可以重复,但是不能使用关联表中不存在的数据,被关联的表和数据不能直接删除,需要去掉约束或先删除关联数据;

CREATE TABLE emp (id int,age int ,deptid int ‘主键id’, CONSTRAINT 外键约束用别名区分 FOREIGN KRY (外键对应的主键id) REFERENCES 主键名(字段名));

1 //建库:2 create databasedb4;3 usedb4;4 //建表:5 //部门表6 create table dept (id int primary key auto_increment,name varchar(10));7

8 //员工表9 create table emp (id int primary key auto_increment,name varchar(10),deptid int,constraint fk_dept foreign key(deptid) referencesdept(id));10 //录入值:11 insert into dept values (null,'神仙部'),(null,'妖怪部'); //成功12 insert into emp values (null,'孙悟空',1),(null,'白骨精',2); //成功13 insert into emp values (null,'尼古拉斯·赵四',3); //失败14 insert into emp values (null,'尼古拉斯·赵四',3); //成功15 //删除主键数据:16 delete from dept where id=1; //失败17

18 //删除主键表:19 drop table dept; //失败20 //通过 show create table表名; 查看约束信息21 //删除外键约束22 //格式:alter table emp drop foreign key外键约束名;23 alter table emp drop foreign key fk_dept;

myisam引擎不支持外键约束,要求两张表都是innodb引擎才能使用外键约束;

在JAVA开发中,除非特定情况,一般不使用外键约束,应为会给测试带来不便;

索引

索引是数据库中用来提高查询效率的技术,类似于字典中的目录;

为什么使用索引:如果不使用索引,数据会零散的保存在磁盘块中,查询数据需要挨个遍历每一个磁盘块,直到找到为止,使用索引后,磁盘块会以树状结构对数据进行保存,查询数据时会大大降低磁盘块的访问数量,从而提高查询效率;

索引是否越多越好?

不是,因为索引会占用磁盘空间,对常用的数据、写在查询条件后面的字段创建索引;

有索引一定好么?

不是,如果数据量小,添加索引有可能会降低查询效率;

索引的分类

聚集索引(聚簇索引):一个表只有一个索引,通过主键创建的索引称为聚集索引;数据库会自动为添加了主键约束的表增加聚集索引,在聚集索引中保存着查询依据和数据;

非聚集索引:通过非字段创建的索引称为非聚集索引,在非聚集索引中保存着查询依据和地址(没有数据);

如何创建索引

格式:CREATE INDEX 索引名 ON 表名 (字段名(长度));

CREATE INDEX index_item_title ON item(title);

如何查看索引

SHOW INDEX FROM item;

删除索引

DROP INDEX index_item_title ON item;

复合索引

通过多个字段创建的索引

应用场景:频繁使用多个字段作为查询条件的时候,可以为这几个字段创建复合索引;

格式:CREATE INDEX index_item_title ON item(title,price);

索引总结

1、索引是用来提高查询效率的技术,类似于目录;

2、因为索引会占磁盘空间,所以并非越多越好;

3、如果数据量小添加索引反而会降低查询效率;

4、索引分为聚集索引(如果添加主键自动添加聚集索引、保存数据、一个表只有一个)和非聚集索引(有多个、不保存数据、保存地址);

5、如果表中数据频繁修改尽量不要使用索引;

事务

数据库中执行SQL语句的最小工作单元,不能拆分,可以保证事务中的多条SQL语句全部成功或全部失败;

事务的ACID特性

Atomicity 原子性:最小,不可拆分,保证全部成功或全部失败;

Consistency 一致性:从一个一致状态到另一个一致状态;

Isolation 隔离性:多个事务之间互不影响;

Durability 持久性:事务提交后数据持久保存到数据库中;

事务相关指令

查看自动提交状态

SHOW VARIABLES LIKE '%autocommit%';

修改自动提交状态

SET AUTOCOMMIt=0/1;

提交

COMMIT;

回滚

ROLLBACK

设置回滚点

SAVEPOINT 别名;

回滚到指定回滚点

ROLLBACK 别名;

MySQL有几部分_数据库部分(MySql)_4相关推荐

  1. mysql begin end 用法_数据库:Mysql中“select ... for update”排他锁分析

    作者:志波同学来源:https://mp.weixin.qq.com/s/8uH-7TD9ZRG4NCya80mOHg Mysql InnoDB 排他锁 用法:select - for update; ...

  2. mysql整段注释_数据库单行注释 MySQL可以在SQL代

    MySQL可以在SQL代码中注释的.可用两个方式经行注释. 1.以" #"号开头直到行尾的所有内容都认为是注释. 2.另一种为C 风格的注释.即,以"/ *"开 ...

  3. mysql update 排他锁_数据库:Mysql中“select ... for update”排他锁分析

    Mysql InnoDB 排他锁 用法: select - for update; 例如:select * from goods where id = 1 for update; 排他锁的申请前提:没 ...

  4. mysql独有的函数_数据库之MySQL函数(一)

    一.数学函数 1.绝对值函数 ABS(x) :返回 x 的绝对值 mysql> select ABS(2),ABS(-2.3),ABS(-22); 返回的结果如下: 数学学得好的大佬应该知道(本 ...

  5. MySQL百一题库_数据库应用MySQL试题题目及答案,课程2020最新期末考试题库,章节测验答案...

    一台原价2000元的洗衣机,先降价10%&2bsp;后来又提价10%,这时价格还是2000元.______.(判断对错) 淘气有中u本课外书,笑笑有u0本课外书.求淘气的课外书比笑笑少百分之几 ...

  6. mysql 常规命令操作_常见的MySQL命令大全

    一.连接MySQL格式: mysql -h主机地址 -u用户名 -p用户密码1.例1:连接到本机上的MYSQL.首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot ...

  7. mysql 数据库命令大全_常用的MySQL数据库命令大全

    飞信2017V5.6.8860.0 官方正式版 类型:聊天其它大小:69.1M语言:中文 评分:9.6 标签: 立即下载 常用的MySQL命令大全 一.连接MySQL 格式: mysql -h主机地址 ...

  8. MySQL删除空值语句_数据库语句sql 删除空记录

    最简单删除SQL Server中所有数据的方法 原文:最简单删除SQL Server中所有数据的方法 最简单删除SQL Server中所有数据的方法   编写人:CC阿爸   2014-3-14 其实 ...

  9. mysql db模块下载_易语言MySql数据库操作类V1.0模块源码

    易语言MySql数据库操作类V1.0模块源码 易语言MySql数据库操作类V1.0模块源码 系统结构:MySql数据库连接类_测试子程序,置连接选项,连接,关闭,是否已连接,取连接句柄,置连接句柄,执 ...

  10. 【MySQL 第10章_数据库的设计规范】

    第10章_数据库的设计规范 1. 为什么需要数据库设计 2.范式 2.1范式简介 2.2范式都包括哪些 2.3 键和相关属性的概念 2.4第一范式(1st NF) 2.5 第二范式(2nd NF) 2 ...

最新文章

  1. java中JFrame类中函数addWindowListener(new WindowAdapter)
  2. Asp.net MVC4.0(net4.5) 部署到window server 2003上的解决方案
  3. bootstrap与360浏览器不兼容问题
  4. php 输出 echo、print_r、print、var_dump 、die 区别
  5. 计算机重启如何进入设置界面,win7电脑无法正常启动,一开机就进入到bios设置界面怎么办?...
  6. 5886. 如果相邻两个颜色均相同则删除当前颜色
  7. Myeclipse编译工程用Weblogic发布的时候jdk版本问题
  8. J2ME程序员容易遇到的问题!不断更新中_2008.05.17
  9. Monterey Cache Cleaner 17 for mac(苹果系统维护软件)
  10. 打印机服务器没有响应 请检查设置,打印机服务无法启动的解决办法
  11. Oracle的同义词
  12. 四色定理已利用计算机证明,四色定理的一证明过程
  13. 微信有哪些隐藏功能?实用隐藏功能合集:建小号、批量群发
  14. 你和财务自由之间,只差洋哥的这些建议!!!
  15. 信捷PLC 批量传送位 MOV DMOV QMOV
  16. SparkSql之电影案例SQL编写
  17. bootstrap3 表单构建器_Knex - 灵活轻便的 Node.js SQL 查询构建器
  18. 个人能用的短信平台有哪些?看这一篇就够了
  19. BUUCTF 派大星的烦恼
  20. 鸣人和佐助(记忆化广搜)

热门文章

  1. 5月6阴阳师服务器维护,阴阳师5月6日维护更新与优化内容一览
  2. 关于html标签的描述,关于HTML标签的描述,下列说法正确的是()。
  3. 华为云计算之远程复制
  4. python异步处理请求_python异步处理HTTP请求
  5. 第十章 软件项目收尾和验收
  6. pythoncqt_Librosa常数Q变换(CQT)在谱图的开始和结束处都存在缺陷
  7. 无线系统cad服务器,cad 设置网络服务器
  8. 脂质体挤出器故障不用慌,了解原因解决问题
  9. 从零单排Mac Pro - 软件篇
  10. 机器人--避障技术盘点