一、数据库SQL:
1、创建数据库: create database [数据库名称]; 例如:create database baseservice;
一般项目创建数据库语句如下:
create database if not exists baseservice default charset utf8 collate utf8_general_ci;
该语句的有两个作用:(1) 如果数据库不存在则创建,存在则不创建; (2) 创建RUNOOB数据库,并设定编码集为utf8。
2、删除数据库:drop database [数据库名]; 例如:drop database baseservice;
3、选择数据库:use [数据库名]; 例如:use baseservice;
二、数据类型:
MySQL支持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、
REAL和 DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。BIT数据类型保存
位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。
作为SQL标准扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。如下将显示每个整数类型的存储和范围。
CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。
在存 储或检索过程中不进行大小写转换。
BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就
是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和
LONGBLOB。它们区别在于可容纳存储范围不同。
有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大
长度不同,可根据实际情况选择。
备注:(1) 一个汉字占多少长度与编码有关: UTF-8:一个汉字=3个字节 , GBK:一个汉字=2个字节
(2) varchar(n) 表示 n 个字符,无论汉字和英文,Mysql 都能存入 n 个字符,仅是实际字节长度有所区别
(3) MySQL 检查长度,可用 SQL 语言来查看:select LENGTH(fieldname) from tablename
三、数据库函数:
1、日期类函数:date_format(), 函数的格式:date_format(date,format)
常用的format格式如下:
获取日期和时间,格式: %Y-%m-%d %T 例如:select date_format(now(),'%Y-%m-%d %T'); 输出结果:2019-09-24 15:15:57
%Y-%m-%d %H:%i:% 例如: select date_format(now(),'%Y-%m-%d %H:%i:%s'); 输出结果:2019-09-24 15:15:22
获取日期,格式:%Y-%m-%d 例如:select date_format(now(),'%Y-%m-%d'); 输入结果:2019-09-24
获取时间,格式:%T 例如:select date_format(now(),'%T'); 输出结果:15:16:50
%H:%i:%s 例如:select date_format(now(),'%H:%i:%s'); 输出结果:15:16:50
2、格式化函数:
(1) 第一种参数格式: from_unixtime( unix_timestamp ) , 参数一般为10位的时间戳,如:1417363200,返回值:有两种,可能是类似 'YYYY-MM-DD HH:MM:SS'
这样的字符串,也有可能是类似于 YYYYMMDDHHMMSS.uuuuuu 这样的数字,具体返回什么取决于该函数被调用的形式。
例如:select from_unixtime(1417363200); 输出结果:2014-12-01 00:00:00
(2) 第二种参数格式:from_unixtime( unix_timestamp, format ) , 参数 unix_timestamp :与方法 FROM_UNIXTIME( unix_timestamp ) 中的参数含义一样;
参数 format : 转换之后的时间字符串显示的格式; 返回值:按照指定的时间格式显示的字符串;
例如:select from_unixtime(1417363200,'%Y-%m-%d'); 输出结果:2014-12-01
三、数据表SQL:
1、创建数据表格式:create table [数据表名] ([列名] [数据类型] [可选:默认值] [可选:字段备注]); // 数据表的多个字段之间使用英文逗号隔开
例如:create table if not exists `company` (
`company_id` int(11) not null AUTO_INCREMENT comment '主键,自增',
`company_name` varchar(50) not null comment '企业名称',
`company_logo` text default null comment '企业base64的logo图',
`company_remark` varchar(255) DEFAULT NULL COMMENT '备注',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`company_id`),
KEY `company_keys` (`company_name`,`update_time`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='公司表';
实例解析:AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
如果你不想字段为NULL可以设置字段的属性为NOT NULL,在操作数据库时如果输入该字段的数据为NULL,就会报错。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。
备注:创建 数据表时,表名和字段名的符号`不是单引号,而是英文输入法状态下的反单引号,也就是键盘左上角esc按键下面的那一个~按键。
反引号是为了区分 MySql 关键字与普通字符而引入的符号,一般的,表名与字段名都使用反引号。
2、删除数据表格式:drop table [数据表名]; 例如:drop table company;
3、插入数据格式:当插入所有列值时,格式:insert into value ([列值], [列值],...[列值]);
当插入非所有列值时,格式:insert into [数据表名] ([列名], [列名],...[列名]) value ([列值], [列值],...[列值]);
当插入多条记录值时,格式:insert into [数据表名] ([列名], [列名],...[列名]) values ([列值], [列值],...[列值]);
例如:insert into company value ('1','创新公司','', '虚拟公司',now(),now());
insert into company (`company_name`, `company_remark`,`create_time`) value ('创新公司', '虚拟公司',now());
insert into company (`company_name`, `company_remark`,`create_time`) values ('创新公司', '虚拟公司',now());
insert into company (`company_name`, `company_remark`,`create_time`) values ('创新公司', '虚拟公司',now()),('奋进公司', '虚拟公司',now());
4、更新数据格式:update [数据表名] set [列名] = [新列值], [列名] = [新列值] [可选项: where [列值] = [查询值]]
例如:update `company` set `company_id` = '测试公司', `company_remark` = '测试备注' where `company_id` = 1
5、删除数据格式:delete from [数据表名] [可选项: where [条件]]
例如:delete from company where company_id = 1;
6、修改表名或增删改字段名
删除字段:alter table [数据表名] drop [字段名];
例如:
添加字段: alter table [数据表名] add [字段名] [数据类型] [可选项: first / after [字段名]];
例如:
备注:first和after关键字可用于add的语句中,first标识在第一个位置添加字段,after标识在末尾添加字段(缺省默认在末尾添加字段)。
如果想重置数据表字段的位置就需要先使用 drop 删除字段然后使用 add 来添加字段并设置位置。
7、查询语句格式:select [列名],[列名],...[列名]
from [数据表名]
[可选项:where [条件]]
[可选项:limit n [offset m]]
例如:select company_id,company_name,company_logo,company_remark
from company
where company_id = 2
limit 0,1
7、模糊查询,常用 like 关键字和where 匹配使用,并且通配符如下:
(1) % : 表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
(2) _ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。
(3) [] : 表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个
(4) [^] : 表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
备注:查询内容包含通配符时,由于通配符的缘故,导致我们查询特殊字符 “%”、“_”、“[” 的语句无法正常实现,而把特殊字符用 “[ ]” 括起便可正常查询。
8、联合:union ,语法如下:
select [列名], [列名], [列名] .... [列名] from [表名] where [条件]
union [ all | distinct ]
select [列名], [列名], [列名] .... [列名] from [表名] where [条件]
备注:distinct 是可选的,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响,
all 是可选的,返回所有结果集,包含重复数据。
9、 排序:order by,语法如下:
select [列名], [列名],... [列名]
from [表名]
order by [列名] [asc(默认)/desc], [列名] [asc(默认)/desc]
备注:任何字段来作为排序的条件,从而得到回排序后结果。你可以设定多个字段来排序。
可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。可以添加 WHERE...LIKE 子句来设置条件。
10、分组: group by,语法如下:
select [列名], [列名],... [列名]
from [表名]
where [条件]
group by [列名] ;
备注:group by 可以根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 count, sum, avg等函数。