zoukankan      html  css  js  c++  java
  • MySQL基础

    MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

    • Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
    • MySQL使用标准的SQL数据语言形式。
    • Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
    • Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。
    • MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
    • Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

    MySQL多种存储引擎
     MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。一般用于测试,比较小的项目
    MYISAM强调了快速读取操作,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据
    ,但是InnoDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的

    般来说,MyISAM适合(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。InnoDB适合(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。


    存储引擎就是指表的类型数据库的存储类型决定了表的类型  



    插入数据      INSERT tbl_name  (set  字段名=值

    更新数据      UPDATE tbl_name SET 字段名称=值 (,... [WHERE 条件][ORDER BY 字段名称][LIMIT 限制条数])

    删除数据       DELETE FROM tbl_name ([WHERE 条件][ORDER BY 字段名称][LIMIT 限制条数])


    查询数据     SELECT select_expr [, select_expr ...] 
         [
             FROM table_references 
             [WHERE 条件]
             [GROUP BY {col_name | position}  [ASC | DESC], ... 分组]
             [HAVING 条件 对分组结果进行二次筛选]
             [ORDER BY {col_name | position} [ASC | DESC], ...排序]
             [LIMIT 限制显示条数]
         ]

    打开指定数据库      USE db_name
    删除指定数据库       DROP db_name
    创建数据库     CREATE db_name
    产看当前服务器数据库列表   SHOW DATABASES  


     用户变量

     

    . MySQL客户端使用用户变量

    用户变量名一般以@开头

    滥用用户变量会导致程序难以理解及管理




    用set进行定义



    简单一个存储过程:

    DELIMITER    定义分隔符
    CREATE  PROCEDURE    存储过程名(IN/OUT/INOUT 变量  数据类型)

    IN  定义的存储过程的运行后变量值不改变
    OUT/INOUT  定义的存储过程运行后值会改变

    定义变量:    DECLARE  变量名   数据类型
    变量赋值:    SET  变量名 = 值


    mysql存储过程查询:
    show procedure status where db='数据库';

    mysql存储过程删除:
    DROP PROCEDURE



         MySQL存储过程的控制语句

    (1). 变量作用域

    内部的变量在其作用域范围内享有更高的优先权,当执行到end。变量时,内部变量消失,此时已经在其作用域外,变量不再可见了,应为在存储
    过程外再也不能找到这个申明的变量,但是你可以通过out参数或者将其值指派
    给会话变量来保存其值。

     

     

    1. mysql DELIMITER //  
    2. mysql CREATE PROCEDURE proc3()  
    3.      -> begin 
    4.      -> declare x1 varchar(5) default 'outer';  
    5.      -> begin 
    6.      -> declare x1 varchar(5) default 'inner';  
    7.      -> select x1;  
    8.      -> end;  
    9.      -> select x1;  
    10.      -> end;  
    11.      -> //  
    12. mysql DELIMITER ;  

     

     (2). 条件语句

    . if-then -else语句

     

     

     

    1. mysql DELIMITER //  
    2. mysql CREATE PROCEDURE proc2(IN parameter int)  
    3.      -> begin 
    4.      -> declare var int;  
    5.      -> set var=parameter+1;  
    6.      -> if var=0 then 
    7.      -> insert into values(17);  
    8.      -> end if;  
    9.      -> if parameter=0 then 
    10.      -> update set s1=s1+1;  
    11.      -> else 
    12.      -> update set s1=s1+2;  
    13.      -> end if;  
    14.      -> end;  
    15.      -> //  
    16. mysql DELIMITER ;  


    . case语句: 

    1. mysql DELIMITER //  
    2. mysql CREATE PROCEDURE proc3 (in parameter int)  
    3.      -> begin 
    4.      -> declare var int;  
    5.      -> set var=parameter+1;  
    6.      -> case var  
    7.      -> when then   
    8.      -> insert into values(17);  
    9.      -> when then   
    10.      -> insert into values(18);  
    11.      -> else   
    12.      -> insert into values(19);  
    13.      -> end case;  
    14.      -> end;  
    15.      -> //  
    16. mysql DELIMITER 

     

    (3). 循环语句

    . while ···· end while

    1. mysql DELIMITER //  
    2. mysql CREATE PROCEDURE proc4()  
    3.      -> begin 
    4.      -> declare var int;  
    5.      -> set var=0;  
    6.      -> while var<6 do  
    7.      -> insert into values(var);  
    8.      -> set var=var+1;  
    9.      -> end while;  
    10.      -> end;  
    11.      -> //  
    12. mysql DELIMITER 

     

     

    . repeat···· end repeat

    它在执行操作后检查结果,而while则是执行前进行检查。

    1. mysql DELIMITER //  
    2. mysql CREATE PROCEDURE proc5 ()  
    3.      -> begin   
    4.      -> declare int;  
    5.      -> set v=0;  
    6.      -> repeat  
    7.      -> insert into values(v);  
    8.      -> set v=v+1;  
    9.      -> until v>=5  
    10.      -> end repeat;  
    11.      -> end;  
    12.      -> //  
    13. mysql DELIMITER ;  

     


    . loop ·····end loop:

    loop循环不需要初始条件,这点和while 循环相似,同时和repeat循环一样不需要结束条件, leave语句的意义是离开循环。

    1. mysql DELIMITER //  
    2. mysql CREATE PROCEDURE proc6 ()  
    3.      -> begin 
    4.      -> declare int;  
    5.      -> set v=0;  
    6.      -> LOOP_LABLE:loop  
    7.      -> insert into values(v);  
    8.      -> set v=v+1;  
    9.      -> if >=5 then 
    10.      -> leave LOOP_LABLE;  
    11.      -> end if;  
    12.      -> end loop;  
    13.      -> end;  
    14.      -> //  
    15. mysql DELIMITER ;  

     

     

    . LABLES 标号:

    标号可以用在begin repeat while 或者loop 语句前,语句标号只能在合法的语句前面使用。可以跳出循环,使运行指令达到复合语句的最后一步。

     

    (4). ITERATE迭代

    . ITERATE:

    通过引用复合语句的标号,来从新开始复合语句

    1. mysql DELIMITER //  
    2. mysql CREATE PROCEDURE proc10 ()  
    3.      -> begin 
    4.      -> declare int;  
    5.      -> set v=0;  
    6.      -> LOOP_LABLE:loop  
    7.      -> if v=3 then   
    8.      -> set v=v+1;  
    9.      -> ITERATE LOOP_LABLE;  
    10.      -> end if;  
    11.      -> insert into values(v);  
    12.      -> set v=v+1;  
    13.      -> if v>=5 then 
    14.      -> leave LOOP_LABLE;  
    15.      -> end if;  
    16.      -> end loop;  
    17.      -> end;  
    18.      -> //  
    19. mysql DELIMITER 

     

     

    9.      MySQL存储过程的基本函数

     

    (1).字符串类

    CHARSET(str) //返回字串字符集
    CONCAT (string2 [,... ]) //
    连接字串
    INSTR (string ,substring ) //
    返回substring首次在string中出现的位置,不存在返回0
    LCASE (string2 ) //
    转换成小写

    LEFT (string2 ,length ) //
    string2中的左边起取length个字符
    LENGTH (string ) //string
    长度
    LOAD_FILE (file_name ) //
    从文件读取内容
    LOCATE (substring , string [,start_position ] )
     INSTR,但可指定开始位置
    LPAD (string2 ,length ,pad ) //
    重复用pad加在string开头,直到字串长度为length
    LTRIM (string2 ) //
    去除前端空格

    REPEAT (string2 ,count ) //
    重复count
    REPLACE (str ,search_str ,replace_str ) //
    str中用replace_str替换search_str
    RPAD (string2 ,length ,pad) //
    str后用pad补充,直到长度为
    length
    RTRIM (string2 ) //
    去除后端空格

    STRCMP (string1 ,string2 ) //
    逐字符比较两字串大小,
    SUBSTRING (str , position [,length ]) //
    strposition开始,length个字符
    ,
    注:mysql中处理字符串时,默认第一个字符下标为1,即参数position必须大于等于1
     

     

    1. mysql> select substring('abcd',0,2);  
    2. +-----------------------+  
    3. substring('abcd',0,2) |  
    4. +-----------------------+  
    5.                       |  
    6. +-----------------------+  
    7. row in set (0.00 sec)  
    8.  
    9. mysql> select substring('abcd',1,2);  
    10. +-----------------------+  
    11. substring('abcd',1,2) |  
    12. +-----------------------+  
    13.     ab                |  
    14. +-----------------------+  
    15. row in set (0.02 sec)  

    TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符
    UCASE (string2 ) //
    转换成大写
    RIGHT(string2,length) //
    string2最后length个字符
    SPACE(count) //
    生成count个空格

    (2).数学类

    ABS (number2 ) //绝对值
    BIN (decimal_number ) //
    十进制转二进制
    CEILING (number2 ) //
    向上取整
    CONV(number2,from_base,to_base) //
    进制转换
    FLOOR (number2 ) //
    向下取整
    FORMAT (number,decimal_places ) //
    保留小数位数
    HEX (DecimalNumber ) //
    转十六进制
    注:HEX()中可传入字符串,则返回其ASC-11,如HEX('DEF')返回4142143
    也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回
    19
    LEAST (number , number2 [,..]) //
    求最小值

    MOD (numerator ,denominator ) //
    求余
    POWER (number ,power ) //
    求指数
    RAND([seed]) //
    随机数
    ROUND (number [,decimals ]) //
    四舍五入,decimals为小数位数]

    注:返回类型并非均为整数,如:
    (1)
    默认变为整形值

    1. mysql> select round(1.23);  
    2. +-------------+  
    3. round(1.23) |  
    4. +-------------+  
    5.           |  
    6. +-------------+  
    7. row in set (0.00 sec)  
    8.  
    9. mysql> select round(1.56);  
    10. +-------------+  
    11. round(1.56) |  
    12. +-------------+  
    13.           |  
    14. +-------------+  
    15. row in set (0.00 sec) 



    (2)
    可以设定小数位数,返回浮点型数据

    1. mysql> select round(1.567,2);  
    2. +----------------+  
    3. round(1.567,2) |  
    4. +----------------+  
    5.           1.57 |  
    6. +----------------+  
    7. row in set (0.00 sec) 

    SIGN (number2 ) //

     

    (3).日期时间类

    ADDTIME (date2 ,time_interval ) //time_interval加到date2
    CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //
    转换时区
    CURRENT_DATE ( ) //
    当前日期
    CURRENT_TIME ( ) //
    当前时间
    CURRENT_TIMESTAMP ( ) //
    当前时间戳
    DATE (datetime ) //
    返回datetime的日期部分
    DATE_ADD (date2 , INTERVAL d_value d_type ) //
    date2中加上日期或时间
    DATE_FORMAT (datetime ,FormatCodes ) //
    使用formatcodes格式显示datetime
    DATE_SUB (date2 , INTERVAL d_value d_type ) //
    date2上减去一个时间
    DATEDIFF (date1 ,date2 ) //
    两个日期差
    DAY (date ) //
    返回日期的天
    DAYNAME (date ) //
    英文星期
    DAYOFWEEK (date ) //
    星期(1-7) ,1为星期天
    DAYOFYEAR (date ) //
    一年中的第几天
    EXTRACT (interval_name FROM date ) //
    date中提取日期的指定部分
    MAKEDATE (year ,day ) //
    给出年及年中的第几天,生成日期串
    MAKETIME (hour ,minute ,second ) //
    生成时间串
    MONTHNAME (date ) //
    英文月份名
    NOW ( ) //
    当前时间
    SEC_TO_TIME (seconds ) //
    秒数转成时间
    STR_TO_DATE (string ,format ) //
    字串转成时间,format格式显示
    TIMEDIFF (datetime1 ,datetime2 ) //
    两个时间差
    TIME_TO_SEC (time ) //
    时间转秒数]
    WEEK (date_time [,start_of_week ]) //
    第几周
    YEAR (datetime ) //
    年份
    DAYOFMONTH(datetime) //
    月的第几天
    HOUR(datetime) //
    小时
    LAST_DAY(date) //date
    的月的最后日期
    MICROSECOND(datetime) //
    微秒
    MONTH(datetime) //

    MINUTE(datetime) //
    返回符号,正负或0
    SQRT(number2) //
    开平方
























































  • 相关阅读:
    struts 数据验证指定方法(使用xml文件)
    struts2.0简单页面 (不带拦截器和带拦截器案例)
    tomcat启动流程 和 struts 详解
    代理类Proxy------ WeakHashMap----ReferenceQueue---- Reference
    java 文件上传 struts2.0实现
    java struts xml文件设置----自定义日期转换器(局部,及全局类型转换器类)
    java request,response解析及中文编码 , jsp注释 xml中文编码,getsession()使用方法
    java jsp自定义标签
    Java 通讯录contact
    [Machine Learning for Trading] {ud501} Lesson 3: 01-02 Working with multiple stocks
  • 原文地址:https://www.cnblogs.com/wuqingzangyue/p/5770018.html
Copyright © 2011-2022 走看看