Mysql基本语句(个人笔记)

mysql基本操作语句

1 数据库的基本操作
create database doem default charset utf8; -- 创建数据库 字符编码 utf8

show database; -- 查询数据库

show create database doem; -- 查询某个数据库的结构

use doem; -- 选择使用doem数据库

drop database doem; -- 删除doem数据库

2 表的操作
show tables; -- 显示所在操作数据库中的表

drop table tb_doem -- 删除表

create table tb_doem( -- 创建表

  did int primary key auto_increment,-- auto_increment 自动增长

  dname varchar(20)
);

show create table tb_doem; -- 显示构造表语句

desc tb_doem;   -- 显示表结构

alter table tb_doem add phone varchar(20) not null; -- 给表添加一个字段phone

alter table tb_doem drop phone; -- 删除字段phone

alter table tb_doem modify phone int; -- 修改字段phone类型

alter table tb_doem change phone dianhua int; -- 修改字段名及字段类型

drop table tb_doem; -- 删除表

3 操作数据语句

insert into tb_doem(dname) values('b'); -- 插入数据

update tb_doem set dname='b' where did=1; -- 修改数据

delete from tb_doem where did=1; -- 删除数据

select * from tb_doem; -- 查询所有字段数据

select distinct bname from tb_doem where dname='b' -- 去重复bname的数据;

逻辑条件: and or

比较条件:< , <=, >, >=, <>, between value1 and value2

判断空:判断null: is null 判断空字符串: ="" / <>""

模糊条件:like %:替换任意长度字符 _:替换单个字符

分页查询,limit 起始行,查询行数

 

原文:https://www.cnblogs.com/ahang/p/5644535.html

代码示例:
语句1:select * from student limit 9,4
语句2:slect * from student limit 4 offset 9
// 语句1和2均返回表student的第10、11、12、13行 ,第一个参数表示从该参数的下一条数据开始,第二个参数表示每次返回的数据条数。
//语句2中的4表示返回4行,9表示从表的第十行开始

例2,通过limit和offset 或只通过limit可以实现分页功能。
假设 pageSize表示每页要显示的条数,pageNumber表示页码,那么 返回第pageNumber页,每页条数为pageSize的sql语句:
 

代码示例:
语句3:select * from studnet limit (pageNumber-1)*pageSize,pageSize
语句4:select * from student limit pageSize offset (pageNumber-1)*pageSize

 

在java中计算pageSize和offset

复制代码
   //每页显示的条数,做为接口参数传入
int pageSize = 10;
//总的条数,从数据库中查询
int totalCount;
//总页数 double tp= count / (double)pageSize; int totalPage = (int) Math.ceil(tp); int offset = (page-1) * pageSize;
复制代码

 

排序:order by 字段 asc/desc asc:升序 desc:降序

分组:group by 字段

外键:foreign key(rid) references tb_role(rid)

 

原文出处:https://www.cnblogs.com/wlzjdm/p/6953398.html

1 日期类型

MySql中关于日期的类型有Date/Datetime/Timestamp三种类型。

日期赋值时,允许“不严格”语法:任何标点符都可以用做日期部分或时间部分之间的间割符。例如,'98-12-31 11:30:45'、'98.12.31 11+30+45'、'98/12/31 11*30*45'和'98@12@31 11^30^45'是等价的,对于不合法的将会转换为:0000-00-00 00:00:00

 

1.1 Date格式

此类型的字段,存储数据格式为:YYYY-MM-DD,它支持的范围为'1000-01-01'到'9999-12-31',并且允许使用字符串或数字为此列复制。

例如,日期格式的字段crt_date,通过字符串和数字复制后的结果如下:

update sys_tables set crt_date = 12331212 where table_name = 'sys_dict';
update sys_tables set crt_date = '1233-12-12' where table_name = 'sys_dict_item';

image

1.2 Datetime格式

日期和时间的组合,存储格式为:YYYY-MM-DD HH:MM:SS,它支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59',并且允许使用字符串或数字进行分配值。

例如:

update sys_tables set crt_date = 12331212121212 where table_name = 'sys_dict';
update sys_tables set crt_date = '1233-12-12 12:12:12' where table_name = 'sys_dict_item';

