mysql基础

目录

1 数据库概述

1.1 什么是数据库 

1.2 数据库特点

2 SQL概述

2.1 什么是SQL

2.2 SQL 通用语法

2.3 SQL 语句的分类

3 操作数据库-DDL

4 操作表

4.1 数据类型

4.2 创建表

4.3 查询表

4.4 修改表

4.5 删除表

4.6 约束

5 DML语句

5.1 添加数据

5.2 删除数据

5.3 修改数据

6 DQL 语句

6.1 查询语句完整语法

6.2 select 特点

6.3 简单查询

6.4 ifnull

6.5 别名

6.6 查询条件

7 DQL 高级查询

7.1 排序查询

7.2 聚合函数

7.3 分组查询

7.4 分页查询


1 数据库概述

1.1 什么是数据库 

        数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作(CRUD)。

1.2 数据库特点

1. 持久化存储数据的。其实数据库就是一个文件系统 
2. 方便存储和管理数据。按行和列的格式存储数据
3. 使用了统一的方式操作数据库 。使用图形界面的形式查看数据,使用sql语言进行查看或管理数据

2 SQL概述

2.1 什么是SQL

        结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作的一种语言

2.2 SQL 通用语法

1. SQL 语句可以单行或多行书写,以分号结尾。

2. 可使用空格和缩进来增强语句的可读性。

3. MySQL 数据库的 SQL 语句不区分大小写(仅此于win系统)。
    1). 库名 表名 字段 别名 建议写小写
    2). 关键字建议大写: SHOW DATABASES CREATE

4. 注释
    * 单行注释: -- 注释内容(这种方式是通用的) 或 # 注释内容(mysql 特有) 
    * 多行注释: /* 注释 */

2.3 SQL 语句的分类

DDL(Data Definition Language)数据定义语言定义数据库对象:数据库,表,列等.关键字:create, drop,alter 等
DML(Data Manipulation Language)数据操作语言(掌握)对数据库中表的数据进行增删改.关键字:insert, delete, update 等
DQL(Data Query Language)数据查询语言 (掌握)用来查询数据库中表的记录(数据).关键字:select, where 等
DCL(Data Control Language)数据控制语言(了解)用来定义数据库的访问权限和安全级别,及创建用户.关键字:GRANT,REVOKE 等
TCL(Transaction Control Language) 事务控制语言用于控制数据库的事务操作,关键字; commit,savepoint,rollback等

3 操作数据库-DDL

(1)创建数据库

create database 数据库名称;

(2) 创建数据库,并指定字符集

create database 数据库名称 character set 字符集名;

(3)查询所有数据库名称

show databases;

(4)查询某个数据库的创建语句及字符集

show create database 数据库名称;

(5)修改数据库的字符集

alter database 数据库名称 character set 字符集名称;

(6)删除数据库

drop database 数据库名称;

(7)使用数据库

use 数据库名称;

(8)查询当前正在使用的数据库名称

select database();

4 操作表

4.1 数据类型

int整数类型,例如 : age
double小数类型,例如 : score double(5,2) 111.11
date日期,只包含年月日,yyyy-MM-dd
datetime日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
timestamp时间戳类型,包含年月日时分秒 yyyy-MM-dd HH:mm:ss 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
varchar()长度可变字符 。可以节省空间,经常使用
char()长度不可变字符。长度固定,性能好,手机号,身份证号

4.2 创建表

create table 表名(
    列名(字段名) 数据类型,
    列名(字段名) 数据类型,
    列名(字段名) 数据类型
    ...
);

4.3 查询表

-- 查询某个数据库中所有的表名称
show tables;

-- 查询表结构
desc 表名;

4.4 修改表

-- 添加一列
alter table 表名 add 列名 数据类型 约束;

-- 修改列类型
alter table 表名 modify 列名 新类型;

-- 修改列名和类型
alter table 表名 change 旧列名 新列名 新类型;

-- 删除指定列
alter table 表名 drop 列名;

-- 修改表字符集
alter table 表名 charset 字符集;

-- 查看表的字符集
show create table 表名;

-- 修改表名
rename table 旧表名 to 新表名;

4.5 删除表

-- 直接删除表
drop table 表名;

-- 如果表存在就删除
drop  table if exists  emp;

4.6 约束

约束:规定,限制。限制表中列的内容。需要满足一定的规则。数据库中的约束:限制列的内容。

意义:保证数据的有效性和完整性。可以确保数据库满足业务规则。

约束说明
primary key主键约束:非空且唯一
not null非空约束 : 某一列的值不能为空
unique唯一约束 : 某一列的值不能重复,但可以为空
auto_increment自增器,每一次+1
foreign key外键约束

(1) 唯一和主键约束的区别

1、唯一约束可以是空(null)。 但是主键约束不能为空。
2、一张表中只能有一个主键,但是唯一约束可以有多个。 

(2) 创建完表后,添加主键

alter TABLE 表名 add primary key(id);

(3)添加注释  comment '  '

-- comment' '
id int primary key auto_increment comment '编号',

5 DML语句

5.1 添加数据

insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);

-- 添加数据 指定字段 一一对应
insert INTO emp3 ( NAME, sex, salary )VALUES ( 'jerry', "女", 9000 );

-- 添加数据 省略字段,字段全写
insert into emp3 values( NULL, 'tom', "男", '开发', 10000);

