zoukankan      html  css  js  c++  java
  • MYSQL常用函数以及如何操作数据

    -- 【SQL语句的组成】

    -- DML数据操作语言 (插入、修改和删除数据库中的数据) INSERT UPDATE DELETE

    -- DQL数据查询语言 (用来查询数据库中的数据) SELECT

    -- DCL数据控制语言 (用来控制存取许可、存取权限等) GRANT  REVOKE

    -- DDL数据定义语言 (用来建立数据库、数据库对象和定义表的列) CREATE DROP

    USE mydb;

    CREATE TABLE IF NOT EXISTS tb2( id INT UNSIGNED PRIMARY KEY auto_increment,

    username VARCHAR(255) NOT NULL,

    age INT DEFAULT 0,

    sex enum("男","女") DEFAULT "男"

    );

    SHOW COLUMNS FROM tb2;

    -- 数据插入语句  INSERT -- INSERT[INTO] 表名 (列名) VALUES (列值)[,(列值),……];

    -- ①如果省略列名,则后面的列值必须为所有的列赋值,包括自增列和默认列。

    -- ②如果不省略列名,则后面的列值需要与前面的列名一一对应;并且需要给所有非null列赋值 INSERT INTO tb2(username,age,sex) VALUES ("张三",12,"女"); INSERT tb2 VALUES (7,"张三",12,"女"); INSERT INTO tb2(username,age,sex) VALUES ("张三",12,"女"),("张三",12,"女"),("张三",12,"女"),("张三",12,"女");

    -- 数据更新语句

    -- UPDATE 表名 SET 列名=列值[,列名=列值,……] [WHERE 条件]

    -- ① WHERE条件可以省略,但是表示修改表中所有的行 UPDATE tb2 SET sex="男"; UPDATE tb2 SET username="李小二",age=18,sex="女" WHERE id=8

    /*[常用where条件判断]

    1、关系运算 >  <  =  !=  <>  >=  <=

    2、逻辑运算  NOT AND OR

    3、 ISNULL(字段)检测是否为空  SELECT * FROM tb2 WHERE NOT ISNULL(age);

    -- 所有年龄为空的用户

    4、BETWEEN……AND……介于两个值之间 SELECT * FROM tb2 WHERE age BETWEEN 10 AND 14; 

    -- 相当于 age>=10 and  age<=14

    5、in 在某些值之间的数据 SELECT * FROM tb2 WHERE id in(1,3,5,7,9);

    6、LIKE 相似匹配

    ①相似匹配时,使用%表示任意字符个数(0到多个);

     SELECT * FROM tb2 WHERE username LIKE "%张%";  -- "张%"->用"张"开头  ("%张"->用"张"结尾   "%张%"->任意位置包含"张")

    ②相似匹配时,使用_表示一个字符的个数;

    SELECT * FROM tb2 WHERE username LIKE "_二%";  --  第二个子是"二"的

    7、EXISTS(子查询语句):

    如果子查询与返回数据>=1行,则EXISTS返回true,否则返回false,

    SELECT * FROM tb2 WHERE EXISTS(SELECT * FROM tb3);

    -- 如果tb3返回至少一行数据,则条件成立

    8、ALL(子查询):子查询返回的数据,需要全部满足,才能成立:

    SELECT * FROM tb1 WHERE username !=ALL (SELECT username FROM tb1 WHERE id>7);

    -- 用户名 不能等于 子查询返回用户名列表中的任意一个;

    9、ANY(子查询):子查询返回的数组,满足其中一个,即可成立:

    SELECT * FROM tb1 WHERE username =ANY (SELECT username FROM tb1 WHERE id>7);

    -- 用户名 等于 子查询返回用户名列表中的任意一个; */

    -- 删除表中数据

    -- DELETE [FROM] 表名 [WHERE 条件] DELETE FROM tb1 WHERE id>11;

    SELECT * FROM tb2 WHERE EXISTS(SELECT * FROM tb2 WHERE username="李小二");

    SELECT * FROM tb2 WHERE username LIKE "__二";

    SELECT * FROM tb2 WHERE username LIKE "%张%";

    SELECT * FROM tb2 WHERE id in(1,3,5,7,9);

    SELECT * FROM tb2 WHERE age BETWEEN 10 AND 14;

    SELECT * FROM tb2 WHERE NOT ISNULL(age);

    SELECT * FROM tb2;

    -- 数据查询语句

    -- SELECT 列名,[列名,……] FROM 表名 WHERE 条件 ORDER BY 排序的列名 ASC/DESC

    -- ①SELECT * 表示查询所有字段;

    -- ② ORDER BY 表示对查出的数据进行排序,必须在where后面;

    --  ASC 表示升序排列  DESC 表示降序排列 SELECT * FROM tb2 ORDER BY id DESC

    -- 列表达式

    -- 根据已有的列,查询出来的结果,我们使用case结构虚拟出来的列,称为列表达式

    -- AS 关键字

    -- 用于给列名起别名,AS关键字还可以省略。 SELECT  username as '名字',sex '性别',age,

      -- 给username列起别名"名字",sex起别名"性别"

    ( CASE -- 表示判断的开始 WHEN sex="男"

    THEN 1 -- 如果查询出sex是男,则虚拟的列表达式的值就是1

    WHEN sex="女" THEN 2 ELSE 3 -- 上面所有的when都不成立时,列表达式的值为3

    END -- 表示判断的结束 )

    as sexno  -- 给虚拟出的这一列,起别名叫sexno

    FROM tb2;

    -- DISTINCT 对查询之后的结果去重。

    * ABS(X)  返回X的绝对值

    CEIL(X) 向上取整   1.5->2

    FLOOR(X) 向下取整   -1.5->-2   1.5->1

    ROUND(X) 四舍五入取整 ROUND(X,D)  将X保留D位小数,进行四舍五入

    TRUNCATE`(X,D)  将X保留D位小数,不进行四舍五入

    SIGN(X) x是负数返回-1   正数返回1,0返回0

    POW(X,Y)  返回X的Y次幂 PI() 返回圆周率 */

    SELECT CEIL(1.5) SELECT ABS(-1)

    SELECT * FROM tb1

    /* LENGTH(str):返回字符串的长度。其中一个中文占3个长度;

    CHAR_LENGTH(str): 返回字符串的字符数。其中一个中文只占一个字符;

    CONCAT(str1,str2,...) 拼接多个字符串

    UPPER(str):将字符串全部转为大写;

    LOWER(str):将字符串全部转为小写;

    LEFT(str,n): 返回字符串的前n个字符;

    RIGHT(str,n):返回字符串的后n个字符;

    TRIM(str):去掉str左右两边的空格

    REPLACE(str,s1,s2):  将字符串str中所有的s1换成s2

    SUBSTRING(str,pos,len):截取字符串str,从pos个字符开始,截取len个。如果省略len,则从position开始截取到最后

    INSTR(str,s1):返回s1在str的下标

    INSTR("12-23","-")-->3  下标从1开始

    【字符串转数字格式】

    SELECT CAST("-123" AS SIGNED);

    SELECT CONVERT("123",SIGNED);

    SELECT "123"+0; */

    SELECT CONCAT("123","456","789");

    /*[常用日期函数]

    CURDATE():返回当前日期。2016-06-20

    CURTIME():返回当前时间。09:52:52

    NOW():返回当前的日期和时间

    DATEDIFF(date1,date2):返回date1与date2之间的间隔天数

    ADDDATE(dateTime1,days):返回dateTime1加上days天后的日期

    YEAR(date):返回日期中的年份

    MONTH(date):返回日期中的月份

    DAY(date):返回日期中一个月中的第几天

    WEEK(date[,mode]):返回一个周中的第几天  0->周一

    HOUR(time):返回小时数

    MINUTE(time): 返回分钟数

    SECOND(time):返回秒数

    DATE_FORMAT(date1,format): 将date1使用format要求的格式显示。

    format中可用的占位符格式:

    %Y年份, 数字形式,4位数

    %y年份, 数字形式 (2位数)

    %M月份名称 (January..December)

    %m月份, 数字形式 (00..12)

    %b月份的缩写名称  (Jan..Dec)

    %c月份,数字形式(0..12)

    %D带有英语后缀的该月日期  (0th, 1st, 2nd, 3rd, ...)

    %d该月日期, 数字形式 (00..31)

    %e该月日期, 数字形式(0..31)  

    %H小时(00..23)

    %h小时(01..12)

    %k小时(0..23)

    %l小时(1..12)  

    %i分钟,数字形式 (00..59)

    %S秒 (00..59)

    %s秒 (00..59)  

    %W工作日名称 (周日..周六)

    %w一周中的每日 (0=周日..6=周六)

    */ SELECT CURDATE();

    SELECT

    /*[系统信息函数]

    VERSION(): 取到当前数据库的版本号

    DATABASE(): 返回当前数据库的名字

    USER():返回当前数据库的用户

    CHARSET(str):返回字符串的字符集

    LAST_INSERT_ID():返回最后一个auto_increment的值

    */

    /*[加密函数]

    1、PASSWORD(str):对字符串进行加密,常用于加密密码;

    2、MD5(str):对字符串进行MD5散列加密,常用于不需要解密的数据;

    3、ENCODE(str,pwd):使用加密密码pwd对字符串str进行加密;          加密之后的结果是二进制,该字段需要使用BLOB类型保存。   

    DECODE(mistr,pwd):将ENCODE加密的二进制进行解密,解密密码需与ENCODE的加密密码一致。 */

    SELECT PASSWORD("lalalal");

    /*[多行函数]

    1、SUM():求和  SELECT SUM(age) FROM tb2;

    2、AVG(): 求平均值  SELECT AVG(age) FROM tb2;

    3、MIN():求最小值

    4、MAX():求最大值

    5、COUNT():求总个数

    SELECT COUNT(username) FROM tb2;

  • 相关阅读:
    sql中的不常见查询
    sql中的常见报错;
    wcf_first
    均方值-数学期望-方差
    转:模块度(Modularity)与Fast Newman算法讲解与代码实现
    转:社区发现评估指标-NMI
    转:模块度(Modularity)与Fast Newman算法讲解与代码实现
    转:聚类评价指标
    转:聚类︱python实现 六大 分群质量评估指标(兰德系数、互信息、轮廓系数)
    转:用K-Means聚类分析做客户分群
  • 原文地址:https://www.cnblogs.com/lwhvicky/p/7078384.html
Copyright © 2011-2022 走看看