接着昨天的内容
我新建一个名为president的表格,用insert into 语句插入内容的时候,出现一个警告,然后用show warnings;来查看。其实应该是我的表中的birth, death变量的数据类型写错,我定义为了time,实际应该为date。一开始我自己没发现啊,然后就觉得奇怪有警告。就这样我还傻傻的继续插入值,然后select *from一下,就发现了问题
然后我就想说那改变一下列变量的数据类型吧,用到alter table president modefiy column birth date not null;来改变数据类型,这里顺带说一下,一些基本的对列的操作。
增加一列:alter table 表名 add column 列名 数据类型;可以添加在指定列后面alter table 表名 add column 列名 数据类型 after 其他列名;若想插在第一列,则在后面加first;
整列删除:alter table president drop column birth;
我在该了变量类型之后,插入一些内容,出现以上情况,因为我没有删除之前在变量名错误情况下输入的内容,然后我就想说怎么在没有id的情况下,即没有索引值的情况下删除某行某列的内容呢? 所以以后在建表格的时候记得建一个索引,方便删内容啊!
对表格信息的检索: select lastname, firstname from president order by lastname; 按姓的字母顺序返回总统名字
检索中还可以用到 算术比较运算符 > ,< , <=等等 如 select lasetname ,firstname from president Where death<=>null;
还可以按倒序排列: select lastname, firstname from president order by lastname desc;
select lastname,firstname,birth from president order by birth desc limit 10,5; 按birth时间倒序排列,但显示的是跳过前面10行后的5行内容。
注意点:可以用as给列取别名,也可以省略。 select 1 one, 2 two, 3, three;
如果在上文提到的select firstname lastname from president; firstname 和lastname之间忘了加逗号,那么lastname会被认为是firstname的别名,而表中的lastname这一列会消失。
在Mysql中使用日期的时候,年份总是在最前面,如果想知道总统活了多久可以调用一个函数来计算两个日期之间的时间间隔,下面的YEAR是指定时间间隔单位为年
select lastname,firstname,birth,death, TIMESTAMPDIFF(YEAR, birth ,death) as age from president where death is not null order by age desc limit 5;
和日期相关的函数还有CURDATE(), TO_DAYS(), DATE_ADD(), DATE_SUB().
Mysql支持模式匹配操作,用关键字LIKE和NOT LINK,
select firstname from president where firstname like '%w';显示出名字中以W开头的总统名字,
从多个表中检索信息:select student_id,data,score,category from grade_event INNER JOIN score ON grade_event.event_id=score.event_id Where date='2012-09-09';
ON后指明两个表的连接条件,输出的内容是2012-09-09那天的 select后的四个列的内容。
今天就到这儿了!