单表操作

sql语句【CRUD】

  • insert语句;

    • 插入数据于字段的数据类型相同;
      • 当数字字符时,会尝试转型;
    • 数据长度应在规定范围内【字符串】;
    • 字符和日期在单引号中;
    • 当允许时,可以插入空值;
    • 当不给某个字段值时,有默认值就会添加,否则【NOT null】报错;
    -- values与列表位置一一对应;
    insert into table_name(col1, col2..)
    			values(value1, value2);
    -- 一次插入多条记录
    insert into table_name(col1, col2..)
    			values(value1, value2),(),();
    -- 给所有字段添加
    insert into table_name
    			values(value1, value2),(),();
    
  • update语句

    • 更新已有数据;
    • set鄙视修改或赋予的值;
    • where是更新条件;
    -- where是匹配条件,没有时是对所有记录;
    UPDATE t13
    	SET `sex` = '男', 字段2 = 值...
    UPDATE t13
    	SET `sex` = '男'
    	WHERE `name`='ch';
    UPDATE t13
    	SET salary = salary + 200;
    
  • delete语句

    -- 删除id对应的记录
    DELETE FROM t13
    	WHERE id = 3;
    -- 删除所有记录,但是表还在
    DELETE FROM t13;
    -- 删除表
    DROP TABLE t13;
    
  • select语句

    -- distinct 去重复;
    SELECT DISTINCT id, `name` FROM student;
    SELECT DISTINCT * FROM student;
    
    -- 加入表达式 + as 别名;
    SELECT DISTINCT `name` AS '名字', (chinese + english + math) AS 'total score'
    	FROM student;
    
  • where子语句中的运算符;

    • 比较运算符:<,>,...,!= (<>,不等于);
      • between ... and ... :在某区间的值,闭区间[ ];
      • in(set):在集合列表中,in(100,200,300);
      • like '...' ,not like '...':模糊查询;
      • is null:是否为空;
    • 逻辑运算符:and, or, not;
  • order by语句:

    指定排序的列,既可以是表中列名,也可以是别名;

    • asc:升序,默认
    • desc:降序;
  • 统计函数

    • 统计函数:count()
    -- 统计返回记录条数;
    SELECT COUNT(*) FROM student;
    -- 统计id条数,会排除null记录;
    SELECT COUNT(id) FROM student;
    
    • sum(),一般对数值列使用;
    • avg(),返回满足where条件的一列平均值;
    • max(),
    • min(),
    • 分组统计:
      • group by:进行分组;
      • having:对分组后的结果进行过滤;
        • where使用在聚合函数之前,having使用在聚合函数之后;
        • where用于筛选行的条件,having用于筛选组的条件;
  • 字符串函数:

    charset();  -- 返回字符集
    concat(str1, str2); -- 连接字符串
    instr(str, substr); -- 返回substr在str中出现的位置,没有,返回0;
    ucase(str); -- 转换大写;
    lcase(str); -- 转换小写;
    left(str, length) -- 取前length个字符
    length(str) -- str的长度
    replace(str, seach_str, relpace_str) -- 在str中替换seach_str字符;
    strcmp(str1, str2) -- 比较两个字符
    substring(str, posion, [length]) -- 从1开始取子字符串;
    ltrim(str),rtrim(),trim(); -- 出去前后端空格;
    
  • 数学函数

    abs(num); -- 绝对值
    bin(decimal_num); -- 十进制转2进制
    ceiling(num); -- 向上取整;
    conv(num, from_base, tobase); -- 进制转换;
    floor(num); -- 向下取整;
    format(num, decimal_place); -- 保留小数位数,四舍五入;
    hex(num); -- 转16进制;
    least(num1, num2, ...); -- 求最小值;
    mod(num1, num2); -- 求余;
    rand([seed]); -- 其范围是[0, 1.0];
    
  • 日期相关函数

    current_date() -- 当前日期
    current_time() -- 当前时间
    current_timestamp() -- 当前时间戳
    date(datetime) -- 返回datetime中的日期部分;
    date_add(date1, interval d_value) -- 在date1中加上日期或者时间;
    date_sub(date1, interval d_value) -- 在date1中减去一个时间;
    -- d_value 的单位:year,month, day, hour,minute, second;
    datediff(date1, date2); -- 两个日期只差,天;
    timediff(date, date2); -- 两个时间差,hh,mm,ss;
    now(); -- 当前时间
    year|month|day|date|time(datetime); -- 年月日
    from_unixtime(int, '%y-%m-%d  %H:%m:%s');
    unix_timestamp(); -- 返回 1970-1-1但现在的毫秒数;
    
  • 加密函数

    user() -- 查询登录用户;
    database() -- 数据库名称;
    MD5(str) -- 为字符串算出一个MD32的字符串,用于密码加密;
    password(str) -- 从str计算并返回密码字符串,mysql默认加密算法;
    
  • 流程控制函数:

    if(exp, expr1, expr2); -- 三元表达式
    ifnull(expr1, expr2);
    select case when expr1 then expr2
    		   when expr3 then expr4
    		   else expr5
    		   end;
    -- 如果expr1是true,返回expr2,
    -- 如果expr3是true,返回expr4,
    -- 否则返回expr5;
    
posted @ 2025-03-04 10:25  烟雨断桥  阅读(5)  评论(0)    收藏  举报