MYSQL学习笔记
MySQL介绍
1.DDL语句操作数据库以及表的create(创建),drop(删除),alter(修改)
2.DML语句对表数据进行inster,delete,update
3.DQL语句对表数据进行各种维度的select查询(简单查询,条件查询,模糊查询,分组查询)
4.mysql数据库约束(主键约束,唯一约束,非空约束)
1.什么是数据库
存储数据的仓库,其本质是一个文件系统,数据库按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增删查改操作
2.常见的数据库
mysql: 开源免费
Oracle:大型收费
DB2
SQLServer
SYBase
SQList
在web应用中,使用最多的是MySQL数据库
3.数据库的安装
官网下载:https://dev.mysql.com/downloads/file/?id=505212
4.数据库
数据库管理系统(dataBase Management System, DBMS)
5.SQL语句
5.1 什么是SQL
结构化查询语言(Structured Query Language),可以对数据库进行操作的一种语言
5.2 SQL作用
通过sql语句我们可以方便的操作数据库中的数据库,表,数据。
SQL是数据库管理系统都需要遵循的规范,不同的数据库生产厂商都支持SQL语句,但都有特有内容。
5.3 SQL语句分类
DDL 定义数据库 操作对象:数据库,表,列
DML 数据库操作语言 操作对象:数据库中的元素
DQL 数据查询语言 操作对象:数据库中的元素
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ixBp3a3-1622185903779)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210526162553786.png)]
5.3 SQL通用语法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uiAS9ALf-1622185903782)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210526163053104.png)]
6.DDL语句
6.1操作库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HiN6ZfUF-1622185903784)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210526163401086.png)]
6.1.1创建数据库
/*************dodo为创建的数据库名字*****************/
//创建数据库
CREATE DATABASE dodo;
//查看当前的所有数据库
SHOW DATABASES;
//先判断再创建
CREATE DATABASE IF NOT EXISTS dodo;
//创建数据库并指定字符集(编码表)
CREATE DATABASE dodo CHARACTER SET gdk;
6.1.2修改数据库相关信息
//修改字符集
ALTER DATABASE dodo DEFAULT CHARACTER SET gbk;
//删除数据库
DROP DATABASE dodo;
6.1.3使用数据库
//使用数据库
USE dodo;
//查看正在使用的数据库
SELECT DATABASE();
6.2 DDL操作表
表的结构与excel相似
语法:
//creat-创建 table-表
CREATE TABLE 表名 (字段1 字段类型1,字段2 字段类型2...);
6.2.1MySQL数据类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XntsOaIA-1622185903785)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210526170826170.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GnA18mbD-1622185903786)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210526170913779.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WdbmpOoz-1622185903787)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210526171018699.png)]
具体操作:
6.2.2建表的SQL语句
//先select要操作的数据库,然后进行建表(CREATE TABLE name(字段 类型,...))
//然后DESC name;进行查看表结构
SHOW TABKES; //可查看当前数据库的所有表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MsA18ObO-1622185903788)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210526171401331.png)]
6.2.3快速创建一个表结构相同的表
CREATE TABLE S1 LIKE students; //S1新表名 students 旧表名
6.2.4删除表
DROP TABLE students; //删除表students
//判断删除
DROP TABLE IF EXISTS students;
6.2.5修改表
1.添加表列
ALTER TABLE 表名 ADD 列名 varchar(20) ;
2.修改列类型
ALTER TABLE 表名 MODIFY 列名 varchar(30);
3.修改列名
ALTER TABLE 表名 CHANGE 列名 intro varchar(40);
4.删除列
ALTER TABLE 表名 DROP 列名
5.修改表名
RENAME TABLE students to student1;
6.修改字符集
show create TABLE students; //查看表
ALTER TABLE student1 CHARACTER SET gbk; //修改字符集
7.DML语句
DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删查改,关键字:insert,delete,update等
7.1插入记录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dav7MgLC-1622185903789)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210526204929986.png)]
7.1.1插入全部字段
INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...); //写出所有字段名
INSERT 表名 VALUE(值1,值2,...); //不写字段名,默认从头全部开始
7.1.2插入部分字段
INSERT INTO 表名 (字段名1,字段名2,...) VALUE(值1,值2,...);//没有添加的字段会使用NULL
//查看
SELECT * FROM students;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nSbVW5Xe-1622185903790)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210526213146673.png)]
7.2蠕虫复制
蠕虫复制是指在已有的数据基础之上,将原来的数据进行复制,插入到对于的表中
语法格式:
CREATE TABLE 表名1 LIKE 表名2; //表1只复制表2的表结构
INSERT INTO 表名1 SELECT *FROM 表名2; //新表复制旧表的表结构和所有字段以及字段值
/*选择性的复制旧表的相应字段以及字段值*/
INSERT INTO 表名1 (字段1,字段2,字段3) SELECT 字段1,字段2,字段3 FROM 表名2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PjuedAqG-1622185903790)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210526215617758.png)]
7.3更新表记录
7.3.1.不带条件修改数据
UPDATE 表名 SET 字段名=值;
7.3.2.带条件修改数据
UPDATE 表名 SET 字段名=值 WHERE 字段名=值;
7.3.3.关键字说明
UPDATE: 修改数据
SET: 修改那些字段
WHERE: 指定条件
7.3.4.删除表数据
/*********DELETE***********/
1.不带条件的删除表数据
DELETE FROM 表名;
2.带条件的删除表数据
DELETE FROM 表名 WHERE 地段名=值;
/**********TRUNCATE*************/
TRUNCATE TABLE 表名;
区别
*delete是将表中的数据一条一条的删除
*truncate是将整个表摧毁,重新创建一个新的表,新的表结构和旧的表结构一一样
8.DQL语句
DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据),查询不会对数据库中的数据进行修改,只是一种显示数据的方式。
关键字:select,where等
8.1简单查询
8.1.1查询表所有数据
SELECT *FROM 表名; // *表示所有列
SELECT 字段名1,字段名2 FROM 表名; //查询目标字段
SELECT
8.1.2别名查询
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uxTTQrT4-1622185903792)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210527202123595.png)]
SELECT 字段名1 AS 别名1,字段2 AS 别名2 FROM 表名; //AS可省略
8.1.3清除重复值
1.查询指定列并且结果不出现重复值
SELECT DISTINCT 字段名1,字段名2 FROM 表名
8.1.4查询结果参与运算
1.某列数据和固定值运算
2.某列数据和其他列运算
SELECT 列名1+固定值 AS 别名1, 列名2+列名3 AS 别名2 FROM 表名 //新增字段别名1,字段2
SELECT *,列名1+列名2 AS 别名; //查询计算后显示所有字段
/*所有的操作不会对原始数据进行改变*/
8.2Navicat连接工具的使用
8.2.1Navicat的安装与连接本地数据库
官网链接:http://www.navicat.com.cn/products
连接本地数据库出现错误:错误码:1045( 用户名出错)
8.2.2Navicat完成hero表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ea1091so-1622185903792)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210527210442707.png)]
8.2.3查询以及逻辑运算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L1ofgd6I-1622185903793)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210527213253495.png)]
8.2.4LIKE 关键字
1.LIKE 表示模糊查询
SELECT *FROM 表名 WHERE 字段名 LIKE '通配符字符串';
2.MySQL通配符有两个:
%:表示0各或多个字符(任意个字符);’%笔记本’ 我的笔记本(可查) 华硕笔记本(可查) 华为笔记本1(不可查)
_:表示一个字符 ;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PM3gB4TZ-1622185903794)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210527214835563.png)]
8.2.5排序
通过ORDER BY子句,可以将查询出来的结果进行排序(排序知识显示方式,不会影响数据库中数据的顺序)
语法:SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名[ASC|DESC];
ASC:升序,默认时升序
DESC:降序
1.单列排序
使用一个字段排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jD0IZJhY-1622185903795)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210528092329844.png)]
2.组合排列[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-euJJfJru-1622185903796)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210527220044322.png)]
8.2.6聚合函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HPHXjLlo-1622185903797)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210527220351064.png)]
注意会出现NULL值的字段,如果有COUNT函数会忽略NULL哪一个字段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4nqE5E8S-1622185903798)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210527221000330.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-40ela9hC-1622185903799)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210527221501195.png)]
8.2.7分组
分组查询是指使用GROUP BY 语句对查询信息进行分组,相同数据库作为一组
GROUP BY 怎么分组的?将分组字段结果中相同内容作为一组
SELECT *FROM student GROUP BY id
SELECT SUM (id),id FROM student GROUP BY id
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pQouP8Rn-1622185903799)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210527222719454.png)]
HAVING 条件 //分组后的条件判断
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zicazy97-1622185903800)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210527223120079.png)]
具体操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fgqH3dKj-1622185903801)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210528091440772.png)]
8.2.8limit语句
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-txB3T9sT-1622185903802)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210528091623476.png)]
LIMIT语法格式
LIMIT offset,length;
LIMIT length;
offset 是偏移量,可以认为市跳过的记录数量,默认是0
length 是指需要显示的记录数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KD4JDdvZ-1622185903802)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210528092934548.png)]
应用场景:分页
select *from student limit 0,5 //第一页
select *from student limit 5,10 //第二页
select *from student limit 10,15 //第三页
......
9.数据库约束
对表中的数据进行进一步的限制,保证数据的正确性,有效性和完整性。
约束条件
- PRIMARY KEY : 主键
- UNIQUE : 唯一
- NOT NULL : 非空
- DEFAULT : 默认
- FOREIGN KEY :外键
9.1主键
9.1.1主键的作用
用来唯一标识一条记录,每一个都应该有一个主键,并且每个表只有一个主键
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OIK9deGQ-1622185903803)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210528094024128.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dPqbrmhs-1622185903804)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210528094104170.png)]
9.1.2创建主键
主键:PRIMARY KEY
主键的特点
1.主键必须包含唯一的值
2.主键列不能包含NULL值
创建主键的方法:
在创建表的时候给字段添加主键
CREATE TABLE student (
id int PRIMARY KEY,
name VARCHAR(20);
age int
);
删除主键的方法:
ALTER TABLE student DROP PRIMARY KEY ;
9.1.3主键自增
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-grOKiIUr-1622185903813)(C:\Users\DD\AppData\Roaming\Typora\typora-user-images\image-20210528095719417.png)]
CREATE TABLE student(
id int PRIMARY KEY AUTO_INCREMENT, //默认主键的初始值为1
name varchar(20),
age int
);
起始值不唯一的语法
CRAETE TABLE student(
id int PRIMARY KEY AUTO_INCREMENT=起始值,
name varchar(20),
age int
);
删除操作
delete 与 truncate
delete只操作数据,不破坏表结构
truncate是直接删除表,它会直接摧毁表结构
9.2唯一
在这个表中这个字段不能重复
9.2.1唯一约束的基本格式
字段名 字段类型 UNIQUE
9.2.2实现唯一约束
CREATE TABLE student (
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(20) UNIQUE
);
注意NULL值(不存在重复与不重复的问题)
9.3 非空
这个字段必须设置值,不能是NULL
9.3.1非空约束的基本语法
字段名 字段类型 NOT NULL
CREATE TABLE student(
id int,
name varchar(20) NOT NULL,
gender char(2)
);
9.4默认值
王表中添加数据时,如果不指定这个字段的数据就使用默认值
默认值格式
字段名 字段类型 DEFAULT 默认值
CREATE TABLE student(
id int;
name varchar(20),
phone varchar(50) DEFAULT '0933-764483'
);
class solution{
private solution(){}
private int age;
private String name;
private static solution s;
//静态内部方法,用于获取当前单例(懒加载模式)
public static solution getInstance(){
if(s==null){
solution s=new solution();
}
return s;
}
public int getAge(){
return this.age;
}
public String getName(){
return this.name;
}
}
段名 字段类型 DEFAULT 默认值
CREATE TABLE student(
id int;
name varchar(20),
phone varchar(50) DEFAULT '0933-764483'
);