MySQL笔记

mysql

I.服务器启动

  • cmd–>service.msc 打开服务器窗口
  • net start mysql 启动mysql服务
  • net stop mysql 关闭mysql服务

II.登陆

  • mysql -uroot -proot 输入密码
  • mysql -hip -uroot -p 输入连接目标的密码

III.退出

  • exit

  • quit
    IV.语句(以;结尾)

  • show databases; 查看数据库

  • – 后可注释

  • #后可注释

DDL
i.操作数据库CRUD

  • create创建
    create database 名称;
    create database if not exists 名称;
  • retrieve查询
    show databases;
    show create databases 名称;
  • update修改
    alter database 名称 character set 字符集名称; //修改字符集
  • delete删除
    drop database 名称; //删除数据库
    drop database if exists 名称; //判断存在并删除数据库
  • 使用数据库
    select database(); //查询当前正在使用的数据库名称
    use 数据库名称;

ii.操作表

  • create创建
    create table 表名(
    列名1 数据类型1,
    列名2 数据类型2,
    .
    .
    列名n 数据结构n
    ); //注意最后一行无逗号
    name varchar(20)
  • retrieve查询
    show tables;
    desc 表名; //查询表结构
  • update修改
    alter table 表名 rename to 新表名;
    alter table 表名 character set 新字符集名称;
    alter table 表名 change 列名 新列名 新数据类型 ;
    alter table 表名 modify 列名 新数据类型;
    alter table 表名 add 列名 新数据类型;
    alter table 表名 drop 列名;
  • delete删除
    drop table 表名;
    drop table if exists 表名;

#DML

  • insert into 表名 (列名1,…,列名n) values (?,…,?);

  • delete from 表名 where 条件;

  • TRUNCATE TABLE 表名; //删除表,创建一张新表(同名)

  • update 表名 set 列名 = 值,列名 = 值 … where 条件;

#DQL

  • 查询
    select * from 表名;
    select distinct 列名 from 表名; //除重
    列名1 + ifnull(列名2,0) 新列名 //如果列名2为null,则用逗号后代替(0)
    //因为null做运算结果全为null
    select * from 表名 where 列名 is 值;
    select * from 表名 where 列名 in (值1,值2,值3);
    select * from 表名 where 条件 and 条件;
    select * from 表名 where 条件 or 条件;
    select * from 表名 where 列名 like ‘马%’; //第一个字为“马”
    select * from 表名 where 列名 like “_化%”; //第二个字为“化”
    select * from 表名 where 列名 like ‘%马%’; //含“马”

    • 排序查询(select * from 表名 +)
      order by 列名 ASC; //升序
      order by 列名 DESC; //降序
      order by 列名 ASC,列名 ASC,列名 ASC;
      //存在多个排序时,若第一条的值相同,才会使用第二条排序

    • 聚合函数
      select count(列名) from 表名; //不计算null
      select max(列名) from 表名;
      select min(列名) from 表名;
      select sum(列名) from 表名;
      select avg(列名) from 表名;

    • 分组查询
      select 列名1 , sum(列名2) from 表名 group by 列名1;
      select 列名1 , sum(列名2) from 表名 where 条件 group by 列名1 having 条件;
      //where和having区别:
      1.where在分组前,having在分组后(组内单独判断)
      2.having可用聚合函数,where不行

    • 分页查询(只可在mysql使用下列语句 )
      select * from 表名 limit 0,3; //从0号条开始,读取3条

    • 约束

      • 分类
        非空约束 not null
        唯一约束 unique
        主键约束 primary key (只可有一列)
        外键约束 foreign key (关联表)

      alter table 表名 modify 列名 新数据类型 not null; //列内值不可为null
      alter table 表名 modify 列名 新数据类型 unique; //列内值不可重复
      alter table 表名 modify 列名 新数据类型 primary key; //列内值非空且唯一

      create table 表名(

      外键列,
      constraint 外键名 foreign key (外键列) references 外键表名称(此外键表主键列名称)
      ); ^
      alter table 表名 add constraint 外键名 foreign key (外键列) references
      外键表名称(主表列名称);

      //取消语句为 alter table 表名 modify 列名 新数据类型;
      #//主键类取消:alter table 表名 drop primary key;
      #//外键类取消:alter table 表名 drop foreign key 外键名;(取消关联)

      • 级联操作
        alter table 表名 add constraint 外键名 foreign key (外键列) references
        外键表名称(主表列名称) on update cascade on delete cascade;
        //级联删除将同时删除相关所有记录
      • 自动增长
        auto_increment //只与上一条记录有关(增加1)
        //取消:alter table 表名 modify 列名 新数据类型; ###不会取消主键
  • 数据库设计
    多的一方添加外键;//类比分类
    中间表:两个字段分别作为外键指向两个目标表

  • 多表查询

    • 内连接查询
      i.隐式内连接
      select * from 表名1 t1,表名2 t2 where 条件;
      ^ ^ 表名替代
      ii.显式内连接
      select * from 表名1 [inner] join 表名2 on 表名1.外键列 = 表名2.主表列
    • 外连接查询
      select * from 表名1 left [outer] join 表名2 on 条件;
      //查询结果为左表所有数据及其交集
    • 子查询
      例:select * from 表 where 表.列名 = (select max (列名) from 表);
      //括号内为子查询
      i.子查询结果单行单列
      < > = >= <=
      ii.子查询结果单列多行
      例:select * from 表1 where 列1 in (select id from 表2 where 条件)
      iii.子查询结果多行多列
      例:select * from 表1 t1,(子查询) t2 where 条件;
      //当作虚拟表

