Mysql入门基础

最近开始学MySQL,所以特别整理一下,后期再完善


v  创建数据库:CREATE DATABASE `sjk`

v  删除数据库:DROP DATABASE `sjk`

v  创建数据表:

v  数据类型

Ø  数据库类型:tinyint(小整数值)smallint(大整数值)mediumint(大整数值)intinteger(大整数值)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 falsenull<=>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 表示匹配abc能有一个包含匹配都可以

·       *:匹配零次以上(如: 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`

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值