MySQL重要指令

  • \c终止当前正在输入的指令
  • 如果提示符变成 '> 或 ">,说明引号未封闭,此时输入任何指令都会被忽略,包括quit。应该先输入一个引号,再输入指令。
  • show create table table_name;可以显示表格的详细信息,包括约束。
  • describe table_name;显示表格的样式
  • 如果查询条件是不等于null,应该用XXX is not null 而不是 XXX!=null,因为null是特殊值,不能使用普通比较符比较。
  • MySQL中的通配符:%占多位,_占一位
    正则表达式中:‘.’匹配单个字符,[...]匹配括号内的任意字符,‘-’表示范围如[a-z],“ *”匹配零个或多个在它前面的东西,
                             在模式开始处使用“^”或在模式的结尾用“$”,“{n}”表示重复n次。
                             SELECT * FROM pet WHERE name REGEXP BINARY '^b';
                             添加BINARY区分大小写
  • 模式匹配:select * from pet where name [not] like 'b%'; 显示名字以b开头的宠物
  • 匹配正则表达式:select * from pet where name [not] REGEXP '^b'; 显示名字以b开头的宠物
                        或者 select * from pet where name [not] RLIKE '^b';
  • select count(*) from pet;  显示pet的行数
  • SELECT owner, COUNT(*) FROM pet GROUP BY owner; 显示每个主人有多少宠物
    SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;  这里相当于对种类和性别做了笛卡儿积。
  • SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species    用pet表联结自身来进行相同种类的雄雌配对
    -> FROM pet AS p1, pet AS p2
    -> WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';
  • SHOW INDEX FROM tbl_name 生成有关索引的信息s
  • Linux启动MySQL服务器:sudo service mysql start
  • windows启动MySQL服务器:net start mysql
  • mysql -u root 以管理员身份登录
  • zerofill 用0填充;给键命名:constraint  shop_pk primary key(article)

  
  
  1. CREATE TABLE shop (
  2. -> article INT( 4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
  3. -> dealer CHAR( 20) DEFAULT '' NOT NULL,
  4. -> price DOUBLE( 16, 2) DEFAULT '0.00' NOT NULL,
  5. -> PRIMARY KEY(article, dealer));
  • 从文件中加载数据:LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字;
  • 导出:SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;
  • 备份:mysqldump -u root 数据库名>备份文件名;   #备份整个数据库
               mysqldump -u root 数据库名 表名字>备份文件名;  #备份整个表

  • 恢复:mysql -u root test < bak.sql;   #从bak.sql中恢复到任意新建的库(test)中,需要退出MySQL
               source 文件名;
  • 显示price这一列最大值对应的行(子查询)
    
       
       
    1. mysql> SELECT article, dealer, price
    2. -> FROM shop
    3. -> WHERE price=( SELECT MAX(price) FROM shop);
  • 也可以先按价格降序排列,然后用limit字句显示第一行
    
       
       
    1. mysql> SELECT article, dealer, price
    2. -> FROM shop
    3. -> ORDER BY price DESC
    4. -> LIMIT 1;
  • 找出每项物品中对应出价最高价格
  • 
       
       
    1. mysql> SELECT article, MAX(price) AS price
    2. -> FROM shop
    3. -> GROUP BY article;

    通过使用用户变量找出价格最高或者最低的物品:

    
       
       
    1. mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
    2. mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;

    等价于

    select * from shop where price=(select min(price) from shop) or price=(select max(price) from shop);
       
       

     

  • AUTO_INCREMENT = 100  可以为序号生成一个起始值 100
  • color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL   枚举类型字段
  • owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id)   references     声明外键,该句法可以创建一个列;但不创建任何索引或关键字。
  • SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;  声明用户变量
  • SELECT @last := LAST_INSERT_ID();   最后插入数据的ID
  • SHOW CREATE TABLE shirt \G;   按行输出每列的属性
  • SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1' OR field2_index = '1'  两个搜索条件
  • SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1'
    UNION
    SELECT field1_index, field2_index FROM test_table WHERE field2_index = '1';  联合搜索
  • CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL, day INT(2) UNSIGNED ZEROFILL);
    日期类型
  • SELECT year,month,BIT_COUNT(BIT_OR(1<<day)) AS days FROM t1 GROUP BY year,month;
    计算每个月中某用户访问网页的天数,这里重复的日期算一天;
    还可以用distinct去重:
    select year,month,count(distinct day) from t1 group by year,month;
    使用子查询,count参数随便,先按year,month,day三级分组,再按year,month二级分组:
    select year, month, count(0) from (select year, month, day,count(0) from t1 group by year, month, day) as tmp group by year, month;
  • ALTER TABLE pet CHANGE COLUMN sec sex CHAR(1);    修改列名,数据类型
  • UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';     修改某一行数据
  • SELECT name, species, birth FROM pet ORDER BY species, birth DESC;    对多个列排序,DESC只对它前面的列有效。
  • TIMESTAMPDIFF(YEAR,birth,CURDATE())    计算日期差,等价于
    (YEAR(CURDATE())-YEAR(birth)) - (RIGHT(CURDATE(),5)<RIGHT(birth,5))
    MySQL提供几个日期方面的提取函数,例如YEAR()MONTH()DAYOFMONTH()
  • SELECT name, birth FROM pet WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));
    找下个月出生的动物,也可以mode再加1:
    MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1;
  • <>和!=都是不等于,<>是现在的标准
  •  

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值