看了一下我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) |