image

 

1.3 TimeStamp格式

这是时间戳,从1970-01-01 00:00:00到当前的时间差值(注意:当你在Java中输出[new Date(0)] 的时候,输出的是:Thu Jan 01 08:00:00 CST 1970,这是因为时区的概念,中国是东八区,所以对应的是早上八点),它精确到毫秒级别,范围为:1970-01-01 00:00:00 到 2037年(参考2038年问题),当值大于2037年就会抛出: [Error Code: 1292, SQL State: 22001]  Data truncation: Incorrect datetime value: '20381212121212' for column 'crt_date' at row 1。设置值时只允许设置数字类型的值。

在为TimeStamp类型字段赋值的时候,值必须大于19700101000000,否则就会抛出: [Error Code: 1292, SQL State: 22001]  Data truncation: Incorrect datetime value: '10831212121212' for column 'crt_date' at row 1。

例如:

update sys_tables set crt_date = 20081212121212 where table_name = 'sys_dict';

image

 

2 时间类型

MySQL中时间类型用Time表示。

2.1 Time格式

MySQL以'HH:MM:SS'格式检索和显示TIME值(或对于大的小时值采用'HHH:MM:SS'格式)。TIME值的范围可以从'-838:59:59'到'838:59:59'。小时部分会因此大的原因是TIME类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,或者甚至为负)。

格式说明:

  • 'D HH:MM:SS.fraction'格式的字符串。还可以使用下面任何一种“非严格”语法:'HH:MM:SS.fraction'、'HH:MM:SS'、'HH:MM'、'D HH:MM:SS'、'D HH:MM'、'D HH'或'SS'。这里D表示日,可以取0到34之间的值。请注意MySQL还不保存分数。
  • 'HHMMSS'格式的没有间割符的字符串,假定是有意义的时间。例如,'101112'被理解为'10:11:12',但'109712'是不合法的(它有一个没有意义的分钟部分),将变为'00:00:00'。
  • HHMMSS格式的数值,假定是有意义的时间。例如,101112被理解为'10:11:12'。下面格式也可以理解:SS、MMSS、HHMMSS、HHMMSS.fraction。请注意MySQL还不保存分数。
  • 函数返回的结果,其值适合TIME上下文,例如CURRENT_TIME。
  • 超出TIME范围但合法的值被裁为范围最接近的端点。例如,'-850:00:00'和'850:00:00'被转换为'-838:59:59'和'838:59:59'。

3 年类型

MySQL中用year表示年类型

MySQL以YYYY格式检索和显示YEAR值。范围是1901到2155。

可以指定各种格式的YEAR值:

  • 四位字符串,范围为'1901'到'2155'。
  • 四位数字,范围为1901到2155。
  • 两位字符串,范围为'00'到'99'。'00'到'69'和'70'到'99'范围的值被转换为2000到2069和1970到1999范围的YEAR值。
  • 两位整数,范围为1到99。1到69和70到99范围的值被转换为2001到2069和1970到1999范围的YEAR值。请注意两位整数范围与两位字符串范围稍有不同,因为你不能直接将零指定为数字并将它解释为2000。你必须将它指定为一个字符串'0'或'00'或它被解释为0000。
  • 函数返回的结果,其值适合YEAR上下文,例如NOW()。
  • 非法YEAR值被转换为0000。

4 日期兼容性问题

  1. MySQL服务器采用了Unix的时间功能,对于TIMESTAMP值,可处理的日期至2037年。对于DATE和DATETIME值,可接受的日期可至9999年。
  2. 所有的MySQL日期函数均是在1个源文件sql/time.cc中实现的,并经过了恰当编码以确保2000年安全。
  3. 在MySQL 3.22和以后的版本中,YEAR列类型能够在1个字节内保存0年以及1901~2155年,并能使用两位或四位数字显示它们。所有的两位数字年份均被视为介于1970~2069年之间,这意味着,如果你在YEAR列中保存了01,MySQL服务器会将其当作2001年。
posted @ 2019-05-10 10:41  TuiTuiTui  阅读(265)  评论(0编辑  收藏  举报