Mysql_语法

索引

添加主键索引
    alter table table_name add primary key(所有字段)

添加唯一索引
    alter table table_name add unique index_name(索引字段)

添加单值索引
    alter table table_name add index index_name(索引字段)

添加复合索引
    alter table table_name add index index_name(字段a,字段b...)

添加全文索引
    alter table table_name add fulltext index_name(索引字段)

查看表的索引
    show index from table_name

查询语法

查看表结构
    desc table_name

查询表数据
    select * from table_name

去重查询
    select distinct field_name from table_name

条件查询
    select * from table_name where field_name =10    (=,<>,>=,<=)
    select * from table_name where field_name is (not) null    字段非空条件查询
    select * from table_name where field_name in ("a","b")    in模糊查询
    select * from table_name where field_name like '_A%'    _代表一个字母,%代表0个或多个字母. 如果查询%

结果排序查询
    select * from table_name order by field_name desc    (默认:asc):根据字段降序查询

计数查询
    select count(distinct field_name) from table_name

结果分组查询
    select deptno,avg(sal) from emp group by deptno    求每个部门的平均薪水.

对分组结果筛选(Where是对单条纪录进行筛选,Having是对分组结果进行筛选)
    select avg(sal),deptno from emp where sal>1200 group by deptno having avg(sal)>1500 order by avg(sal) desc;    查询工资大于1200雇员,按部门编号进行分组,分组后平均薪水大于1500,按工薪倒充排列.

表连接方式
    select * from emp e1 left join emp e2 on(e1.mgr =e2.empno) 左外连接:会把左边这张表多余数据显示出来。
    select ename,dname from emp e right join dept d on(e.deptno =d.deptno); 右外连接:
    inner join : on 条件同时过滤两张表
    full join : 都不过滤

on:针对的是两表连接条件过滤   where:针对的是中间表过滤

case when:
    对字段值判断并按照自定义规则生成新的字段,用于转义,统计
    case sex when 0 then '女' else '男' end) as '性别'
    case when score>=90 then '优' when score>=80 then '良' when score>=60 then '及格' else '不及格' end as '等级'

常用sql

清空表数据,保留表结构
truncate table table_name

增加表字段
alter table table_name add `column _name` varchar(64) comment '这里是注释内容'

删除表字段
alter table table_name drop column `createTime`  --符号不能错

修改表字段
alter table table_name MODIFY column_name VARCHAR(32) comment '这里是注释内容'

展示数据库所有函数
    show function status

查看函数详细信息
    show create function func_name

判断表是否存在
    SELECT table_name FROM information_schema.TABLES WHERE table_name =''
表中插入数据
    insert into 表名 列名 values(expr|default...);
  

存储过程

前言:
    存储过程:一堆SQL的合并。中间加了点逻辑控制。
    一次调用完成一系列sql操作,不需要多次连接数据库。
    强烈不建议
        1.维护性差
        2.本身并不能提高查询效率,数据量的逻辑尽量还是放在内存合理 
    场景使用
        1.生成测试数据

展示数据库所有存储过程
    show procedure status

查看存储过程详细信息
    show create procedure proc_name

创建存储过程
    DELIMITER $                   
    CREATE PROCEDURE procedure_name() --存储过程名称(参数列表)
    BEGIN    
          --多条sql + 流程控制
    END $    

调用存储过程
    call procedure_name()   --call 存储过程名称(参数)

存储过程参数种类
    IN:  表示输入参数,可以携带数据带存储过程中
    OUT: 表示输出参数,可以从存储过程中返回结果 
    INOUT: 表示输入输出参数,两者结合

删除存储过程
    drop procedure procedure_name;

生成大批量表数据的例子:
    生成 INT 条 name 100~1000 power 10000~100000..的数据
    delimiter $$
    create procedure add_hero_data(size INT)
    begin
    START TRANSACTION;
    SET @id=0;
    WHILE @id<size DO
    SET @name= CEILING(RAND()*900+100);
    SET @power= CEILING(RAND()*90000+10000);
    SET @agile= CEILING(RAND()*90000+10000);
    INSERT INTO weitao.t_hero(name, power,agile)
    VALUES(@name,@power,@agile);
    SET @id=@id+1;
    end while ;
    COMMIT;
    end$$

函数

select substr(field_name,2,3) from table_name ;从第二字符截,一共截三个字符.
select sysdate from dual; 获取系统当前时间
select to_char(sysdate,'yyyy-mm-dd') from dual   转换为固定格式字符串 
select to_date('2012-07-26','yyyy-mm-dd') from dual  固定格式字符串转换为data
Group function 组函数(max,min,avg ,count,sum函数)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值