zoukankan      html  css  js  c++  java
  • Day02----MySql

    1、常见数据库

    oracle:和Java兼容性很好,适合中大型应用

    sql server:window平台应用非常广泛,和C#,.net平台兼容非常好

    DB2:IBM服务器 --> UNIX --> DB2 --> Websphere

    Mysql:关系型数据库,免费,和Java语言兼容性非常好,适合中小型应用

    MongoDB:非关系型数据库

    2、Mysql数据库

    2.1、管理数据库

    增加:create database 数据库 default character utf-8

    删除:drop database 数据库

    修改:alter database 数据库 default character gbk

    查询:show databases / show create database 数据库

    2.2、管理表

    增加:create table 表 (字段名1 字段类型,字段名2 字段类型……);

    删除:drop table 表;

    修改:alter table 表 rename [to] 新表名

    查询:show tables / desc student;

    2.3、数据管理

    增加:insert into 表(字段1,字段2,…) values (值1,值2,…)

    删除:delete from 表 where 条件;

    修改:update 表 set 字段=值 where 条件;

    查询:select * from 表;

    2.4、sql语句分类

    DDL:数据定义语言(create,drop,alert)

    DML:数据操作语言(insert,delete,update,truncate)

    DQL:数据查询语言(select,show)

    3.数据约束

    3.1、默认值default:对默认值字段可以插入null 

    3.3、非空not null:非空字符不能赋null

    3.3、主键primary key:非空+唯一 (unique)

    3.4、自增长:id int(4) zerofill primary key auto_increment

    3.5、外键

    部门表(主表)

    员工表(从表/副表):constraint  外键名称  foreign key (外键(从表)) references  主表(参考字段)

    添加数据:先添加主表,再添加副表

    修改数据:先修改副表,在修改主表

    删除数据:先删除副表,再删除主表

    3.6、级联操作(在外键基础上使用)

    级联修改:on update cascade

    级联删除:on delete cascade

    4、关联查询(多表查询)

    内连接查询:inner join  on

    左外连接查询:left outer join on 使用左边表的数据去匹配右边表的数据,左表的数据一定会显示完成

    右外连接查询:right outer join on 使用右边表的数据去匹配左边表的数据,右表的数据一定会完成显示

    自连接查询

    5、存储过程:带有逻辑的sql语句,相当于创建了一个快捷方式,有需要时直接使用

    执行效率非常快,是在数据库的服务器端执行的;移植性很差,不同数据库的存储过程不能移植

    5.1、存储过程语法

    创建存储过程

    delimiter $            声明存储过程的结束符

    create procedure 名称(参数)   存储过程名称(参数列表)

    begin              开始

      sql语句            sql语句+流程控制

    end $              结束

    执行存储过程

    call 名称(参数)

    5.2、参数:

    in输入参数,携带数据到存储过程中

    DELIMITER $
    CREATE PROCEDURE pro_findById(IN eid INT)  -- IN: 输入参数
    BEGIN
        SELECT * FROM employee WHERE id=eid;
    END $
    -- 调用
    CALL pro_findById(4);

    out输出参数,从存储过程中返回结果

    DELIMITER $
    CREATE PROCEDURE pro_testOut(OUT str VARCHAR(20))  -- OUT:输出参数
    BEGIN
        SET str='helljava';       -- 给参数赋值
    END $
    
    -- 删除存储过程
    DROP PROCEDURE pro_testOut;

    MySQL的变量

    全局变量(内置变量):

    show variables    查看所有全局变量

    select @@变量名          查看某个全局变量

    set 变量名=新值             修改全局变量

    会话变量:只存在于当前客户端与数据库服务端的一次连接中,如果连接断开,会话变量全部丢失

    set @变量=值     定义会话变量

    select @变量      查看会话变量

    局部变量:在存储过程中使用,存储过程执行完,变量丢失

    inout输入输出参数,既可以输入又可以输出

    DELIMITER $
    CREATE PROCEDURE pro_testInOut(INOUT n INT)  -- INOUT: 输入输出参数
    BEGIN
       -- 查看变量
       SELECT n;
       SET n =500;
    END $
    
    -- 调用
    SET @n=10;
    
    CALL pro_testInOut(@n);
    SELECT @n;

    6、触发器

    当操作某张表时,希望同时触发一些动作、行为

    -- 创建触发器(添加)
    CREATE TRIGGER tri_empAdd AFTER INSERT ON employee FOR EACH ROW    -- 当往员工表插入一条记录时
         INSERT INTO test_log(content) VALUES('员工表插入了一条记录');
         
    -- 插入数据
    INSERT INTO employee(id,empName,deptId) VALUES(7,'扎古斯',1);
    INSERT INTO employee(id,empName,deptId) VALUES(8,'扎古斯2',1);
    
    -- 创建触发器(修改)
    CREATE TRIGGER tri_empUpd AFTER UPDATE ON employee FOR EACH ROW    -- 当往员工表修改一条记录时
         INSERT INTO test_log(content) VALUES('员工表修改了一条记录');
         
     -- 修改
     UPDATE employee SET empName='eric' WHERE id=7;
     
    -- 创建触发器(删除)
    CREATE TRIGGER tri_empDel AFTER DELETE ON employee FOR EACH ROW    -- 当往员工表删除一条记录时
         INSERT INTO test_log(content) VALUES('员工表删除了一条记录');
      
     -- 删除
     DELETE FROM employee WHERE id=7;
  • 相关阅读:
    NOI2020省队联合选拔赛(JXOI2020)退役记
    NOI2020省队选拔赛前训练(打摆)记录
    一些省选题
    Codeforces Round #648 (Div. 2) 简要题解
    Atcoder NOMURA Programming Competition 2020简要题解
    AtCoder Grand Contest 020 简要题解
    Codeforces Round #643 (Div. 2) 题解
    Codeforces Round #642 (Div. 3) 题解
    【GDKOI2016】小学生数学题 【自然数幂求和】【斯特林数】
    【XSY3163】Tree Ext【二分】【最小生成树】【矩阵树定理】【拉格朗日插值】
  • 原文地址:https://www.cnblogs.com/rosehuang/p/7269131.html
Copyright © 2011-2022 走看看