v 创建数据库:CREATE DATABASE `sjk`
v 删除数据库:DROP DATABASE `sjk`
v 创建数据表:
v 数据类型
Ø 数据库类型:tinyint(小整数值),smallint(大整数值),mediumint(大整数值),int或integer(大整数值),bigint(级大整数值),float(单精度浮点数值),double(双精度浮点数值),decimal(小数值)
Ø 日期和时间类型:date(日期值),time(时间值或持续时间),year(年份值),datetime(混合日期和时间值),timestamp(混合日期和时间值,时间戳)
Ø 字符串类型:char(定长字符串),varchar(变长字符串),tinyblob(不超过255个字符的二进制字符串),tinytext(短文本字符串),bolb(二进制形式的长文本数据),text(长文本数据),mediumblob(二进帛形式的中等长度文本数据),mediumtext(中等长度文本数据),longblob(二进制形式的极大文本数据),longtext(极大文本数据)
v 创建数据表:
Ø Auto_increment 定义自增列,数值会自动加1
Ø Primary key定义主建,多个主建以逗号分隔
Ø Engine设置存储引擎,charset设置编码
Ø CREATE TABLE 表名(字段名 字段类型);
CREATE TABLE`sjk`.`tableName` (
`id` int(11) UNSIGNED AUTO_INCREMENT,
`value` int(11) DEFAULT NULL,
`key` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULTCHARSET=utf8mb4;
Ø CREATE TABLE `sjk`.`tableName2` (
`id` int(11) UNSIGNED AUTO_INCREMENT,
`value` int(11) DEFAULT NULL,
`key` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULTCHARSET=utf8mb4;
v 删除数据表:drop table `sjk`.`tableName`
v 插入数据:
Ø insert into 表名 (字段1,字段2…) values (值1,值2…)
insertinto `sjk`.`tableName` (`value`,`key`)
values(1,'a'),(2,'a'),(3,'a'),(4,'a'),(3,'a'),(2,'a'),(4,'a'),(5,'a'),(6,'a')
insertinto `sjk`.`tableName2` (`value`,`key`)
values(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e')
Ø insert into 表名 (字段1,字段2…) select 字段1,字段2… from 表名2 [WHERE Clause]
v 修改数据:
Ø UPDATE 表名 SET 字段1=值, 字段2=值
Ø UPDATE 表名SET 字段1=值, 字段2=值 where (字段1<值 Or 字段2>值) And 字段3>=值
Ø update `sjk`.`tableName`
inner join`sjk`.`tableName2`
on`sjk`.`tableName`.`value`=`sjk`.`tableName2`.`value`
set`sjk`.`tableName`.`key`=`sjk`.`tableName2` .`key`
where`sjk`.`tableName2`.`value`=2
v 删除数据:
Ø 删除多条数据:delete from `sjk`.`tableName` where `value`=2 ;
Ø 清除所有数据:truncate table`sjk`.`tableName`
v 查询数据:
Ø select 字段1,字段2 from 表名
Ø select * from 表名 (查询所有字段)
Ø select * from 表名 limit 10 (查询几条数据)
Ø select * from 表名 limit 1,10 (从第几条数据开始查询几条数据,默认是从0条开始)
Ø select * from 表名 limit 10 offset 1(offset从第几条数据开始,limit查询几条数据,默认是0)
Ø select * from 表名 where (字段1<值 Or 字段2>值) And 字段3>=值
Ø where判断符:
§ =:等于
§ <>,!=:不等于
§ >:大于
§ >=:大于等于
§ <小于
§ <=:小于等于
§ <=>:等于(不同于=运算符),当为null时可以用做比较判断,null=null 为false,null<=>null 为true。
§ like:模糊查询(如: SELECT * FROM sjk.tablename2 where `key` like'%a')
§ Is null:查询为空的数据
§ Is not null:查询不为空的数据
§ Regexp: 正则表达式(如:SELECT * FROM`sjk`.`tableName2` WHERE `key` REGEXP'^a')
· ^:匹配开始位置
· $:匹配结束位置
· [...]:匹配包含字符(如:SELECT * FROM `sjk`.`tableName2` WHERE `key` REGEXP '[a]')
· .:匹配任何单个字符(如:SELECT * FROM `sjk`.`tableName2` WHERE `key` REGEXP '.')
· |:如a|b|c 表示匹配a或b或c能有一个包含匹配都可以
· *:匹配零次以上(如: WHERE `key` REGEXP 'a*')
· +:匹配一次以上(如: WHERE `key` REGEXP 'a+')
· {n}:正整数匹配n次(如: WHERE `key` REGEXP 'a{0}')
· {n,m}:正整数匹配最少n次最多m次(如: WHERE `key` REGEXP 'a{0,1}')
Ø like模糊查询 : SELECT * FROM sjk.tablename2where `key` like '%a'
Ø union合并查询: (union 会把前后两条查询出来的数据进行整合,排除完全相同的数据,union all 会把所有查询出来的数据进行显示,不会做任何处理)
§ SELECT * FROM sjk.tablename2
Union
SELECT * FROM sjk.tablename
Ø Order by排序:
§ Asc升序:SELECT * FROM `sjk`.`tableName` order by `value` asc
§ Desc 降序: SELECT * FROM `sjk`.`tableName` order by`value` desc
Ø Group by 分组:分组显示当没有指定字段时,默认显示分组后查询到的第一条数据的所有信息
§ SELECT * FROM `sjk`.`tableName`group by `value`
Ø Having :主要用来对查询返回的结果做限制,可以用聚合函数,和group by同用时把以把分组后的结果做判断
§ SELECT * FROM `sjk`.`tableName`group by `value` having count(*)>1
§ SELECT * FROM `sjk`.`tableName` group by `value` having `id`+`value`>6
Ø 聚合函数
§ count():求出现的数量
§ sum():求和
§ avg():求平均数
§ max():求最大值
§ min():求最小值
Ø 连接查询:
§ Inner join on内连接:获取两张表同时匹配的记录。
· select * from `sjk`.`tableName`
inner join `sjk`.`tableName2` on`sjk`.`tableName`.`key`=`sjk`.`tableName2`.`key`
§ Left jion on左连接:获取左表所有记录,右表来匹配左表。
· select * from `sjk`.`tableName`
left join`sjk`.`tableName2` on `sjk`.`tableName`.`key`=`sjk`.`tableName2`.`key`
§ Right jion on右连接:获取右表所有记录,左表来匹配右表。
· select * from`sjk`.`tableName`
right join `sjk`.`tableName2` on`sjk`.`tableName`.`key`=`sjk`.`tableName2`.`key`
§ cross join 交叉连接:也称作笛卡尔积, 左表中的每一行与右表中的所有行组合
· select * from`sjk`.`tableName2` cross join `sjk`.`tableName`
v 零时表:TEMPORARY断开与数据库的连接后自动销毁
Ø CREATE TEMPORARY TABLE 表名(字段名 字段类型);
CREATE TEMPORARY TABLE`sjk`.`tableName3` (
`id` int(11) not null,
`value` int(11) DEFAULT NULL,
`key` varchar(45) DEFAULT NULL
);
Ø 手动删除: drop table `sjk`.`tableName3`