zoukankan      html  css  js  c++  java
  • SQL常用语句


    create procedure test1(IN init INT,IN end INT)
    -> begin
    -> declare Var INT;
    -> declare id INT;
    -> set Var = 1;
    -> set id = init;
    -> while Var < end do
    -> insert into test(id,name,age) values(id,concat('test',id),100);
    -> set id = id + 1;
    -> set Var = Var + 1;
    -> end while
    -> ;
    -> end;
    -> //

    事务级别
    set [ global | session ] transaction isolation level Read uncommitted | Read committed | Repeatable(default) | Serializable

    查看binlog

     /usr/local/mysql/bin/mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000001

    查看表大小

    SELECT TABLE_NAME,DATA_LENGTH,INDEX_LENGTH,(DATA_LENGTH+INDEX_LENGTH) AS LENGTH,TABLE_ROWS,CONCAT(ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024,3), 'MB') AS total_size FROM information_schema.TABLES WHERE TABLE_SCHEMA='accountdb' ORDER BY LENGTH DESC ;

    查杀指定线程

    mysql -uroot -S /usr/local/mysql/mysql.sock -sNe "select id from information_schema.processlist where COMMAND='Query' and TIME>10" | xargs -n 1 mysqladmin -uroot -S /usr/local/mysql/mysql.sock kill


    一、数据库和表的常用操作
    ------------------------------------------------------------------------------------
    1.show databases; 查看所有的数据库
    2.create database test; 创建一个叫test的数据库
    3.drop database test;删除一个叫test的数据库
    4.show tables; 在选中的数据库之中查看所有的表
    5.use test;选中库 ,在建表之前必须要选择数据库
    6.drop table 表名; 删除表
    7.create table 表名 (字段1 类型 [NOT NULL PRIMARY KEY(字段)], 字段2 类型);
    8.desc 表名;查看所在的表的字段
    9.show create table 表名; 查看创建表的详细信息
    10.show create databases 库名;查看创建库的详细信息
    ------------------------------------------------------------------------------------

    二、表的修改
    ------------------------------------------------------------------------------------
    1.修改字段类型 alter table 表名 modify 字段 字段类型
    2.添加新的字段 alter table 表名 add 字段 字段类型
    3.添加字段并指定位置 alter table 表名 add 字段 字段类型 after 字段
    4.删除表字段 alter table 表名 drop 字段名
    5.修改指定的字段 alter table 表名 change 原字段名 新字段名 字段类型
    ------------------------------------------------------------------------------------

    三、数据的操作
    ------------------------------------------------------------------------------------
    插入数据
    insert into 表名 values(值1,值2...)
    insert into 表名(字段1,字段2...) values(值1,值2....)
    insert into 表名(字段1,字段2...) values(值1,值2....),(值1,值2,....),(值1,值2,....)

    删除数据 delete from 表名 where 条件

    更新数据 update 表名 set 字段1 = 值1, 字段2 = 值2 where 条件

    查询数据
    select distinct(去重) 字段 from 表名
    select 字段 from 表名 where 条件1 and(or) 条件2
    select 字段 from 表名 where 字段 not in(值1,值2,值3...)
    select 字段 from 表名 where 字段 between 值1 and 值2
    select 字段 from 表名 limit m,n 从m行开始返回n行
    select 字段 from 表名 order by 字段 desc降序 | asc默认升序
    select 字段 from 表名 where 字段 like '%关键字%'(%:0或多个字符,_:单个字符,[]:字符列中的一个,[^]:不在字符列中的字符)

    子查询
    select 字段1 from 表名1 where 字段2 in (select 字段2 from 表名2 where 条件)
    内联结查询
    select 字段1,字段2 from 表1,表2 where 表1.字段3 = 表2.字段3 order by 字段1
    select 字段1,字段2 from 表1 inner join 表2 on 表1.字段3 = 表2.字段3 order by 字段1

    ------------------------------------------------------------------------------------
    四、视图
    ------------------------------------------------------------------------------------
    create view 视图 as select 字段1,字段2,字段3 from 表1,表2,表3 where 表1.字段1=表2.字段2 and 表3.字段3=表2.字段2
    select * from 视图
    show create view 视图
    drop view 视图
    ------------------------------------------------------------------------------------

    五、存储过程
    ------------------------------------------------------------------------------------
    ------------注释-------------
    delimiter //
    create procedure 名称(IN 参数1 类型, OUT 参数2 类型)
    BEGIN
    declare 参数3 类型;
    if 条件1 then 操作1;
    end if;
    if 条件2 then 操作2;
    end if;
    END //
    delimiter ;
    call 名称(参数1,参数2)

    show create procedure 名称
    show procedure status
    ------------------------------------------------------------------------------------

    六、事物处理和控制
    ------------------------------------------------------------------------------------
    begin or start transaction
    操作1 (drop delete update insert alter select...)
    rollback
    操作2 (drop delete update insert alter select...)
    savepoint name1
    操作3 (drop delete update insert alter select...)
    savepoint name2
    release savepoint name2
    rollback to name1
    commit

    关闭自动提交
    set autocommit=0
    ------------------------------------------------------------------------------------

    七、DCL控制
    ------------------------------------------------------------------------------------
    create(drop) user 'username'@'localhost' identified by 'password'
    grant(revoke) privileges on database.table to 'user'@'localhost'
    flush privileges

    八、备份常用
    ------------------------------------------------------------------------------------

    导出表结构 mysqldump -uroot -ppasswd -d database table > test.sql
    导出表数据 mysqldump -uroot -ppasswd -t database table > test.sql
    结构和数据 mysqldump -uroot -ppasswd database table > test.sql
    挑顶条件项 mysqldump -uroot -ppasswd database table --where="ctime>'2017-01-01' and ctime<'2017-06-30'" > test.sql


    表同步
    delimiter //
    create trigger ins_test1
    after insert on db1.test1 for each row begin
    insert into db2.test2(id,name,age) values(new.id,new.name,new.age);
    end //

    delimiter //
    create trigger upt_test1
    after update on db1.test1 for each row begin
    if new.id = old.id
    then
    delete from db2.test2 where db2.test2.id=new.id;
    insert into db2.test2 select * from db1.test1 where db1.test1.id=new.id;
    end if;
    end //

    delimiter //
    create trigger del_test1
    after delete on db1.test1 for each row begin
    delete from db2.test2 where id=new.id;
    end //

    索引的原则:
    1.使用like关键字时,前置%会导致索引失效
    2.使用null值会被自动从索引中排除,索引不应建立在有空值的列上
    3.使用or关键字时,or左右字段如果存在一个没有索引,有索引字段也会失效
    4.使用!=操作符时,将放弃使用索引
    5.不要在索引字段进行运算
    6.使用组合索引时,应按照最左匹配原则,查询时使用索引的第一个字段,否则索引会失效
    7.避免隐式转换,定义的数据类型与传入的数据类型不一致


    innodb关键参数:
    buffer_pool_size:物理内存的50%~80%,可动态调整
    innodb_max_dirty_pages_pct:不超过50%
    innodb_log_buffer_size:能缓存5秒内的redolog即可,32M基本够用
    innodb_thread_concurrency:innodb并发线程数不要设置非0
    innodb_lock_wait_timeout:行锁超时阈值
    innodb_purge_threads:purge线程数
    innodb_max_purge_lag:不要设置非0
    innodb_log_file_size:4~8个2~4G,减少checkpoint频率
    innodb_flush_log_at_trx_commit:设置为1最安全
    innodb_io_copacity:每秒对磁盘的最大iops

  • 相关阅读:
    NodeJS NPM 镜像使用方法
    用for; while...do; do...while; 写出九九乘法表
    create-react-app创建的项目中registerServiceWorker.js文件的作用
    前端应该从哪些方面优化网站?
    JS基础整理面试题
    netcore实践:跨平台动态加载native组件
    iOS开发--Swift RAC响应式编程初探
    算法导论学习笔记 (页码:9 ~ 16)
    iOS开发-- 通过runtime kvc 移除导航栏下方的阴影效果线条
    iOS开发--面试
  • 原文地址:https://www.cnblogs.com/lishug/p/13219687.html
Copyright © 2011-2022 走看看