mysql 学习小札(1)

一、简介
     RDBMS -- relational database management system
     SQL -- structed query language     读音"ess-queue-ell"或"sequel"      ★★
     MYSQL -- 读音"my-ess-queue-ell",一般指整个MYSQL RDBMS
     mysql -- 代表一个特定的客户机程序
     MYSQL = server (服务器)+ mysqldump(转储) + mysqlimport(导入) + mysqladmin(查看服务器状态、管理任务)and so on,,且提供了客户机编程,总的来说MSQL = 服务器 + 客户端     ★★
     
     默认规则 -- 关键字、函数名大写, 数据库、表、列小写! 


二、简单用法

     1.SETELCT NOW(), USER(), VERSION(), DATABASE(), UNIX_TIMESTAMP(); 
          DATABASE() -- 显示当前使用的数据库
          UNIX_TIMESTAMP() -- UNIX时间戳,即1970-01-01 00:00:00 到现在的秒数同linux下的time()    

     2.GRANT ALL ON dbname.* TO username@% IDENTIFIDE BY "initial-pssword"
          简单的授权命令,至于@后面,可是loacalhost、制定的host等其他,基本格式是这样的
     
     3.启动命令格式 -- mysql -u username dbname -p -h hostname -P port  
              放弃之前键入的命令 --  \c
              退出可键入 -- quit; 或 exit;
               使用某数据库 -- USE databasename; 

     4.创建表的基本格式:
          CREATE TABLE sample
           (
               last_name VARCHAR(15) NOT NULL,
               sex ENUM('F', 'M') NOT NULL, → 枚举类型,也可用CHAR(1)来代替,ENUM值也可以是多个字符
               student_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, → 无需逗号隔开个属性
               data DATE NOT NULL, → DATA 格式是YYYY-MM-DD
               death DATE NULL
           )
           说明:
                    1)AUTO_INCREMENT → MYSQL一种特殊的属性,在创建一个新的记录时,若遗漏了student_id的值,MYSQL将自动生成一个大于此列中最大值得唯一ID插入     ★★
                    2)PRIMARY KEY → 为快速查找进行索引,但然后又众所周知的意思了,此处省略
                    3)也可以将PRIMARY KEY (student_id, sex)格式来设定主键

                SHOW TABLES;
                SHOW DATABASES;
                 DESCRIBE tablename;

    5.插入信息
          1)INSERT INTO student VALUES('name', 'sss'), ('name2', 'sss');
              INSERT INTO student (col_name1, col_name2) VALUES(value1,value2), (value1-2, value2-2);
              INSERT INTO student SET last_name='swf', firstname='sss'; (SET子句中未命名的则赋默认值) ,有的老版本MYSQL支持    ★★
          2)shell下可通过
              ◆ mysqlimport批量进行处理 ↔ LOAD DATE INFILE 一样-- 具体的man下
               mysqlimport -u root qidian -p --local chapter.txt → 从本地chapter.txt中加载内容批处理
              ◆ mysql -u root -p databasename < chapter.txt 效果一样     ★★★
              ◆ cat inser_*.sql | mysql -u root -p databasename     ★★★
     
    6.检索信息
          1)MYSQL中一般串的比较是不区分大小写的!
               逻辑运算符→AND、OR、NOT,比较运算符只提一个<>或!=
          2)NULL 值
               ◆ 进行NULL值检索时,不能用!=NULL等,只能用WHERE death IS NULL 或 IS NOT NULL     ★★★
               ◆ MYSQL3.23及以后的版本有一个特殊的<=>,即WHERE  death <=> NULL 或 NOT (death <=> NULL)
               ◆ 排序时,NULL 值默认是“最小的”,若ASC,则排第一行,若为DESC,则排最后
       3)排序、LIMIT
             ◆ 若未指定,SELECT默认按升序显示
             ◆ MYSQL3.23可按照一个公式来排序查询结果 → ORDER BY RAND() LIMIT 1 即随机抽取一个记录
             ◆ LIMIT 也可根两个参数 → LIMIT 3,2 表示显示从第3行开始的后面2个记录
       4)计算
             ◆ SELECT FORMAT(SQRT(2), 2); → FORMAT第二个参数表示显示的小数点后面的位数
             ◆ SELECT CONCAT(first, "###", last) AS alias FROM sample;
                     → CONCAT将几个字符连接起来,AS 取得别名中如果有空格,则要用AS "alias_1 aliai_2"
             
         5)日期函数
             ◆ YEAR()、MONTH()、DAYOFMONTH()、TO_DAYS()、DATE_ADD()、DATE_SUB()、CURRENT_DATE()
             ◆ SELECT name FROM sample WHERE MONTH(birth) = 3; 或 WHERE MONTHNAME(birth) = "March";
             ◆ SELECT name FROM sample WHERE MONTH(birth) = MONTH(CURRENT_DATE) 