-- 批量插入,用,隔开
INSERT INTO stu1(id,name,birthday) VALUES
(1,'李四1','2020-11-11'),
(2,'李四2','2020-11-11'),
(3,'李四3','2020-11-11'),
(4,'李四4','2020-11-11');

5.2 删除数据

-- 语法
delete from 表名 where 条件;

-- 删除id=1的记录
delete from student where id = 1;

-- 如果不添加条件则删除所有记录,有多少条记录执行多少次操作
delete from student;

-- 先删除表,再创建一个一样的空表,效率高
truncate table 表名;

5.3 修改数据

-- 语法,如果不加任何条件,则会将表中所有记录全部修改
update 表名 set 列名1 = 值1, 列名2 = 值2,... where 条件;

-- 举例
update student set name = '王五', birthday = '2020-12-20' where id = 2;

6 DQL 语句

6.1 查询语句完整语法

select
	字段列表
from
	表名列表
where
	条件列表
group by
	分组字段
having
	分组之后的条件
order by
	排序
limit
	分页限定

6.2 select 特点

select 可以查询 表中的字段 表达式  常量值  函数
查询出的结果是一个虚拟表 不影响实际表中的数据

6.3 简单查询

-- 查询所有记录
SELECT * FROM 表名;

-- 查询学生表中姓名
SELECT name FROM stu;

-- 去重复查询
SELECT DISTINCT 字段名1,字段名2... FROM 表名;
SELECT DISTINCT name FROM stu;

-- 可以去重复多个字段, a字段重复的同时b字段也要重复才会去重,如果有一个不重得不会去重
SELECT DISTINCT name, id FROM stu;

6.4 ifnull

        在做行运算时,如果有null参与,则计算结果都为null

 ifnull(参数1,参数2) 

如果参数1有值,就走参数1 ,如果参数1为null,就走参数2 

SELECT `name`, chinese + IFNULL(english,0) + math FROM stu;

6.5 别名

1. 可以用在某个字段上   name as 姓名
2. 可以用在函数上      min(sarlay) as 最低工资
3. 可以用在表上        from sutdent as s

 注意事项:  as 可省略 

                   如果给表起了别名,后面在使用的时候,必须要用别名

select s.id ,s.name ,s.chinese from stu s;

6.6 查询条件

运算符说明
> 、< 、<= 、>= 、= 、<> !=<>在 SQL 中表示不等于,在 mysql 中也可以使用!= 没有==
BETWEEN...AND在一个范围之内
IN( 集合)集合表示多个值,使用逗号分隔
IS NULL 不为空 is not null查询某一列为 NULL 的值,注:不能写=NULL
LIKE模糊查询 占位符: _:单个任意字符 %:多个任意字符
AND 或 &&与,SQL 中建议使用前者,后者并不通用。
OR 或 ||
NOT 或 !

7 DQL 高级查询

7.1 排序查询

-- ASC 升序 默认值;DESC 降序
SELECT 字段名 FROM 表名 WHERE条件 ORDER BY 字段名 [ASC|DESC];
-- 如果有多个排序条件,当第一个条件值一样时,才会判断第二条件

-- 查询所有数据,使用年龄降序排序
SELECT * FROM stu ORDER BY age DESC;

-- 查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩降序排序
SELECT * FROM stu ORDER BY age DESC,math DESC;

7.2 聚合函数

        常见SQL函数

* 算术函数
* 字符串函数
* 日期函数
* 转换函数
* 聚合函数/聚集函数

 常见聚合函数

聚合函数说明
count(*) | count(主键)计算表中的总记录数
max计算最大值
min计算最小值
sum计算和
avg计算平均值
-- 查询所有人数
SELECT COUNT(id) FROM stu;

-- 查询年龄大于20岁的人数
SELECT COUNT(*) FROM stu WHERE age >20;

-- 查询数学成绩总分
SELECT SUM(math) FROM stu;

-- 查询数学成绩平均分
SELECT AVG(math) FROM stu;

-- 查询数学成绩最高分
SELECT MAX(math) FROM stu;

-- 查询数学成绩最低分
SELECT MIN(math) FROM stu;

7.3 分组查询

        对一列数据进行分组,相同的内容分为一组

SELECT 字段 1,字段 2... FROM 表名 [where条件] GROUP BY 分组字段 [HAVING 条件];

       where和 having的区别

where 在分组之前进行过滤。having在分组之后进行过滤。

where 后不可以跟聚合函数。having可以跟聚合函数。

having 不能脱离 group by ,如果脱离group by 不能直接使用,一般与group by 一块使用

where  操作原始表

having 操作结果集

-- 查询男女各多少人
SELECT sex,COUNT(*) FROM stu GROUP BY sex;

-- 查询年龄大于25岁的人,按性别分组,统计每组的人数
SELECT sex,COUNT(*) FROM stu WHERE age >25 GROUP BY sex;

-- 查询年龄大于25岁的人,按性别分组,统计每组的人数,并只显示性别人数大于2的数据
SELECT sex,COUNT(*) FROM stu WHERE age >25 GROUP BY sex HAVING COUNT(*)>2;

7.4 分页查询

LIMIT offset,length;

offset 起始行数,从 0 开始计数,如果省略,默认就是 0

length 显示的条数

-- 每页查询显示3条数据
SELECT * FROM stu LIMIT 0,3; -- 第1页
SELECT * FROM stu LIMIT 3,3; -- 第2页
SELECT * FROM stu LIMIT 6,3; -- 第3页
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值