MySQL基础使用

概述

MySQL是一个关系型数据库,关系型数据库是根据关系模型创建的,关系模型指的是“一对一,一对多,多对多等各种关系”。
数据库三范式:(相当于设计表的规则)
第一范式(1NF):对关系模式的基本要求,数据库每一列都是不可分割的,基本数据项,同一列不能存多个值
第二范式(2NF):每个实例或行必须被唯一区分(表的主键和行属性)
第三范式(3NF):一个表中不应包含其他表的非主键信息

对第三范式不用过于要求,一些的数据重复(冗余)能提高查询效率

一.基本操作

MySQL对大小写不敏感(包括表里数据的大小写),要使其大小写敏感在字段前加上binary
在字段或者表名后加上as 为其取别名,as可忽略,
SELECT name as n,studentNO stuno FROM student as stu WHERE NAME='xiaobai'
DISTINCT关键字用于消除重复值

创建表

CREATE TABLE 表名(
列名1 列的类型 [约束1] [约束2] [约束3],
列名2 列的类型 [约束],

列名N 列的类型 [约束]
);
CREATE TABLE t_student1( id BIGINT(20) NOT NULL UNIQUE, name VARCHAR(20) DEFAULT 'xiaobai', age INT(20) DEFAULT 20 );
在Navicat等工具上也可以直接新建表

INSERT(增加)

INSERT INTO 表名(列名,…) VALUES(值,…)
INSERT INTO Student(Name) VALUES('xiaobai')
value和values并无太大区别,但据说插入多行使用value比values快

DELETE(删除)

DELETE from 表名 WHERE …
DELETE FROM student WHERE NAME='xioahei'
注意where条件,否则会删除所以数据

UPDATE(更新)

UPDATE 表名 SET 列名=更新值,… WHERE …
UPDATE student SET NAME='xiaohei' WHERE NAME = 'xiaobai'
注意where条件,否则会修改所有的值

SELECT(查询)

SELECT */字段名 FROM 表名 WHERE 条件
SELECT * FROM student WHERE NAME='xiaobai'

1.过滤数据

where
where 条件:满足where条件时
SELECT * FROM student WHERE NAME='xiaobai'
order by
order by 字段名 【ASC:升序,默认】 【DESC:降序排序】
ORDER BY 可以使用别名,但不能使用加了引号的别名或列名来排序,没有效果
SELECT * FROM student ORDER BY sno desc
group by
group by 列名
将相同值的行数据分为一组,直接显示组时只会显示一个数据
SELECT * FROM student group by class
having
由于对group by进行条件过滤,group by后不能使用where过滤条件
如:SELECT * FROM student group by class having class = 1
逻辑运算符
AND,OR,NOT
优先级:比较运算符 > NOT > AND > OR
比较运算符
=,!=,<>,>,>=,<,<=
BETWEEN … AND …:在两值之间 (包含开始和结尾,数学中的闭区间)
IN:匹配列出的值;如:IN(1, 2, 3, 4)
LIKE :匹配字符串模式, _ 、%,LIKE 运算符必须使用通配符才有意义;
匹配单个字符:_ 表示 1 个;
匹配任意多个字符:% 表示 0个、1个、多个(%xxx%匹配任何有xxx的字段)
IS NULL:是否为空时
空值
使用函数 IFNULL(expr1, expr2),若 expr1 不是 NULL,IFNULL() 返回 expr1,否则返回 expr2

2.多表查询

将两张表按条件连接,可以查询两张表的数据显示,两张表有相同列明时取别名以便区分
隐式内连接查询:如SELECT * FROM student,score WHERE student.sno=score.sno
将表连接的条件放在where语句中
显式内连接查询:如SELECT * FROM student join score on student.sno=score.sno
将条件放于on后
左连接SELECT * FROM student left join score on student.sno=score.sno
相较于普通的join,普通join不会显示不满足条件的数据,左连接会显示左边表的所有数据,包括和右边表没有匹配项的数据
右连接:显示右边所有数据

3.子查询

在查询中嵌套其他查询语句
单行单列:当子句查询到的是一个单行单列(就是一个数据时),直接使用即可
单行多列:当子句查询到的是一个单行多列(一列数据)
IN :与列表中的任意一个值相等
ANY :与子查询返回的任意一个值比较(=/</> any)
ALL :与子查询返回的每一个值比较(</>)
多行多列:当子句查询到的是一个单行多列(一个表),可以当作一个新表连接来使用,注意取别名以便使用

二.算数运算符和函数

算术运算符:
对 NUMBER 型数据可以使用算数操作符创建表达式(+ - * /)
对 DATE 型数据可以使用算数操作符创建表达式(+ -)
函数
COUNT():查询表中的数据记录
AVG():求出平均值
SUM():求和
MAX():求出最大值
MIN():求出最小值
统计函数忽略空值,可以使用 IFNULL, 因为是 NULL 不会影响汇总值,但会影响汇总数量
不能在 where 语句中使用
日期函数
MySQL有很多操作日期和格式化的方法,非常方便
NOW():获取当前时间;
DAY(date),HOUR(time)…
DATE_FORMAT(date, format):把日期转换为字符串
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d')

三.其他

java类型和mysql类型对照
在这里插入图片描述
图片引用来自

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值