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()
原文地址:https://www.cnblogs.com/tangshuo/p/12743648.html