MySQL 总结篇 [在Oracle基础上学习的MySQL]
程序员文章站
2022-05-15 14:22:11
一、学习环境MySQL 5.7社区版Navicat for MySQL百度网盘下载链接:https://pan.baidu.com/s/1yGnznwoZ8CaMgrCsDBhKAQ二、MySQL 与 Oracle 的区别实例区别:MySQL 是轻量型数据库,开源免费。Oracle 是收费的而且价格... ......
一、学习环境
- mysql 5.7社区版
- navicat for mysql
- 百度网盘下载链接:https://pan.baidu.com/s/1ygnznwoz8camgrcsdbhkaq
二、mysql 与 oracle 的区别
实例区别:
- mysql 是轻量型数据库,开源免费。
- oracle 是收费的而且价格非常高。
- mysql 一个实例可以操作多个库,而 oracle 一个实例只能对应一个库。
- mysql 安装完后 300m 而 oracle 有 3g 左右。
操作区别:
- 主键: mysql 一般使用自动增长类型,而 oracle 则需要使用序列对象。
- 单引号的处理: mysql 里可以用双引号包起字符串,oracle 里只可以用单引号包 起字符串。
- 分页的 sql 语句: mysql 用 limit,而 oracle 需要使用内建视图和 rownum 伪列。
- 事务处理:mysql 默认是自动提交,而 oracle 默认不自动提交,需要用户 ctl 语言 进行事务提交。
【注意】:在 mysql 中,默认情况下,事务是自动提交的,也就是说,只要执行一条 dml 语句 就开启了事物,并且提交了事务
三、常用命令
- 创建数据库:create database 数据库名 default character set 字符编码
- 查看数据库:show databases;
- 查看数据库源码:select schema_name,default_character_set_name from information_schema.sch emata where schema_name = ‘test’;
- 删除数据库:drop database 数据库
- 选择数据库:use 需要选择的库的名称
- 修改表名:alter table 旧表名 rename 新表名
- 修改列名:alter table 表名 change column 旧列名 新列名 类型
- 修改列的类型:alter table 表名 modify 列名 新类型
- 添加列:alter table 表名 add column 新列名 类型
- 删除列:alter table 表名 drop column 列名
- 修改表实现约束添加或删除:alter table 表名 [add|drop] 约束(列名)
- 添加有名字的约束:alter table 表名 add constraint 约束名 约束(列名)
- 删除有名字的约束:alter table 表名 drop key 约束名
- 修改列为添加自动增长:alter table 表名 modify 列名 类型 auto_increment
- 添加外键约束:alter table 表名 add constraint 约束名 foreign key(列名) references 参照的表名(参照的列名)
- 删除外键索引(索引名与约束名相同):alter table 表名 drop index 索引名
- 更新数据:update 表名 set 列名 = 值,列名 = 值 where 条件
- 删除数据:delete from 表名 where 条件
- 清空表的数据(自动增长的数字被置为1):truncate table 表名
- 关闭mysql 的事务自动提交:start transaction dml… commit|rollback
四、易忘知识总结
- dml、ddl、dcl的区别:
- dml:(data manipulation language)数据操纵语言,就是最常用到的select、update、insert、delete
- ddl:(data definition language)数据库定义语言,创建表或视图等等,create,alter,drop等等。ddl主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上
- dcl:data control language)数据控制语言,是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。这个比较少用到。
2.检查约束:目前mysql不支持、oracle支持
3.insert 插入数据的时候,主键的那个位置一般是自增长的,所以选择全插入时,可以采用【default,0,null】进行占位。
4.自动增长的列:一个表只能有一个列有,类型必须时整数类型,只能添加到具备主键约束与唯一性约束的列上。删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然 后在删除约束。
5.delete 与 truncate 的区别
- truncate 是整体删除(速度较快), delete 是逐条删除(速度较慢);
- truncate 不写服务器 log,delete 写服务器 log,也就是 truncate 效率比 delete 高的原因;
- truncate 是会重置自增值,相当于自增列会被置为初始值,又重新从 1 开始记录,而 不是接着原来的值。而 delete 删除以后,自增值仍然会继续累加。
6.mysql中并不支持||作为连字符,需要使用concat函数。在参数数量上与oracle的concat 函数有区别。()
还在更新中。。。
推荐阅读
-
对MySql经常使用语句的全面总结(必看篇)
-
MySQL 总结篇 [在Oracle基础上学习的MySQL]
-
MySQL的统计信息学习总结
-
oracle数据库迁移到MySQL的方法总结
-
非空校验在oracle和mysql中的用法
-
Mysql学习总结第二篇
-
Nodejs的学习Ⅳ(静态与动态服务器的简单搭建、npm的上传包、在公网上部署服务器、MySQL的安装)
-
MySQL 学习总结 之 初步了解 InnoDB 存储引擎的架构设计
-
mybatis针对oracle和mysql高效率批量插入的解决方案 - mybatis经典案例(无敌篇)
-
sqlserver、Mysql、Oracle三种数据库的优缺点总结