AND DAYOFMONTH(birth) = DAYOFMONTH(CURRENT_DATE) → 查询今天过生日的人
             ◆ SELECT FLOOR((TO_DAYS(death) - TO_DAYS(birth))/365) → 某人活了多少年,FLOOR截掉小数
             ◆ MYSQL3.22以来 可使用DATE_ADD、DATE_SUB
                    SELECT DATE_ADD("1970-1-1", INTERVAL 10 YEAR) → 得到1980-1-1
                    SELECT DATE_ADD(CURRENT_DATE, INTERVAL 10 DAY)
         6)模式匹配
             ◆ LIKE 或 NOT LIKE → 不区分大小写  ★★★ 
             ◆ 指定一个包含通配符的串 → _匹配任意单字符, %匹配任意字符序列(含空序列)★★
             ◆ 也支持基于正则表达式的模式匹配
         7)生成汇总
             ◆ DISTINCT删除结果中的重复行 → SELECT DISTINCT stat FROM smaple;
             ◆ SELECT COUNT(DISTINCT name) → 查询不同名字的总数
             ◆ HAVING 类似于WHERE,但是在结果已经选出后才应用的,用来减少服务器实际送到客户端的结果 ★★
                SELECT stat, COUNT(*) AS count FROM smaple GROUP BYstate HAVING count > 1 ORDER BY count;

    7.变动
          1)DELETE FROM tbl_name WHERE …… 而DELETE FROM tbl_name → 删除所有记录
          2)UPDATE tbl_name SET name = "swf WHERE ……"
          3)ALTER tbl_name → 改变表的结构
               ◆  ALTER TABLE tbl_name ADD member_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY;
  4)ALTER TABLE tablename RENAME TO newname; → 修改表名

    8.简化连接操作
          1)利用选项文件存储参数 → 请参考相应资料
          2)shell历史命令 → !my搜索历史命令中以my开头的最近的命令
               shell alias命令 → 可在shell程序设置文件(如.bash_profile)中放置一个alias命
                                        alias mysql_cmd='mysql -u root -p qidian'
          3)脚本 → #! /bin/sh
                         exec mysql -u root -p qidian 
              
     9.MYSQL输入编辑命令快捷键
          1)↑ ↓ ← → 分别对应CTRL+P N B F
          2)CTRL+A 将光标移到行首,CTRL+E将光标移到行尾, CTRL+K删除光标到行尾的所有字符
                CTRL+_撤销最后的更改,可以重复

     10.以批方式运行MYSQL
          1)shell下 mysql -u root -p qidian < chapter.sql > out_file
          2)shell脚本范例
               #! /bin/sh
               if [ $# -ne 1]; then echo "Please specify one keyword"; exit; fi
               mysql -t sample_db <<QUERY_INPUT → 关键字
               SELECT last, first FROM member
               WHERE interests LIKE "%$1%"
                QUERY_INPUT
     




     




     

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值