• MySQL学习笔记(二)


    连接与断开服务器

          应该以下面的方式连接MySQL服务器,而不是将密码以明文方式输入连接。

    C:> mysql -h host -u user -p
    Enter password: ********

          连接非本机的MySQL服务器时,可以在-h后面加上目标MySQL服务器的IP。
    C:> mysql -h 192.168.1.12 -u user -p

    Enter password: ********

          成功地连接后,可以在mysql>提示下输入QUIT (或q)随时退出:
    C:> QUIT

          你能将mysql用作一个简单的计算器:
    mysql> SELECT SIN(PI()/4), (4+1)*5;
    +------------------+---------+
    | SIN(PI()/4) | (4+1)*5 |
    +------------------+---------+
    | 0.70710678118655 | 25 |
    +------------------+---------+
    1 row in set (0.02 sec)

    从文本文件中导入数据

          假设已经创建了pet表,但是表中,没有数据,需要为pet表插入如下的数据:

    name owner species  sex birth deth
    Fluffy Harold cat f 2003-3-2  
    Claws Gwen dog m 2003-4-1  

         你可以创建一个文本文件“pet.txt”,每行包含一个记录,用定位符(tab)把值分开。

         要想将文本文件“pet.txt”装载到pet表中,使用这个命令:

    mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;   

         请注意如果用Windows中的编辑器(使用 做为行的结束符)创建文件,应使用:

    mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet-> LINES TERMINATED BY ' ';

    (在运行OS X的Apple机上,应使用行结束符' '。)

         如果你愿意,你能明确地在LOAD DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符。这对读入文件“pet.txt”的语句已经足够。
         如果该语句失败,可能是你安装的MySQL不与使用默认值的本地文件兼容。

     NULL值操作

         MySQL中为了表示一个值是非null的,应该使用的是IS NOT NULL而不是 != NULL。

         在GROUP BY中,两个NULL值视为相同。

         执行ORDER BY时,如果运行 ORDER BY ... ASC,则NULL值出现在最前面,若运行ORDER BY ... DESC,则NULL值出现在最后面。

         对于聚合(累计)函数,如COUNT()、MIN()和SUM(),将忽略NULL值。对此的例外是COUNT(*),它将计数行而不是单独的列值。

        对于某些列类型,MySQL将对NULL值进行特殊处理。如果将NULL插入TIMESTAMP列,将插入当前日期和时间。如果将NULL插入具有AUTO_INCREMENT属性的整数列,将插入序列中的下一个编号。

         NULL操作的常见错误是不能在定义为NOT NULL的列内插入0或空字符串,但事实并非如此。在NULL表示"没有数值"的地方有数值。使用IS [NOT] NULL则可以很容易地进行测试,如下所示:
    mysql> SELECT 0 IS NULL, 0 IS NOT NULL, '' IS NULL, '' IS NOT NULL;
    +-----------+---------------+------------+----------------+
    | 0 IS NULL  | 0 IS NOT NULL| '' IS NULL   | '' IS NOT NULL |
    +-----------+---------------+------------+----------------+
    | 0              | 1                   | 0               | 1                     |
    +-----------+---------------+------------+----------------+

    ORDER BY排序

          这意味着,对于等同但大小写不同的列,并未定义其顺序。对于某一列,可以使用BINARY强制执行区分大小写的分类功能,如:ORDER BY BINARY col_name.
          默认排序是升序,最小的值在第一。要想以降序排序,在你正在排序的列名上增加DESC(降序 )关键字:
    mysql> SELECT name, birth FROM pet ORDER BY birth DESC;

    mysql> SELECT name, species, birth FROM pet
            -> ORDER BY species, birth DESC;

         查询结果按照species升序排列,相同的species再按照birth降序排列。

    日期计算

     mysql> SELECT name, birth, CURDATE(),

            -> (YEAR(CURDATE())-YEAR(birth))
           -> - (RIGHT(CURDATE(),5)<RIGHT(birth,5))
           -> AS age
           -> FROM pet ORDER BY name;

    name     | birth          | CURDATE()  | age |
    ---------+------------+------------ +------+
    Bowser  | 1989-08-31 | 2003-08-19 | 13 |

          MySQL提供几个日期部分的提取函数,例如YEAR( )、MONTH( )和DAYOFMONTH( )等。

          RIGHT()提取日期的MM-DD (日历年)部分的最右面5个字符。比较MM-DD值的表达式部分的值一般为1或0,如果CURDATE()的年比birth的年早,则年份应减去1。

          查询下个月的方法有以下两种:

          方法一:

    mysql> SELECT name, birth FROM pet
           -> WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));

          方法二:

    mysql> SELECT name, birth FROM pet
           -> WHERE MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1;

          要想找出正好包含5个字符的名字,使用“_”模式字符:
    mysql> SELECT * FROM pet WHERE name LIKE '_____';

          你还可以使用源代码或 .命令从mysql提示符运行脚本:
    mysql> source filename;

    mysql> . filename

    使用用户变量

          你可以清空MySQL用户变量以记录结果,不必将它们保存到客户端的临时变量中。
          例如,要找出价格最高或最低的物品的,其方法是:
    mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
    mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;
    +---------+--------+-------+
    | article     | dealer   | price   | 
    +---------+--------+-------+
    | 0003      | D        | 1.25    | 
    | 0004      | D        | 19.95  |
    +---------+--------+-------+

          CONCAT(p1.id,p2.id) + 0 AS tvid
          我们想要在p1.id和p2.id的连接上以数字顺序排序。结果加0使得MySQL把结果变为一个数字。

  • 相关阅读:
    内存中字的存储
    代码段
    CPU运行的流程
    字的传送
    内存中字的存储
    c语言中求数组元素的最大值和最小值
    linux系统 centos8.3 中安装 Rsudio
    Error in .External2(C_X11, paste0("png::", filename), g$width, g$height, : 解决linux R绘图问题
    linux系统中使用R的Cairo绘制png格式图片
    c语言中利用二维数组统计考试成绩之和
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/3735757.html
Copyright © 2020-2023  润新知