当前位置: > 数据库 > MySQL >

mysql 语句查询

时间:2016-07-17 22:32来源:linux.it.net.cn 作者:IT
看了一下我mysql,分享一下成果。当然,sql博大精深,欢迎高手吐槽,并献上有技术含量的句子。
要加注释,因为菜鸟看不懂》。。。
mysql语句基础。
造出一张表。
CREATE TABLE `main` (
/*自动递增*/
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `password` varchar(100) NOT NULL,
/*定义主键,*/
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ENGINE=MyISAM 表达储存模式,常用的还有innodb.

1.    查询总共有多少字段。
       select count(*) from qg_cate;
2.   打印出该表单所有信息。
      show full columns from qg_admin;
3 用as来创建字段
    select qg_name as 'aaa' from qg_admin;
select id,city id*city as idcity from table;
4.   查询数据库的基本信息。
     select version(),database();
5.   指定查出字段的顺序。
      select remark, uid, id, regdate from biao1;
6  .   select * from mail where srcuser<'c' amd size>500;
      比较值放where后面,不符合要求的值不会出现。
     select srcuser,srcuser<'c',size,size>500 from mail;
     符合要求的结果是1,不符合的结果是0.
7.
   这个比较重要了,要查询是否等于空,不能id=null,而是用is null或is not null;例如
  select * from img where id is not null;
8.
   if函数的简单用法,格式if(x,x,x);
  例子:
   select name,if(id is null,'unknown',id) as 'id' from table;//如果id为空,就显示unknown。
9,
   select
   date_format(t,'%M %e, %y') as date_sent,
  concat(srcuser,'@',srchost) as sender
   from mail;
   concat可以将两个字段链接起来,中间是@符号。
10.
   distinct:过滤掉相同字段,删除重复出现的值。例如:
   select distinct srcuser from mail;
11,
     count(),某个结果的数量,例子是不同结果的数量。
    select count(distinct srcuser) from mail;

12
select name from demo.think_role;
from后面是库里的表明,也就是说不用use 库,可以直接跨库搜索。

13
范围查询,比如 where id between 4 and 9;

14.几个常用的操作符
and: 比如id>3 and uid>8;
or:比如id>3 or uid>9;
in:比如 in(3,9);这里拿到的是第三和第九条信息。
not:比如not in(3,4);就是除了第三和第四条
exists():这个括号里可放整句sql,返回true或false,比较高级,带补充。
15.
like   %匹配所有,_匹配单个字符。
16,特别重要的多表查询。
'select qg_singlepage.qg_id,qg_name,qg_filename,qg_display,qg_location,qg_show from ' .
                'qg_singlepage inner join qg_termianl using(qg_uid) where ' .
                'qg_termianl.qg_name like \'%'.$like.'%\' and qg_singlepage.qg_uid like \'%'.$_GET['id'].'%\' ' .
                'limit '.$Page->firstRow.','.$Page->listRows limit 0,2;
17.
正则查询。
select prod from products where prod regexp '[123] Ton' ;
regexp后面是正则表达式。
这里用转义符飞话要用两个\\mysql用一个,正则用一个。
18 函数
rtrim() 取出值右边的空格。
upper()输出值大写。
select upper(name) from table_copy;
重要的是下面几个函数
avg(),平均值
count(),行数,上面讲过两遍了,其实这是个函数。
max()最大值。
min()最小值。
sum() 某列的和。
19
使用union进行联合查询。他可以进行比连接表更复杂的联合查询,他可以连接where语句。
select name from table1 where id=3
union
select price from table2 where id=5;
20 视图
create view product as 
select cust_name,cust_contace,id
from customers,orders,orderitems
where customers.id=orders.id
and orderitems.order_num=orders.ordernum;
创建视图,虚拟表product。里面有字段select后面的,从from后三个表中获得,where后是条件。
然后select × from product就能查到值。

21:超级重要
将一个表单某些字段里的数据导入到另一个表:insert
 into 
 qg_trainingsearch
 (qg_title,qg_trainingid)
 select 
 qg_title,qg_id 
 from qg_training where ...;

22.建立索引。
建立索引sql语句。    Alter table 表名 add index 索引名(栏位名1,栏位名2);
23. 建立索引sql语句。    Alter table 表名 add index 索引名(栏位名1,栏位名2);


(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容