MySql

介绍:

 MySQL是和Oracle类似一款数据库产品,语法和Oracle大体相同。MySQL是一款开源的中小型数据库,而Oracle是大型的商业数据库。MySQL最初是MySQL AB公司开源的产品,08年被Sun公司收购。09年Sun被Oracle收购了。都是关系型数据库

MySQL和Oracle一样都遵循SQL语言标准的数据库,MySQL语法和Oracle大体相同,但同时MySQL扩展了自己独有的语法。

  建表语法

 create table 表名(
    列名(字段名)  数据类型 约束,
    列名(字段名)  数据类型 约束
 );

数据类型

整数 number(n) tinyint、smallint、 int 、bigint
数据类型 oracle mysql
小数 number(m,n) float,double
定长字符串 char(n) char(n)
变长字符串 varchar2(n) varchar(n)
日期 date(年月日-时分秒) date(年月日)、time(时分秒)、datetime(年月日-时分秒)

建表示例

create table t_student(
     student_id int,
     student_name varchar(20),
     age tinyint,
     score double,
     birthday datetime
);

建表语法细节补充

//只有在不存在某张表的执行,才执行建表语句,如果已经存在,不做任何操作
create table [if not exists] 表名(
    列名 数据类型 约束,
    列名 数据类型 约束,
    ...
)

//设置表的数据库引擎和编解码集
//MySQL是开源的,可以使用不同的数据库引擎
//常见引擎 MyISAM(重查询、弱事务) 5.5之前默认
          InnoDB (事务支持好,查询性能也不弱)5.5之后默认
create table [if not exists]表名(
    列名 数据类型 约束,
    列名 数据类型 约束,
    ...
)[engine = myisam|Innodb] [default charset=utf8mb4]

约束

primary key 主键约束
unique   唯一约束
not null 非空约束
注意: mysql中没有 check 检查约束
foreign key(外键列名) references 表名(列名)

示例

create table t_class(
    class_id int primary key,
    class_name varchar(20) not null unique
);

create table t_student(
    student_id int primary key,
    student_name varchar(20) not null,
    age tinyint,
    score double,
    birthday datetime,
    class_id int,
    foreign key(class_id) references t_class(class_id)
)

增删改查

//Oracle中添加主键,通过序列生成的
create sequence seq_student;
insert into t_student(seq_student.nextval,...);

//MySQL原生不支持序列,MySQL中使用auto_increment约束主键自动自增
create table t_class(
class_id int primary key auto_increment,
class_name varchar(20) not null unique
);

insert into t_class values(1,‘1910‘);
insert into t_class(class_name) values(‘1911‘);
insert into t_class values(null,‘1912‘);

select * from t_class

create table t_student(
student_id int primary key auto_increment,
student_name varchar(20) not null,
age tinyint,
score double,
birthday datetime,
class_id int,
foreign key(class_id) references t_class(class_id)
)

insert into t_student(student_name,age,score,birthday,class_id) values(‘xiaohei‘,18,100.0,now(),1);

注意:使用主键自动增长,插入语句必须显式写出要插入数据的列 或者主键列赋值为null

删(delete)

和Oracle中一模一样

改(update)

和Oracle中一模一样

查 (select)

//查询当前系统时间
Oracle: select sysdate from dual;

MySQL: select now();
       select sysdate();
       
//字符串拼接
Oracle: 拼接字符串使用 || 
MySQL:   拼接字符串使用concat(...);
        select concat(code,‘-‘,name) from country;
        select concat(‘%‘,#{查询条件},‘%‘) from 表名 

注意:MySQL默认自动提交事务。

MySQL分页 limit

select * from 表 where 条件 ... limit offset,rows;
    offset表示获取到的首行的下标 
    rows表示最多获取到的条数
    
示例:
--获取前10行
select * from country limit 0,10;
--获取11行~20行
select * from country limit 10,10;


pageNum,pageSize
offset = (pageNum-1)*pageSize
rows = pageSize

MyBatis操作MySQL

1.搭建开发环境

  1. 新建web项目

  2. 引入jar包,pom.xml中声明依赖

     <!--
    <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc</artifactId>
            <version>6.0</version>
     </dependency>-->
    <!--上面的配置替换为下面的配置-->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.48</version>
    </dependency>

    3.添加工具类+配置文件

    工具类型:MyBatisUtils.java

    配置文件:

    xxxMapper.xml

    mybatis-config.xml

    log4j.properties

    jdbc.properties 有变化

  3. jdbc.properties
    oracle:
    driverClassName=oracle.jdbc.OracleDriver
    url=jdbc:oracle:thin:@localhost:1521:xe
    user=hr
    password=hr
    
    mysql:
    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8
    user=root
    password=root
      1. 配置文件初始化

    1. 建表

    2. 实体类

    3. dao

      接口:没有变化

      实现:xxxMapper.xml中写MySQL的语句

    4. service

    5. test

    6. action+jsp

    7. 集成测试

 

MySql

上一篇:SQL语句中常用的函数及表之间的关联


下一篇:SQLSERVER完整数据库还原(简单恢复模式)