• Mysql


    Mysql

    Sql语句分类

    • DDL 定义语言
    • DML 操作语言
    • DCL 控制语言(权限相关)
    • DQL 查询语言

    注释方法

    • --
    • /* */
    •       #
      

    简单操作

    库操作

    操作文件夹(库)    
    增          create database db1 charset utf8; 
     
    查          show create database db1;        
                 show databases;        
                 select database();    
     
    改          alter database db1 charset gbk;   
     
    删          drop database db1;
    

    表操作

    操作文件(表)   
    切换文件夹:use db1;  
    查看当前所在文件夹:select database();         
    增          create table t1(id int,name char);  
     
    查          show create table t1;         
                 show tables;         
                 desc t1;   
     
    改          alter table t1 modify name  char(6);                    
                alter table t1 change name NAME char(6)
                alter table t1 add age int;
                alter table t1 drop age;
                rename table t1 to t2 ;
                ## unique相关
                alter table userinfo add unique(xxx,xxx);
                alter table userinfo modify name char(30) unique;
               alter table userinfo drop index  name; #删除约束
     
     删          drop table t1;
                  truncate t20; #应该用它来清空表
     
    

    记录操作

    操作文件内容(记录)  
    增          insert t1(id,name) values(1,'egon1'), (2,'egon2'),(3,'egon3'); 
     
    查           select id,name from db1.t1;        
                 select * from db1.t1;    
                  and  &&
                  or     ||
                  asc   默认升序
                  dsc   降序
     
    改          update db1.t1 set name='SB';        
                 update db1.t1 set name='ALEX' where id=2;   
     
    删          delete from t1;      
                delete from t1 where id=2;
    

    数据类型

    数值

    f5fbd4b1bd15d0f8f7a90890c040d6f9.png

    日期

    38ba7706b2deadcf28eb9ab967f9dc56.png

    字符串

    6149fa8d0651c8a5c5bf9e2fc1bc9705.png

    枚举和集合类型

    enmu只能一个 集合可以多个

    create table consumer
                ( id int,
                name char(16),
                sex enum('male','female','other'),
                level enum('vip1','vip2','vip3'), 
                hobbies set('play','music','read','run')
                );
     
     
    

    表约束

    not null 与 default

                   create table t15(  id int(11) unsigned zerofill);
     
                   create table t16( id int, name char(6), sex enum('male','female') not null default 'male');
     
    

    unique key

    #单列唯一   
        #方式一    
                    create table department( id int unique, name char(10)  unique);    
     
        #方式二:   
                    create table department( id int, name char(10),unique(id),  unique(name));    
     
    #联合唯一
                    create table services( id int, ip char(15), port int, unique(id),unique(ip,port));
    

    primary key

    # 单列主键
                create table t17( id int primary key, name char(16));
    # 复合主键
                create table t19( ip char(15), port int,  primary key(ip,port));     
    

    auto_increment

                create table t20( id int primary key auto_increment, name char(16));
        #了解    
                   show variables like 'auto_inc%';   
       #步长:    
                    auto_increment_increment默认为1   
       #起始偏移量   
                    auto_increment_offset默认1        
       #设置步长    
                    set session auto_increment_increment=5;     set global      auto_increment_increment=5;         
       #设置起始偏移量   
                    set global auto_increment_offset=3;     强调:起始偏移量<=步长
     
    

    foreign key(外键)

    #1、建立表关系:     **
    #先建被关联的表,并且保证被关联的字段唯一    
                        create table dep(id int primary key,name char(16),comment char(50));
    #再建立关联的表
                        create table emp
                        (  id int primary key, 
                        name char(10), 
                        sex enum('male','female')**,
                        dep_id int,  foreign key(dep_id) references dep(id)
                        on delete cascade
                        on update cascade);
    

    As 起别名

    select name as 姓名 from student;
    select t.name as xx,t.age as xx from teacher t'
    

    分组

    根据哪个字段分的组 就只能查哪个字段
    要查询其他字段 用 grop_concat() count ,avg,sum,max,min

    SELECT post,GROUP_CONCAT(name) FROM employee GROUP BY post;#按照岗位分组,并查看组内成员名
    

    函数

    字符串函数

    d3a185e9f8ff1161fd25a3f3193fab8a.png

    数学函数

    d12526cdd2ae0e747782c7d4b185430d.png

    round(xxx,1) 保留一位小数·

    日期时间函数

    9bc7ad61a8f1c7f962a260a6474eac79.png

    比较日期 要 date(字段)

    控制流函数

    94b8c8002e133afd1535a32c2ef365ed.png

    Like

    • % 任意
    • _ 任意单个

    事务

    • 开启事务

    start transaction

    • 提交事务

    commit

    • 回滚事务

    rollback

    其他

    delete from Vs truncate

    delete from 只删数据 外键 约束等还在 速度慢
    truncate 全删 速度快

    存储引擎

    https://www.cnblogs.com/linhaifeng/articles/7213670.html

    权限管理

    https://www.cnblogs.com/linhaifeng/articles/7267587.html

    复制表
    复制表结构+记录 (key不会复制: 主键、外键和索引)
    mysql> create table new_service select * from service;
     
    只复制表结构
    mysql> select * from service where 1=2;        //条件为假,表记录为空
    mysql> create table t4 like employees;
    

    concat 定义显示格式

    SELECT CONCAT('姓名: ',name,'  年薪: ', salary*12)  AS Annual_salary FROM employee;
    

    case

    #有比较大小 case后面为空
    select
        name,
        (case
        when age>18 then "成年人" else "未成年"
        end) 年龄
    from employee;
     
    # 无比较大小 case后面写字段
    select
        name,
        (case name when "alex" then "sb" else "其他" end )
    from employee
    

    where Vs having

    有聚合函数的地方就不能用where

    #!!!执行优先级从高到低:where > group by > having
    #1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。
     
    #2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数
    

    exists

    带EXISTS关键字的子查询EXISTS关字键字表示存在。在使用EXISTS关键字时,内层查询语句不返回查询的记录。
    而是返回一个真假值。True或False
    当返回True时,外层查询语句将进行查询;当返回值为False时,外层查询语句不进行查询

    数据备份

    https://www.cnblogs.com/linhaifeng/articles/7525619.html

    视图 触发器 事务 存储过程 函数

    https://www.cnblogs.com/linhaifeng/articles/7495918.html

    视图

    • 语法
    create [or replace] [algorithm={undefined|merge|temptable}]
    view viewname [(column_list)]
    as select_statement
    [with [cascaded|local] check option]
    
    • 创建试图
    • 修改视图

    create or replace

    • 删除视图

    存储过程

    • 定义

      ## 无参数
      delimiter//
      create  procedure p1 ()
          begin
              select*from db7.teacher;
          end
      delimiter//
      
      #Mysql
      call p1();
      
      #Python
      cursor.call_proc('p1')
      
      
      ##有参数
      delimiter//
      create  procedure p1 (in n1 int,in n2 int,out res int)
          begin
              select*from db7.teacher where tid >n1 and tid<n2;
              set res =1;
          end
      delimiter//
      
      #Mysql
      set @x=0
      call p1(2,4,@x)
      select @x
      #Pymysql
      cursor.cakk_proc('p1',(2,4,0))
      
      
    • 查看 修改

      show create procedure p1;
      alter
      drop
      

    索引原理与慢查询优化

    https://www.cnblogs.com/linhaifeng/articles/7274563.html


    其他

    开启查询时间

    select@@profiling;
    #0关闭 1开启
    set profiling=1;
     
    #查看全部
    show profiles;
     
    #查看上一个详细信息
    show profile;
    show profile for query 2;
    

    查看版本

    select version()
    
  • 相关阅读:
    CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内?
    贝塞尔曲线
    A little composer
    ABAQUS操作笔记
    ABAQUS薄板实例
    引用
    引用、重载、递归概念及应用
    Photoshop图片处理-云毕业照
    图片存储大小更改
    论文公式之“公式居中,序号在右”
  • 原文地址:https://www.cnblogs.com/tangshuo/p/12743648.html
Copyright © 2020-2023  润新知