看了一下我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=utf-8;
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 srcuser500;
比较值放where后面,不符合要求的值不会出现。
select srcuser,srcuser500 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);