#事务
出现异常则回滚

  • 开启事务
    start transaction;
  • 执行没有问题,提交事务
    commit;
  • 出问题了,回滚
    rollback;
  • 查看事务提交方式
    select @@autocommit; //1为自动,0为手动
    set @@autocommit = 0; //改为手动
  • 四大特征
    原子性:同时成功同时失败
    持久性:提交或回滚后,持久化保存数据
    隔离性:多个事务互相独立
    一致性:操作前后数据总量不变
  • 隔离级别
    (read uncommitted/read committed/repeatable read/serializable )
    查询:select @@tx_isolation
    设置:select global transaction islation level 级别字符串;

#DCL
管理用户授权(DBA:数据库管理员)

  • 管理用户

    • 查询用户
      select * from user;

    • 创建用户
      create user ‘用户名’@‘主机名’ identified by ‘密码’;

    • 删除用户
      drop user ‘用户名’@‘主机名’;

      ###特殊主机名:【localhost:本机】【%:任意】

    • 修改用户密码
      set password for ‘’@’’ = password(‘新密码’);
      update user set password = password(‘新密码’) where user = ‘用户名’;

    • 忘记root密码
      1.cmd --> net stop mysql
      2.mysqld --skip-grand- table
      3.打开新的cmd,输入mysql回车
      4.use mysql
      5.update user set password = password(‘新密码’) where user = ‘root’;
      6.关闭两个窗口
      7.打开任务管理器,手动结束mysqld.exe进程
      8.启动mysql服务
      9.使用新密码登陆

  • 管理授权
    1.查询权限
    show grants for ‘用户名’@‘主机名’;
    2.授予权限
    grant 权限 on 数据库名.表名 to ‘用户名’@‘主机名’;
    3.撤销权限
    revoke 权限 on 数据库名.表名 from ‘用户名’@‘主机名’;

