MySQL学习笔记
1. SQL简介
1.1 SQL
SQL(Structured Query Language)结构化查询语言,是操作关系型数据的编程语言,定义了一套操作关系型数据库统一标准
1.1.1 SQL通用语法
1)SQL语句可以单行或多行书写,以分号结尾。
2)SQL语句使用空格/缩进来增强语句的可读性。
3)MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4)单行注释:- - 注释内容或 # 注释内容(MySQL特有);
5)多行注释:/* 注释内容 */
1.1.2 SQL的分类
1)DDL(Data Definition Language),数据定义语言,用来定义数据库对象(数据库,表,字段);
2)DML(Data Manipulation Language),数据操作语言,用来对数据库表中的数据进行增删改;
3)DQL(Data Query Language),数据查询语言,用来查询数据库中表的记录;
4)DCL(Data Control Language),数据控制语言,用来创建数据库用户、空置数据库的访问权限
1.2 DB
DB(DataBase)数据库,即为存储数据的仓库,数据是有组织的进行存储
1.3 DBMS
DBMS(DataBase Management System)数据库管理系统,操纵和管理数据库的大型软件,例如:Oracle、MySQL、SQL Server、PostgreSQL等;RDBMS即为关系型数据库管理系统,
1.3.1 概念
建立在关系模型基础上,由多张相互连接的二维表组成的数据库
1.3.2 特点
1)使用表存储数据,格式统一,便于维护;
2)使用SQL语言操作,标准统一,使用方便;
2. 数据库启动/关闭
2.1 MySQL的启动与关闭
2.1.1 启动
启动:以管理员身份运行命令提示符,然后输入:net start mysql80,(2)关闭:同样地以管理员身份运行命令提示符输入:net stop mysql80
2.1.2 关闭
关闭:同样地以管理员身份运行命令提示符输入:net stop mysql80
2.2 MySQL数据库的连接
2.2.1 客户端连接
直接打开MySQL8.0 Command Line Client输入密码(123456)即可
2.2.2 命令提示符连接
配置好环境变量后打开命令提示符输入:mysql -u root -p然后输入密码即可
3. DDL
DDL(database definition language)数据定义语言,
3.1 数据库操作
3.1.1 查询数据库
show databases;
3.1.2 创建数据库
create database (if not exists) 数据库名;
3.1.3 删除数据库
drop database (if exists) 数据库名;
3.1.4 使用数据库
use 数据库名;
3.1.5 查询当前的数据库
#查询正在使用的当前的数据库
select database();
3.2 表的操作——查询
3.2.1 查询所有表
#查询当前数据库所有表(需要先使用数据库)
show tables;
3.2.2 查询表结构
#查询数据库中表的结构
desc 表名;
3.2.3 查询建表语句
#注意是建表语句,但是也会多一些自己没有写的默认语句
show create table 表名;
3.3 表的操作——创建
- create table 表名(
字段1 字段1类型[comment 字段1注释] ,
字段2 字段2类型[comment 字段2注释] ,
字段3 字段3类型[comment 字段3注释] ,
......
字段n 字段n类型[comment 字段n注释]
)[comment 表注释] ;
PS: 注意:[...] 为可选参数,最后一个字段后面没有逗号
例如:create table tb_student(
ID int comment '这是ID的注释' ,
name varchar(50) comment '这是name的注释' ,
age int comment '这是age的注释' ,
gender varchar(1) comment '这是性别的注释'
) comment '这是tb_student的注释' ;
3.4 表的操作——数据类型
3.4.1 数值类型
1)tinyint(1 byte)有符号(-128,127),无符号(0,255)即为:tinyint unsigned
2)smallint(2 bytes)有符号(signed)与无符号(unsigned)
3)mediumint(3 bytes)有符号与无符号
4)int/integer(4 bytes)有符号与无符号
5)bigint(8 bytes)有符号与无符号
6)float(4 bytes)有符号与无符号
7)double(8 bytes)有符号与无符号
8)decimal用于精确描述小数,依赖于M(精度)与D(标度),例如:123.45,(M)精度为5,(D)标度为2;
PS: 其中float、double都是浮点数值类型,而decimal是定点数值类型;浮点型与定点型都可以用类型名称后加(M,D)来表示,M为该值的总长度,D为该值小数点后面的长度,例如float(5,2)可显示为999.99,另外MySQL保存值时会进行四舍五入,如果插入999.009,则结果为999.01,反正用decimal来存取金额是最安全准确的。
3.4.2 字符串类型
1)char-定长字符串
char(10)——即使只存储3个字符,但仍然存储10个字节,其性能更好
2)varchar-变长字符串
char(10)——若只存储3个字符长度,则只存储3个字符/字节,其性能更好
3)tinyblob-不超过255个字符/字节的二进制数据
4)tinytext-短文本字符串
5)blob-二进制形式的长文本数据
6)text-长文本数据
7)mediumblob-二进制形式的中等长度文本数据
8)mediumtext-中等长度文本数据
9)longblob-二进制形式的极大文本数据
10)longtext-极大文本数据
3.4.3 日期时间类型
-
date-大小3,范围(1000-01-01至9999-12-31),格式:YYYY-MM-DD,描述:日期值
-
time-大小3,范围(-838:59:59至838:59:59),格式:HH:MM:SS,描述:时间值或持续时间
-
year-大小1,范围(1901至2155),格式:YYYY,描述:年份值;
-
datetime-大小8;范围(1000-01-01 00:00:00 至 9999-12-31 23:59:59);格式:YYYY-MM-DD HH:MM:SS;描述:混合日期和时间值;
-
timestamp-大小4;范围(1970-01-01 00:00:01 至 2038-01-19 03:14:07);格式:YYYY-MM-DD HH:MM:SS;描述:混合日期和时间值,时间戳;
3.4 表的操作-修改
3.4.1 添加字段
alter table 表名 add 字段名 数据类型(长度);
3.4.2 修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
3.4.3 修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment ' 注释 '] [约束] ;
3.4.4 删除字段
alter table 表名 drop 字段名 ;
3.4.5 修改表名
alter table 表名 rename to 新表名 ;
3.5 表的操作-删除
3.5.1 删除表
drop table [ if exists ] 表名 ;
PS : MySQL 8.0 Command Line Client的清屏方式:system cls ;
3.5.2 删除指定表
删除指定表,并重新创建该表,但该表为空表,并且所有字段并没有删除依然存在,只是所有数据都被删除。
truncate table 表名 ;
4. DML
4.1 DML介绍
DML(Data manipulation language)数据操作语言,用来对数据表中的数据记录进行增删改操作
- 添加数据(insert)
- 修改数据(update)
- 删除数据(delete)
4.2 添加数据
4.2.1 指定字段
insert into 表名 (字段名1,字段名2,...) values (值1,值2,...) ;
4.2.2 全部字段
insert into 表名 values (值1,值2,...) ;
4.2.3 批量
insert into 表名 (字段名1,字段名2,...) values (值1,值2,...),(值1,值2,...),(值1,值2,...) ;
insert into 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...) ;
4.2.4 知识点注释
#注意:
- 插入数据时,指定的字段顺序需要与值得顺序是一一对应的;
- 字符串和日期型数据应该包含在引号中;
- 插入的数据大小,应该在字段的规定范围内;
4.3 修改数据
4.3.1 修改表中数据
update 表名 set 字段名=值1,字段名2=值2,...[where 条件] ;例如:
update tb_stu set age=35 where id=9527;
4.3.2 知识点注意
#修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据;例如:
update tb_stu set age=35;
4.4 删除数据
4.4.1 修改表中数据
delete from 表名 [where 条件] ;例如:
delete from tb_stu where id=9527 ;
4.4.2 知识点注意
#delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
#delete 语句不能删除某一字段的值(可以用update)。例如:
delete from tb_stu ;
5. DQL
5.1 介绍
-
DQL(data query language)数据查询语言,用来查询数据库中表的记录。
-
查询关键字:select
5.2 DQL语法
select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 ordered by 排序字段列表 limit 分页参数;
#上面的公式又可分为基本查询(select from)、条件查询(where)、分组查询(group by)、排序查询(order by)、分页查询(limit)
#以上需要用到的聚合函数(count、max、min、avg、sum)
5.3 基本查询
select 字段列表 from 表名;
5.3.1 查询多个字段
select 字段1,字段2,字段3,... from 表名 ;
select * from 表名 ;
5.3.2 设置别名
select 字段1[as 别名1],字段2[as 别名2] ... from 表名 ;
5.3.3 去除重复记录
select distinct 字段列表 from 表名 ;
5.4 条件查询
5.4.1 语法
select 字段列表 from 表名 where 条件列表 ;
5.4.2 条件
5.4.2.1 比较运算符
- ’ > ’ 大于;
select * from tb_work where age=35 ;
- ’ >= ’ 大于等于;
select * from tb_work where age >=20 ;
- ’ < ’ 小于;
select * from tb_work where age<30 ;
- ’ <= '小于等于 ;
select * from tb_work where age <= 18 ;
- ’ = '等于;
select * from tb_work where age = 8 ;
- ’ <> ’ 或 ’ != '不等于;
select * from tb_work where age <> 20 ;
select * from tb_work where age != 20 ;
- ’ between … and …’ 在某个范围之内(含最小、最大值)
select * from tb_work where age betweet 15 and 35 ;
- ’ in(…) ’ 在in之后的列表中的值,多选一;
select * from tb_work where age in(18,27,35) ;等同于
select * from tb_work where age=18 or age=27 or age=35 ;
- ’ like 占位符 '模糊匹配( _匹配单个字符,%匹配任意个字符 );
PS: _代表一个字符,%代表任意个字符
#查询姓名为2个字符的员工信息
select * from tb_work where name like '_ _' ;
#查询身份证号最后一位是8的员工信息
select * from tb_work where idCard like '%8' ;
- ’ is null ’ 是null;
#查询没有身份证号的员工
select * from tb_work where idCard is null ;
#查询有身份证号的员工
select * from tb_work where idCard is not null ;
5.4.2.2 逻辑运算符
- ’ and 或 && '并且(多个条件同时成立);
select * from tb_work where age>18 && age<35 ;
select * from tb_work where age>18 and age<35 ;
select * from tb_work where gender='女' and/&& age<25 ;
- ’ or 或 || '或者(多个条件任意一个成立);
select * from tb_work where age=18 or age=27 or age=35 ;
- ’ not 或 ! '非,不是
5.4.3 聚合函数
5.4.3.1 介绍
将一列数据作为一个整体,进行纵向计算