创建表
mysql5.5之前默认的存储引擎是MyISAM,而mysql5.5之后默认的存储引擎是InnoDB
插入数据的方式:
1.一次性指定全部列值
eg:insert into student values('Keyle','M',NULL);
说明:此种方法插入,values列表必须包含表中每一列的值,并且值得顺序要与各列在表的存储顺序保持一致(该顺序就是各列在该表的create table中指定的顺序)
也可以多行插入
eg:insert into student values('Avery','F',null),('Nathan','M',null);
2.指定赋值列,并赋值
eg:insert into member(last_name,first_name) values('Stein','Waldo');
3.使用一系列的“列/值”形式进行赋值
eg:insert into member set last_name='ni' ,first_name='xu';
不能用于一次插入多个行
4.利用文件添加新行
情况一:不在库里
mysql -uroot -p sampdb < insert_president.sql
情况二:在库里
source /home/xcn/data/sample/sampdb/insert_president.sql
如果文件里存储的行不是insert语句而是原始数据,可以利用load data语句或客户端程序mysqlimport程序来加载它们
load data语句是一个从文件里读取数据的批量加载程序。它需要在mysql里运行:
eg:load data local infile '/home/xcn/data/sample/sampdb/member.txt' into table member;
默认情况下,load data 语句会假设各列的值是以制表符分隔的,各行末尾都是换行符(文件里\n表示NULL),同时假设这些值得顺序与表里存储列的顺序相同
也可使用
mysqlimport -uroot -p --local sampdb member.txt
该程序将生成一条能将member.txt文件里的内容加载到member表里的load data 语句。
由于mysqlimport 程序是根据数据文件的名字来确定表名的,同时它会把文件名中第一个句号之前的所有内容都当做表名
mysql中的数据
NULL值,只能使用 is null or is not null 或者mysql 特有的<=> null
如果想用特有符号表示不是null where not death <=> null
对查询结果的排序
关于行检索的顺序,请记住一点:服务器不会保证返回行的先后顺序,除非你自己指定顺序。
order by limit
eg:select last_name,first_name,birth from president order by birth desc limit 5 | limit 10,5
如果希望随机取一条或n条
eg:select last_name,first_name,birth from president order by rand() limit 1| limit 3;
两个日期相差多少年:
timestampdiff(year,birth,death):year是参数,计算活了多久
两个日期相差多少天:
to_days(curdate()) 将日期转换为天数
to_days(expiration)-to_days(curdate()) < 60
也可以使用
timestampdiff(day,curdate(),expiration)<60
增加日期
date_add('1970-01-01',interval 10 year)
减少日期
date_sub('1970-01-01',interval 10 year)