### 光流法C++源代码解析与应用 #### 光流法原理 光流法是一种在计算机视觉领域中用于追踪视频序列中运动物体的方法。它基于亮度不变性假设,即场景中的点在时间上保持相同的灰度值,从而通过分析连续帧之间的像素变化来估计运动方向和速度。在数学上,光流场可以表示为像素位置和时间的一阶导数,即Ex、Ey(空间梯度)和Et(时间梯度),它们共同构成光流方程的基础。 #### C++实现细节 在给定的C++源代码片段中,`calculate`函数负责计算光流场。该函数接收一个图像缓冲区`buf`作为输入,并初始化了几个关键变量:`Ex`、`Ey`和`Et`分别代表沿x轴、y轴和时间轴的像素强度变化;`gray1`和`gray2`用于存储当前帧和前一帧的平均灰度值;`u`则表示计算出的光流矢量大小。 #### 图像处理流程 1. **初始化和预处理**:`memset`函数被用来清零`opticalflow`数组,它将保存计算出的光流数据。同时,`output`数组被填充为白色,这通常用于可视化结果。 2. **灰度计算**:对每一像素点进行处理,计算其灰度值。这里采用的是RGB通道平均值的计算方法,将每个像素的R、G、B值相加后除以3,得到一个近似灰度值。此步骤确保了计算过程的鲁棒性和效率。 3. **光流向量计算**:通过比较当前帧和前一帧的灰度值,计算出每个像素点的Ex、Ey和Et值。这里值得注意的是,光流向量的大小`u`是通过`Et`除以`sqrt(Ex^2 + Ey^2)`得到的,再乘以10进行量化处理,以减少计算复杂度。 4. **结果存储与阈值处理**:计算出的光流值被存储在`opticalflow`数组中。如果`u`的绝对值超过10,则认为该点存在显著运动,因此在`output`数组中将对应位置标记为黑色,形成运动区域的可视化效果。 5. **状态更新**:通过`memcpy`函数将当前帧复制到`prevframe`中,为下一次迭代做准备。 #### 扩展应用:Lukas-Kanade算法 除了上述基础的光流计算外,代码还提到了Lukas-Kanade算法的应用。这是一种更高级的光流计算方法,能够提供更精确的运动估计。在`ImgOpticalFlow`函数中,通过调用`cvCalcOpticalFlowLK`函数实现了这一算法,该函数接受前一帧和当前帧的灰度图,以及窗口大小等参数,返回像素级别的光流场信息。 在实际应用中,光流法常用于目标跟踪、运动检测、视频压缩等领域。通过深入理解和优化光流算法,可以进一步提升视频分析的准确性和实时性能。 光流法及其C++实现是计算机视觉领域的一个重要组成部分,通过对连续帧间像素变化的精细分析,能够有效捕捉和理解动态场景中的运动信息
微信小程序作为腾讯推出的一种轻型应用形式,因其便捷性与高效性,已广泛应用于日常生活中。以下为该平台的主要特性及配套资源说明: 特性方面: 操作便捷,即开即用:用户通过微信内搜索或扫描二维码即可直接使用,无需额外下载安装,减少了对手机存储空间的占用,也简化了使用流程。 多端兼容,统一开发:该平台支持在多种操作系统与设备上运行,开发者无需针对不同平台进行重复适配,可在一个统一的环境中完成开发工作。 功能丰富,接口完善:平台提供了多样化的API接口,便于开发者实现如支付功能、用户身份验证及消息通知等多样化需求。 社交整合,传播高效:小程序深度嵌入微信生态,能有效利用社交关系链,促进用户之间的互动与传播。 开发成本低,周期短:相比传统应用程序,小程序的开发投入更少,开发周期更短,有助于企业快速实现产品上线。 资源内容: “微信小程序-项目源码-原生开发框架-含效果截图示例”这一资料包,提供了完整的项目源码,并基于原生开发方式构建,确保了代码的稳定性与可维护性。内容涵盖项目结构、页面设计、功能模块等关键部分,配有详细说明与注释,便于使用者迅速理解并掌握开发方法。此外,还附有多个实际运行效果的截图,帮助用户直观了解功能实现情况,评估其在实际应用中的表现与价值。该资源适用于前端开发人员、技术爱好者及希望拓展业务的机构,具有较高的参考与使用价值。欢迎查阅,助力小程序开发实践。资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值