MySQL详细介绍与使用
目录
一、mysql的安装
二、数据库介绍
1.概念介绍
2.数据库数据类型
3.数据库单表约束
三、SQL语言
1.SQL分类
2.数据库操作
3.表结构操作
4.数据操作
5.多表关系与查询
一、mysql的安装
mysql安装使用教程二、数据库介绍
1.概念介绍
- 数据库:数据仓库,访问必须只能用SQL语句来访问。数据库其实就是一个文件的系统。
- 作用:存储数据,开发任何的应用,都有数据库。
- mysql数据库概念:一个数据库的服务器中包含多个数据库,一个数据库中有多张表,一个表中包含多个字段,表中存放是数据,一行数据和一个JavaBean实体对象是对应的。
2.数据库数据类型
(1)字符串型
- VARCHAR 长度是可变 根据实际数据长度占用空间
- CHAR 长度不可变,存入的数据不够,将填充到指定长度(右侧填充空格)
- BLOB :字节(电影 mp3)
- TEXT :字符(文本的内容)
(2)数值型
- TINYINT :占用 1 字节,能存储非常小的整数值。
取值范围:
有符号:-128 到 127
无符号:0 到 255
- SMALLINT:占用 2 字节,存储小范围的整数。
取值范围:
有符号:-32,768 到 32,767
无符号:0 到 65,535
- INT:占用 4 字节,能够存储一般范围的整数。
取值范围:
有符号:-2,147,483,648 到 2,147,483,647
无符号:0 到 4,294,967,295
- BIGINT:占用 8 字节,支持很大的整数范围。
- FLOAT:通常占用 4 字节,用于存储单精度浮点数。
- DOUBLE:通常占用 8 字节,用于存储双精度浮点数。
(3)逻辑型
BIT:在Java中是true或者false 在数据库bit类型(1或者0)(4)日期型
- DATE :只包含日期(年月日)
- TIME :只包含时间(时分秒)
- DATETIME :包含日期和时间。如果插入数据的时候,字符值为空,字段的值就是空了。
- TIMESTAMP :包含日期和时间。如果插入数据的时候,设置字段的值为空,默认获取当前的系统的时候, 把时间保存到字段中。
3.数据库单表约束
(1) 主键约束 (PRIMARY KEY)
- 功能:唯一标识表中的每一行记录。主键的值不能重复,且不能为空。
- 唯一且非空。
(2)唯一约束 (UNIQUE)
- 功能:确保列中所有值是唯一的,允许空值。
(3)非空约束 (NOT NULL)
- 功能:确保列中的每个值都不能为空。
(4) 默认约束 (DEFAULT)
- 功能:为列提供默认值,当插入记录时如果没有为此列提供值,将会使用此默认值。
(5) 外键约束 (FOREIGN KEY)
- 功能:虽然外键通常涉及两个表之间的关系,但也可以在单个表中使用,来确保某列的值引用同一表中的主键或唯一列。
三、SQL语言
1.SQL分类
(1) DDL 数据定义语言- 创建数据库 创建表 创建视图 创建索引 修改数据库 删除数据库 修改表 删除表
- create ‐‐ 创建 alter ‐‐ 修改 drop ‐‐ 删除
(2)DML 数据操作语言
- 操作数据 插入数据(insert) 修改数据(update) 删除数据(delete)
(3)DCL 数据控制语言
- if else while
(4)DQL 数据查询语言
- 从表中查询数据(select)
2.数据库操作
(1)创建数据库
create database 数据库名称 create database 数据库名称 character set 编码 collate 校对规则 create database mydb3 character set 'utf8' collate 'utf8_bin';
(2)查看数据库
show databases; ‐‐ 查看所有的数据库 use 数据库名称;(*****) ‐‐ 使用数据库 show create database 数据库名称; ‐‐ 查询数据库的创建的信息 select database(); ‐‐ 查询当前正在使用的数据库
(3)删除数据库
drop database 数据库名称; --删除数据库
(4)修改数据库
alter database 数据库名称 character set 'gbk' collate '校对规则';
3.表结构操作
(1)创建表
create table 表名称( 字段1 类型(长度) 约束, 字段2 类型(长度) 约束, 字段3 类型(长度) 约束 );
注意:- 创建表的时候,后面用小括号,后面分号。
- 编写字段,字段与字段之间使用逗号,最后一个子段不能使用逗号。
- 如果声明字符串数据的类型,长度是必须指定的。
- 如果不指定数据的长度,有默认值的。int类型的默认长度是11
例如:
select database(); use 数据库名称; create table employee( id int, name varchar(30), gender char(5), birthday date, entry_date date, job varchar(50), salary double, resume text );
(2)单表删除
drop table 表名;
(3)查看表
desc 表名; ‐‐ 查询表的信息 show tables; ‐‐ 查看当前数据库中所有的标签 show create table 表名; ‐‐ 查看表的创建的信息
(4)修改表
alter table 表名 add 新列名 类型(长度) 约束; ‐‐ 添加列 alter table 表名 drop 列名; ‐‐ 删除列 alter table 表名 modify 列名 类型(长度) 约束; ‐‐ 修改列的类型或者约束 alter table 表名 change 旧列名 新列名 类型(长度) 约束; ‐‐ 修改列名 rename table 表名 to 新表名; ‐‐ 修改表的名称 alter table 表 名 character set utf8; ‐‐ 修改表的字符集
4.数据操作
(1)插入数据
insert into 表名 (字段1,字段2,字段3) values (值1,值2,值3); insert into 表名 values (值1,值2,值3);
- 插入的数据与字段类型必须是相同的。
- 数据的大小范围在字段范围内
- 值与字段一一对应
- 字符串或者日期类型数据需要使用单引号
(2)MySQL插入中文数据乱码问题
- 先把MySQL服务停止。
- 找到MySQL安装文件的my.ini的配置文件
[client]
port=3306
[mysql]
default‐character‐set=gbk
- 重启MySQL服务
(3)修改数据(update)
update 表名 set 字段1=值,字段2=值 where 条件; -- 如果没有where条件语句,默认更新所有的数据。 -- 如果有where条件,默认更新符合条件的记录。 -- 将所有员工薪水修改为5000元。 update user set salary = 5000; -- 将姓名为’聪聪’的员工薪水修改为3000元。 update user set salary = 3000 where username = '聪聪'; -- 将姓名为’小凤’的员工薪水修改为4000元,job改为ccc。 update user set salary = 4000,job = 'ccc' where username = '小凤'; -- 将如花的薪水在原有基础上增加1000元。 update user set salary = salary+1000 where username = '如花';
(4)删除数据(delete)
delete from 表名 where 条件; -- 如果没有where条件,默认删除所有的数据。 truncate 表名; -- 删除表中所有的数据。 delete from 表名; -- 也可以删除所有数据。
区别:
- truncate先把你整个表删除掉,默默创建一个空的表(和原来的表结构是一样的)。
- delete from 表名 一行一行的删除。(使用它)
(5)查询数据(select)
select * from 表名; select 字段1,字段2,字段3 from 表名; DISTINCT -- 去除重复的数据(面试常考)
(6)查询语句中使用运算和别名
-- 在所有学生分数上加10分特长分。 select name,(math+10) m,(english+10) e,(chinese+10) c from stu; -- 统计每个学生的总分。 select name,(math+english+chinese) 总 分 from stu; -- 使用别名表示学生分数 select name, (math + english + chinese + 10) as 总分 from stu;
(7)使用where条件过滤
-- 查询姓名为聪聪的学生成绩 select name,math,chinese from stu where name = '聪聪'; -- 查询英语成绩大于90分的同学 select name,english from stu where english > 20; -- 查询总分大于200分的所有同学 select name,math+english+chinese from stu where (math+english+chinese) > 200; --in 表示范围 select * from stu where math = 18; select * from stu where math in (78,18,99); --like 模糊查询 ‐‐ 符合模糊的条件 select * from stu where name like '张_'; select * from stu where name like '张%'; select * from stu where name like '%张'; select * from stu where name like '%张%'; --isnull ifnull nullif判断某一个字段记录是否为空 --and与 or或者 not非
- isnull、ifnull和nullif的区别
(8)order by 对查询的结果进行排序
select * from 表名 where 条件 order by 列名 升序/降序; order by 列名 asc; -- 升序,默认值 order by 列名 desc; -- 降序 --order by 子句必须出现在select语句的末尾。
(9)聚集函数
-- 总计某一列数据总和。一列的个数。一列的平均数。 -- 一列中最大值和最小值。 count --计数 sum --求和 avg ‐‐ 平均值 max ‐‐ 最大值 min ‐‐ 最小值 -- ifnull 判断是否为空,如果xxx为null,替换成0 ifnul(xxx,0)
(10)分组 group by
-- 1.按照分数段分组 SELECT CASE WHEN (math + english + chinese + 10) >= 90 THEN '优' WHEN (math + english + chinese + 10) >= 80 THEN '良' WHEN (math + english + chinese + 10) >= 70 THEN '中' ELSE '及格以下' END AS 成绩等级, COUNT(*) AS 学生人数 FROM stu GROUP BY 成绩等级; -- 2.对订单表中商品归类后,显示每一类商品的总价 select product,sum(price),count(*) from orders group by product; 默认是一组 -- 3.查询购买了几类商品,并且每类总价大于100的商品 select product from orders group by product having sum(price) > 100;
Having和where均可实现过滤,但在having可以使用聚集函数,where不能使用聚集函数,having通常跟在group by后,它作用于分组。
5.多表关系与查询
数据库的多表查找_如何多表查询-CSDN博客
- isnull、ifnull和nullif的区别
- 重启MySQL服务
- 从表中查询数据(select)
- if else while
(4)DQL 数据查询语言
- 操作数据 插入数据(insert) 修改数据(update) 删除数据(delete)
(3)DCL 数据控制语言
- 功能:虽然外键通常涉及两个表之间的关系,但也可以在单个表中使用,来确保某列的值引用同一表中的主键或唯一列。
- 功能:为列提供默认值,当插入记录时如果没有为此列提供值,将会使用此默认值。
- 功能:确保列中的每个值都不能为空。
- 功能:确保列中所有值是唯一的,允许空值。
- INT:占用 4 字节,能够存储一般范围的整数。
取值范围:
有符号:-2,147,483,648 到 2,147,483,647
无符号:0 到 4,294,967,295
- SMALLINT:占用 2 字节,存储小范围的整数。
取值范围:
有符号:-32,768 到 32,767
无符号:0 到 65,535
- TINYINT :占用 1 字节,能存储非常小的整数值。
取值范围:
有符号:-128 到 127
无符号:0 到 255
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。