2023年6月21日发(作者:)
MySQL数据库之SQL⼊门MySQL数据库之SQL⼊门前⾔从本⽂开始,我将跟随⿊马程序员系统学习MySQL数据库的和课程,并将学习总结记录在我的数据库博客栏⽬,欢迎共同学习提⾼。本⽂以MySQL数据库为例,系统讲解SQL的基本操作。⼀、数据库的基本概念1. 数据库的英⽂单词: DataBase 简称 : DB2. 数据库是⽤于存储和管理数据的仓库。3. 数据库的特点:1. 持久化存储数据的。其实数据库就是⼀个⽂件系统2. ⽅便存储和管理数据3. 使⽤了统⼀的⽅式操作数据库 – SQL4. 常见的数据库软件⼆、MySQL数据库软件1. MySQL安装软件下载2. MySQL⽬录结构MySQL安装⽬录下包括配置⽂件等其它相关⽂件MySQL安装完成后,会⾃动创建⼀个数据⽬录(C:ProgramDataMySQLMySQL Server 5.5data),该⽬录中包括三个⽂件夹,即初始的三个数据库。3. CMD中登录退出MySQL⽅式MySQL登录的三种⽅法 -uroot -p密码 -hip -uroot -p连接⽬标的密码 --host=ip --user=root --password=连接⽬标的密码MySQL退出的两种⽅式可视化⼯具三、SQL⼊门1.什么是SQL?SQL全称为Structured Query Language:结构化查询语⾔SQL其实就是定义了操作所有关系型数据库的规则。每⼀种数据库操作的⽅式存在不⼀样的地⽅,称为“⽅⾔”。通⽤语法SQL 语句可以单⾏或多⾏书写,以分号结尾。可使⽤空格和缩进来增强语句的可读性。MySQL 数据库的 SQL 语句不区分⼤⼩写,关键字建议使⽤⼤写。3 种注释单⾏注释: – 注释内容 或 # 注释内容(mysql 特有)多⾏注释: /* 注释 */3. SQL分类1. DDL(Data Definition Language)数据定义语⾔⽤来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等2. DML(Data Manipulation Language)数据操作语⾔⽤来对数据库中表的数据进⾏增删改。关键字:insert, delete, update 等3. DQL(Data Query Language)数据查询语⾔⽤来查询数据库中表的记录(数据)。关键字:select, where 等4. DCL(Data Control Language)数据控制语⾔⽤来定义数据库的访问权限和安全级别,及创建⽤户。关键字:GRANT, REVOKE 等DDL是操作数据库及表这个对象。⽽DML和DQL是操作表中的具体数据。DCL是负责权限等相关的SQL操作。3.1 DDL相关SQL语句DDL⽤于操作数据库和表,具体包括CRUD四种操作。其中C(Create)创建、R(Retrieve)查询、U(Updata)更新、D(Delete)删除。3.1.1 数据库CRUD操作C(Create):创建1.创建数据库SQL语句create database 数据库名称;2.创建数据库,判断不存在,再创建的SQL语句create database if not exists 数据库名称;3.创建数据库,并指定字符集的SQL语句create database 数据库名称 character set 字符集名;4.⽰例 :创建db2数据库,判断是否存在,并制定字符集为gbkcreate database if not exists db2 character set gbk;R(Retrieve):查询1.查询所有数据库的名称show databases;2.查询某个数据库的字符集:查询某个数据库的创建语句show create database 数据库名称;U(Update):修改修改数据库的字符集alter database 数据库名称 character set 字符集名称;D(Delete):删除1.删除数据库drop database 数据库名称;2.判断数据库存在,存在再删除drop database if exists 数据库名称;指定使⽤哪个数据库查询当前正在使⽤的数据库名称select database();使⽤数据库use 数据库名称;3.1.2 表CRUD操作C(Create):创建1.创建表create table 表名(列名1 数据类型1,列名2 数据类型2,…列名n 数据类型n);数据类型有以下⼏种:常⽤数据类型解释:整数类型:⼩数类型。例如:score double(5,2),score共有5位数,其中⼩数点后有⼀位:⽇期,只包含年⽉⽇,me:⽇期,包含年⽉⽇时分秒 yyyy-MM-dd HH:mm:amp:时间戳类型 包含年⽉⽇时分秒 yyyy-MM-dd HH:mm:ss
如果将来不给这个字段赋值,或赋值为null,则默认使⽤当前的系统时间,来⾃动赋值varchar:字符串。例如:name varchar(20):姓名最⼤20个字符例如创建学⽣表:CREATE TABLE student(id int, – 编号NAME varchar(20), – 姓名age int, – 年龄sex varchar(5), – 性别address varchar(100), – 地址math int, – 数学english int-- 英语);2.复制表create table 表名 like 被复制的表名; R(Retrieve):查询查询某个数据库中所有的表名称show tables;查询表结构desc 表名;U(Update):修改1. 修改表名alter table 表名 rename to 新的表名;2. 修改表的字符集alter table 表名 character set 字符集名称;3. 添加⼀列alter table 表名 add 列名 数据类型;4. 修改列名称 类型alter table 表名 change 列名 新列名 新数据类型;alter table 表名 modify 列名 新数据类型;5. 删除列alter table 表名 drop 列名;D(Delete):删除drop table 表名;drop table if exists 表名 ;3.2 DML相关SQL语句1.添加数据: * 语法: insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); * 注意: 1. 列名和值要⼀⼀对应。 2. 如果表名后,不定义列名,则默认给所有列添加值 insert into 表名 values(值1,值2,...值n); 3. 除了数字类型,其他类型需要使⽤引号(单双都可以)引起来2.删除数据: * 语法: delete from 表名 [where 条件] * 注意: 1. 如果不加条件,则删除表中所有记录。 2. 如果要删除所有记录 1. delete from 表名; -- 不推荐使⽤。有多少条记录就会执⾏多少次删除操作 2. truncate table 表名; -- 推荐使⽤,效率更⾼ 先删除表,然后再创建⼀张⼀样的表。3.修改数据: * 语法: update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件]; * 注意: 如果不加任何条件,则会将表中所有记录全部修改。3.3 DQL相关SQL语句DQL⽤于查询表中的记录。1.语法select 字段列表from 表名列表where 条件列表group by 分组字段having 分组之后的条件order by 排序limit 分页限定2.基础查询1. 多个字段的查询select 字段名1,字段名2… from 表名;注意:如果查询所有字段,则可以使⽤*来替代字段列表。2. 去除重复:distinct关键字去除查询结果中的重复项3. 计算列⼀般可以使⽤四则运算计算⼀些列的值。(⼀般只会进⾏数值型的计算)ifnull(表达式1,表达式2):null参与的运算,计算结果都为null表达式1:哪个字段需要判断是否为null表达式2:如果该字段为null后的替换值。4. 起别名:as关键字:as也可以省略3.条件查询(关键字where)1.条件运算符> 、< 、<= 、>= 、= 、<>AND
IN( 集合)
LIKE:模糊查询 占位符: _:单个任意字符 %:多个任意字符IS NULL
and 或 &&or 或 ||
not 或 !2. 条件查询⽰例查询年龄⼤于等于20 ⼩于等于30查询年龄22岁,18岁,25岁的信息查询英语成绩为null查询姓马的有哪些?查询姓名第⼆个字是化的⼈4.排序查询(关键字order by )语法order by 排序字段1 排序⽅式1 , 排序字段2 排序⽅式2…排序⽅式:ASC:升序,默认的; DESC:降序。注意:如果有多个排序条件,则当前边的条件值⼀样时,才会判断第⼆条件。5.聚合函数:计算个数:字段⼀般选择⾮空的列(主键)2. max:计算最⼤值3. min:计算最⼩值4. sum:计算和5. avg:计算平均值注意:聚合函数的计算,排除null值。解决⽅案:1.选择不包含⾮空的列进⾏计算函数⽰例:6.分组查询(关键字group by,having)语法:group by 分组字段;分组之后查询的字段:分组字段、聚合函数where 和 having 的区别?1. where 在分组之前进⾏限定,如果不满⾜条件,则不参与分组。having在分组之后进⾏限定,如果不满⾜结果,则不会被查询出来2. where 后不可以跟聚合函数,having后可以进⾏聚合函数的判断。⽰例1.按照性别分组。分别查询男、⼥同学的数学平均分2.按照性别分组。分别查询男、⼥同学的数学平均分,⼈数3.按照性别分组。分别查询男、⼥同学的数学平均分,⼈数 要求:分数低于70分的⼈,不参与分组4.按照性别分组。分别查询男、⼥同学的数学平均分,⼈数 要求:分数低于70分的⼈,不参与分组,分组之后。⼈数要⼤于2个⼈7.分页查询(关键字limit)语法:limit 开始的索引,每页查询的条数;公式:开始的索引 = (当前的页码 - 1) * 每页显⽰的条数例如:每页显⽰3条记录注意,limit 是⼀个MySQL"⽅⾔"。即其它数据库分页查询的关键字可能是其它的⽅式。
2023年6月21日发(作者:)
MySQL数据库之SQL⼊门MySQL数据库之SQL⼊门前⾔从本⽂开始,我将跟随⿊马程序员系统学习MySQL数据库的和课程,并将学习总结记录在我的数据库博客栏⽬,欢迎共同学习提⾼。本⽂以MySQL数据库为例,系统讲解SQL的基本操作。⼀、数据库的基本概念1. 数据库的英⽂单词: DataBase 简称 : DB2. 数据库是⽤于存储和管理数据的仓库。3. 数据库的特点:1. 持久化存储数据的。其实数据库就是⼀个⽂件系统2. ⽅便存储和管理数据3. 使⽤了统⼀的⽅式操作数据库 – SQL4. 常见的数据库软件⼆、MySQL数据库软件1. MySQL安装软件下载2. MySQL⽬录结构MySQL安装⽬录下包括配置⽂件等其它相关⽂件MySQL安装完成后,会⾃动创建⼀个数据⽬录(C:ProgramDataMySQLMySQL Server 5.5data),该⽬录中包括三个⽂件夹,即初始的三个数据库。3. CMD中登录退出MySQL⽅式MySQL登录的三种⽅法 -uroot -p密码 -hip -uroot -p连接⽬标的密码 --host=ip --user=root --password=连接⽬标的密码MySQL退出的两种⽅式可视化⼯具三、SQL⼊门1.什么是SQL?SQL全称为Structured Query Language:结构化查询语⾔SQL其实就是定义了操作所有关系型数据库的规则。每⼀种数据库操作的⽅式存在不⼀样的地⽅,称为“⽅⾔”。通⽤语法SQL 语句可以单⾏或多⾏书写,以分号结尾。可使⽤空格和缩进来增强语句的可读性。MySQL 数据库的 SQL 语句不区分⼤⼩写,关键字建议使⽤⼤写。3 种注释单⾏注释: – 注释内容 或 # 注释内容(mysql 特有)多⾏注释: /* 注释 */3. SQL分类1. DDL(Data Definition Language)数据定义语⾔⽤来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等2. DML(Data Manipulation Language)数据操作语⾔⽤来对数据库中表的数据进⾏增删改。关键字:insert, delete, update 等3. DQL(Data Query Language)数据查询语⾔⽤来查询数据库中表的记录(数据)。关键字:select, where 等4. DCL(Data Control Language)数据控制语⾔⽤来定义数据库的访问权限和安全级别,及创建⽤户。关键字:GRANT, REVOKE 等DDL是操作数据库及表这个对象。⽽DML和DQL是操作表中的具体数据。DCL是负责权限等相关的SQL操作。3.1 DDL相关SQL语句DDL⽤于操作数据库和表,具体包括CRUD四种操作。其中C(Create)创建、R(Retrieve)查询、U(Updata)更新、D(Delete)删除。3.1.1 数据库CRUD操作C(Create):创建1.创建数据库SQL语句create database 数据库名称;2.创建数据库,判断不存在,再创建的SQL语句create database if not exists 数据库名称;3.创建数据库,并指定字符集的SQL语句create database 数据库名称 character set 字符集名;4.⽰例 :创建db2数据库,判断是否存在,并制定字符集为gbkcreate database if not exists db2 character set gbk;R(Retrieve):查询1.查询所有数据库的名称show databases;2.查询某个数据库的字符集:查询某个数据库的创建语句show create database 数据库名称;U(Update):修改修改数据库的字符集alter database 数据库名称 character set 字符集名称;D(Delete):删除1.删除数据库drop database 数据库名称;2.判断数据库存在,存在再删除drop database if exists 数据库名称;指定使⽤哪个数据库查询当前正在使⽤的数据库名称select database();使⽤数据库use 数据库名称;3.1.2 表CRUD操作C(Create):创建1.创建表create table 表名(列名1 数据类型1,列名2 数据类型2,…列名n 数据类型n);数据类型有以下⼏种:常⽤数据类型解释:整数类型:⼩数类型。例如:score double(5,2),score共有5位数,其中⼩数点后有⼀位:⽇期,只包含年⽉⽇,me:⽇期,包含年⽉⽇时分秒 yyyy-MM-dd HH:mm:amp:时间戳类型 包含年⽉⽇时分秒 yyyy-MM-dd HH:mm:ss
如果将来不给这个字段赋值,或赋值为null,则默认使⽤当前的系统时间,来⾃动赋值varchar:字符串。例如:name varchar(20):姓名最⼤20个字符例如创建学⽣表:CREATE TABLE student(id int, – 编号NAME varchar(20), – 姓名age int, – 年龄sex varchar(5), – 性别address varchar(100), – 地址math int, – 数学english int-- 英语);2.复制表create table 表名 like 被复制的表名; R(Retrieve):查询查询某个数据库中所有的表名称show tables;查询表结构desc 表名;U(Update):修改1. 修改表名alter table 表名 rename to 新的表名;2. 修改表的字符集alter table 表名 character set 字符集名称;3. 添加⼀列alter table 表名 add 列名 数据类型;4. 修改列名称 类型alter table 表名 change 列名 新列名 新数据类型;alter table 表名 modify 列名 新数据类型;5. 删除列alter table 表名 drop 列名;D(Delete):删除drop table 表名;drop table if exists 表名 ;3.2 DML相关SQL语句1.添加数据: * 语法: insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); * 注意: 1. 列名和值要⼀⼀对应。 2. 如果表名后,不定义列名,则默认给所有列添加值 insert into 表名 values(值1,值2,...值n); 3. 除了数字类型,其他类型需要使⽤引号(单双都可以)引起来2.删除数据: * 语法: delete from 表名 [where 条件] * 注意: 1. 如果不加条件,则删除表中所有记录。 2. 如果要删除所有记录 1. delete from 表名; -- 不推荐使⽤。有多少条记录就会执⾏多少次删除操作 2. truncate table 表名; -- 推荐使⽤,效率更⾼ 先删除表,然后再创建⼀张⼀样的表。3.修改数据: * 语法: update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件]; * 注意: 如果不加任何条件,则会将表中所有记录全部修改。3.3 DQL相关SQL语句DQL⽤于查询表中的记录。1.语法select 字段列表from 表名列表where 条件列表group by 分组字段having 分组之后的条件order by 排序limit 分页限定2.基础查询1. 多个字段的查询select 字段名1,字段名2… from 表名;注意:如果查询所有字段,则可以使⽤*来替代字段列表。2. 去除重复:distinct关键字去除查询结果中的重复项3. 计算列⼀般可以使⽤四则运算计算⼀些列的值。(⼀般只会进⾏数值型的计算)ifnull(表达式1,表达式2):null参与的运算,计算结果都为null表达式1:哪个字段需要判断是否为null表达式2:如果该字段为null后的替换值。4. 起别名:as关键字:as也可以省略3.条件查询(关键字where)1.条件运算符> 、< 、<= 、>= 、= 、<>AND
IN( 集合)
LIKE:模糊查询 占位符: _:单个任意字符 %:多个任意字符IS NULL
and 或 &&or 或 ||
not 或 !2. 条件查询⽰例查询年龄⼤于等于20 ⼩于等于30查询年龄22岁,18岁,25岁的信息查询英语成绩为null查询姓马的有哪些?查询姓名第⼆个字是化的⼈4.排序查询(关键字order by )语法order by 排序字段1 排序⽅式1 , 排序字段2 排序⽅式2…排序⽅式:ASC:升序,默认的; DESC:降序。注意:如果有多个排序条件,则当前边的条件值⼀样时,才会判断第⼆条件。5.聚合函数:计算个数:字段⼀般选择⾮空的列(主键)2. max:计算最⼤值3. min:计算最⼩值4. sum:计算和5. avg:计算平均值注意:聚合函数的计算,排除null值。解决⽅案:1.选择不包含⾮空的列进⾏计算函数⽰例:6.分组查询(关键字group by,having)语法:group by 分组字段;分组之后查询的字段:分组字段、聚合函数where 和 having 的区别?1. where 在分组之前进⾏限定,如果不满⾜条件,则不参与分组。having在分组之后进⾏限定,如果不满⾜结果,则不会被查询出来2. where 后不可以跟聚合函数,having后可以进⾏聚合函数的判断。⽰例1.按照性别分组。分别查询男、⼥同学的数学平均分2.按照性别分组。分别查询男、⼥同学的数学平均分,⼈数3.按照性别分组。分别查询男、⼥同学的数学平均分,⼈数 要求:分数低于70分的⼈,不参与分组4.按照性别分组。分别查询男、⼥同学的数学平均分,⼈数 要求:分数低于70分的⼈,不参与分组,分组之后。⼈数要⼤于2个⼈7.分页查询(关键字limit)语法:limit 开始的索引,每页查询的条数;公式:开始的索引 = (当前的页码 - 1) * 每页显⽰的条数例如:每页显⽰3条记录注意,limit 是⼀个MySQL"⽅⾔"。即其它数据库分页查询的关键字可能是其它的⽅式。
发布评论