mysql再回首

Mysql与Oracle的区别

1.实例区别

  Mysql是一个轻量型数据库,开源免费。Oracle是收费的而且价格非常高。

  Mysql一个实例可以操作多个库,而Oracle一个实例只能对应一个库。

  Mysql安装完后300M而Oracle有3G左右。

2.操作区别

  主键:Mysql一般使用自动增长类型,而Oracle则需要使用序列对象。

  单引号的处理:mysql里可以用双引号包起字符串,oracle里只可以用单引号包起字符串。

  分页的sql语句:mysql用limit,而oracle使用内建视图和rownum伪列。

  事务处理:mysql默认是自动提交,而oracle默认不自动提交,需要用户CTL语言进行事务提交。

操作Mysql

mysql和oracle对于数据物理隔离机制上的区别:

  oracle装好后会有一个oracle实例还有一个库,库当中有数据文件,这数据文件在oracle中称为表空间。

    所以在Oracle装好以后,我们首先要去创建一个永久表空间,再去创建用户。随后把这个永久表空间分配给这个用户。

    接着再去创建一个用户,再给他分配一个表空间。通过表空间来实现物理隔离。

    所以说在oracle中库有一个就够了,然后我们再给他创建表空间。

  mysql是一个实例可以对应多个库,mysql当中呢没有表空间这个概念,所以说我们可以去创建不同的库,然后用户直接去操作不同的库。每个库中放着不同的数据文件。

1.创建与删除数据库

1.1.1使用命令创建数据库

create database 数据库名 default  character set字符编码;

1.1.1.1示例

创建一个test的数据库,并查看该数据库,以及该数据库的编码。

    create database  test default  character set utf-8;

创建数据库:

  create  database 库名;

查看数据库

show databases;

查看数据库编码:

select  schema_name  ,default_character_set_name  from information_schema.schemata where schema_name='test';

1.2删除数据库

 drop database 数据库名;

1.2.1.1示例

drop database test;

2.选择数据库

需要在哪个库中创建表需要先选择该数据库。

use 需要选择的库名;

2.1示例一

创建一个名称为test的数据库,编码为utf-8;

   create database test  default character set utf8; 

2.2示例二

选择该数据库;

 use test;

3.Mysql中的数据类型

3.1数值类型

Mysql支持所有准备sql数值数据类型。

作为sql标准的扩展,Mysql也支持整数类型tinyint、mediumint和bigint。

Mysql数据类型                          含义

tinyint(m)          一个字符 范围(-128- 127)

smallint(m)         2个字节 范围(-32768-  32767)

mediumint(m)        3个字节 范围(-8388608-  8388687)

int(m)            4个字节 范围(-2147483648-  2147483647)

bigint(m)           8个字节 范围(+-9.22*10的18次方)

数值类型中的长度m是指显示长度,并不显示存储长度,只有字段指定指定zerofill时有用

例如: int(3),如果实际值是2,如果列指定了zerofill,查询结果就是002,左边用0来填充。

3.2浮点型

float(m,d)       单精度浮点型  8位精度(4个字节)  m总个数,d小数位

double(m,d)      双精度浮点型  16位精度(8位) m总个数,d个小数位

3.3字符串型

char(n)  固定长度,最多255个字符

varchar(n)  可变长度,最多65535个字符

tinytext  可变长度,最多255个字符

text  可变长度,最多65535个字符

mediumtext  可变长度,最多2的24次方-1个字符

longtext    可变长度,最多2的32次方-1个字符

3.3.1char和varchar

1.char(n)若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限制于此。

2.char类型的字符串检索要比varchar类型快。

3.3.2varchar和text

1.varchar可以指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255),text是实际字符数+2个字节。

2.text类型不能有默认值。

3.varchar可直接创建索引,text创建索引要指定前多个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

3.4日期类型

   mysql数据类型                       含义

  date                                        日期2008-12-2

  time            时间‘12:25:36’

  datetime          日期时间‘2008-12-2 22:06:44’

  timestamp          自动存储记录修改时间

3.5二进制数据

1.BLOB和TEXT存储方式不同,text以文本方式存储,英文存储区分大小写,而Blob是以二进制方式存储,不分大小写。

2.BLOB存储的数据只能整体读出。

3.text可以指定字符集,BLOB不同指定字符集。

DDL语言

4.创建表与删除表

4.1创建表

  create table employees(employee_id int,last_name varchar(30),salary float(8,3))

4.2查看表

  show tables;

4.3删除表

   drop table employees;

5.修改表

5.1使用ddl语句修改表名

  alter table 旧表名    rename 新表名

5.1.1示例一

     将employees表名修改为emp。

  alter table employees rename emp;

5.2修改列名

  alter 表名  change  column  旧列名  新列名  类型

5.2.1示例

将emp表中的last_name 修改为name

alter table   employees   change  column  last_name  name varchar(30)

5.3使用ddl来修改列类型

alter table 表名 modifity 列名 新类型

5.3.1示例

将emp当中的name长度指定为49;

alter table employees  MODIFY  name varchar(40);

5.4使用ddl语句来添加列

alter table 表名 add column 新列名 类型

5.4.1示例

在emp表中添加一个新的lie为commission_pct

alter table employees add column commission_pct float(4,2)

5.5使用ddl来删除列

alter table 表名 drop  column  列名

5.5.1示例

删除emp表中的commission_pct

alter table emp drop column commsission_pct;

查询表的约束信息

show keys from table;

猜你喜欢

转载自www.cnblogs.com/wq-9/p/11572350.html