mysql简单的入门教程 mysql怎么入门
bigegpt 2024-10-12 06:40 4 浏览
一、写在前面
黑窗口启动mysql服务: net start mysql
登录:mysql -u root -p
备份数据库: mysqldump -uroot -p1234 store28 > g:/1.sql
建议使用Navicat工具操作MySQL
二、SQL语句的分类
DDL: 数据定义语言
create、drop、alter
DML:数据操作语句
insert、delete、update、truncate
DQL: 数据查询语言:
select、show
三、操作数据库
①查询所有数据库
show databases;
查看活跃连接
show processlist;
②创建数据库
create database blog default character set utf8;
③查看数据库的默认字符集
show create database blog;
④删除数据库
drop database blog;
⑤修改数据库
alter database blog default character set gbk;
⑥选择数据库
use blog;
四、操作表
①查看所有表
show tables;
②创建表
create table student(sid int,sname varchar(20));
③查看表结构
desc student;
④删除表
drop table student;
⑤修改表
添加字段
alter table student add sgender varchar(2);
删除字段
alter table student drop sgender;
修改字段类型
alter table student modify sgender varchar(100);
修改字段名称
alter table student change sgender gender varchar(2);
修改表名称
alter table student rename to teacher;
五、增删改数据
①增加数据
insert into student values(1,'张三','男',20);
insert into student(id,name) values(2,'李四');
②修改数据
update student set gender='女';
update student set gender='男' where id=1;
update student set gender='男',age=30 where id=2;
③删除数据
delete from student;
delete from student where id=2;
truncate table student;
删除对比:
delete from可以带条件删除;只能删除表的数据,不能删除表的约束 ;可以回滚(事务)
truncate table不能带条件删除 ;既可以删除表的数据,也可以删除表的约束;不能回滚
六、查询数据(重点)
①查询时添加常量列
select id,name,gender,age,'java学习' as 'java' from student;
查询时合并列(合并列只能合并数值类型的字段)
select id,name,(servlet+jsp) as '总成绩' from student;
查询时去除重复记录
select distinct gender from student;
select distinct(gender) from student;
②条件查询 <>(不等于)
select * from student where jsp between 75 and 90;
select * from student where gender<>'男';
判空条件(null 空字符串)
select * from student where address is null or address='';
select * from student where address is not null and address<>'';
模糊条件: like
% 表示任意个字符
_ 表示一个字符
③聚合查询
常用的聚合函数:
sum()
avg()
max()
min()
count()
注意:count()函数统计的数量不包含null的数据
④分页查询(开始行,行数)0开始
select * from student limit (当前页-1)*每页显示条数,每页显示条数;
⑤查询排序
select * from student order by servlet asc,jsp desc;
⑥分组查询
select gender,count(*) from student group by gender;
⑦分组查询后筛选(分组之前条件使用where关键字,分组之后条件使用having关键字)
select gender,count(*) from student group by gender having count(*)>2;
七、六种约束类型
① 默认值 default
② 非空 not null
③ 唯一 unique
④ 主键 primary key 非空且唯一
⑤ 自增长 AUTO_INCREMENT
--自增长,从0开始 zerofill 零填充
--删除:delete不能影响自增长约束,truncate可以影响自增长约束
例:id int(4) zerofill primary key auto_increment,
⑥ 外键
例:constraint emlyee_dept_fk foreign key(deptid) references dept(id)
注意:
1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上。
2)主表的参考字段通用为主键。
3)添加数据: 先添加主表,再添加副表。
级联操作:
级联修改: on update cascade
级联删除: on delete cascade
constraint emlyee_dept_fk foreign key(deptid) references dept(id) on update cascade on delete cascade
八、数据库(表)设计
①设计原则:设计的表尽量遵守三大范式。
②三大范式:
第一范式:确保每列的原子性.
第二范式:在第一范式的基础上,确保表中的每列都和主键相关.
第三范式:在第二范式的基础上,确保每列都和主键列直接相关,而不是间接相关.(非主键字段不能相互依赖)
九、关联查询(多表查询)
多表查询规则:
a.确定查询哪些表
b.确定哪些哪些字段
c.表与表之间连接条件 (规律:连接条件数量是表数量-1)
① 内连接查询
select e.empname,d.deptname from employee e inner join dept d on e.deptid=d.id;
② 左[外]连接查询:使用左边表的数据去匹配右边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件则显示null
select d.deptname,e.empname from dept d left join employee e on d.id=e.deptid;
③ 右[外]连接查询:使用右边表的数据去匹配左边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件则显示null
select d.deptname,e.empname from employee e right join dept d on d.id=e.deptid;
④ 自连接查询:
select e.empname,b.empname from employee e left outer join employee b on e.bossid=b.id;
十、UNION和UNION ALL的作用和语法
UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。
UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。
同时,每条 SELECT 语句中的列的顺序必须相同.
示例:
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2
注意:
默认地,UNION 操作符选取不同的值。如果允许重复的值,使用 UNION ALL。UNION ALL不消除重复行
另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
UNION 结果集中的列名总是等于第一个 SELECT 语句中的列名
十一、存储过程
①描述:带有逻辑的sql语句。
②优缺点:
执行效率非常快,存储过程是在数据库的服务器端执行的。
移植性很差,不同数据库的存储过程是不能移植。
③语法:
--全局变量(内置变量):mysql数据库内置的变量 (所有连接都起作用)
-- 查看所有全局变量: show variables
-- 查看某个全局变量: select @@变量名
-- 修改全局变量: set 变量名=新值
-- character_set_client: mysql服务器的接收数据的编码
-- character_set_results:mysql服务器输出数据的编码
--会话变量:只存在于当前客户端与数据库服务器端的一次连接当中。如果连接断开,那么会话变量全部丢失
-- 定义会话变量: set @变量=值
-- 查看会话变量: select @变量
--局部变量: 在存储过程中使用的变量就叫局部变量。只要存储过程执行完毕,局部变量就丢失
④示例:
delimiter $
create procedure pro_test(out result VARCHAR(20))
begin
DECLARE score int default 0;
SELECT avg(english) into score from student;
if score>90 then
set result = '优秀';
elseif score>70 and score <=90 then
set result = '良好';
else
set result = '一般';
end if;
end $
CALL pro_test(@result);
select @result;
drop procedure pro_test;
十二、触发器
①描述:当操作了某张表时,希望同时触发一些动作行为,使用触发器完成。
②示例:
create trigger tri_empadd after insert on employee for each row -- 当往员工表插入一条记录时
insert into test_log(content) values('员工表插入了一条记录');
十三、MySQL权限问题
-- mysql数据库,用户配置 : user表
use mysql;
-- 查看密码
select password('root');
-- 修改密码
update user set password=password('123456') where user='root';
-- 分配权限账户
grant 权限 on 数据库.表 to '账户名'@'账户类型' identified by '密码';
权限: select insert delete update drop create/ 或,all
举例:grant select on day16.employee to 'eric'@'localhost' identified by '123456';
-- 备份(无需登陆)
mysqldump -u root -p day17 > c:/bak.sql
-- 恢复(无需登陆)
mysql -u root -p day17 < d:/back.sql
十四、MySQL常用函数
version() 返回mysql服务器的版本
from_unixtime(ts,fmt) 根据指定的fmt格式,格式化unix时间戳ts
time_format(time,fmt) 依照字符串fmt格式化时间time值
date_format(date,fmt) 依照字符串fmt格式化日期date值
format(x,y) 把x格式化为以逗号隔开的数字序列,y是结果的小数位数
substring(str, pos) 字段,开始位置
substring(str, pos, length) 字段,开始位置,长度n
now() 返回当前的日期和时间
curdate() 返回当前的日期
curtime() 返回当前的时间
MD5(str) 返回字符串str的MD5加密值
length(str) 返回字符串str中的字符数
concat(s1,s2...,sn) 将s1,s2...,sn连接成字符串
concat_ws(sep,s1,s2...,sn) 将s1,s2...,sn连接成字符串,并用sep字符间隔
reverse(str) 返回颠倒字符串str的结果
trim(str) 去除字符串首部和尾部的所有空格
ltrim(str) 去掉字符串str开头的空格
rtrim(str) 去掉字符串str尾部的空格
相关推荐
- 恢复软件6款汇总推荐,帮你减轻数据恢复压力!
-
在当今数字化生活中,数据丢失的风险如影随形。无论是误删文件、硬盘故障,还是遭遇病毒攻击,丢失的数据都可能给我们带来不小的麻烦。此时,一款优秀的数据恢复软件就成为了挽救数据的关键。今天,为大家汇总推荐...
- 中兴星星一号刷回官方原版recovery的教程
-
【搞科技教程】中兴星星一号的官方recovery也来说一下了,因为之前给大家分享过了第三方的recovery了,之前给大家分享的第三方recovery也是采用一键刷入的方式,如果细心的朋友会发现,之前...
- 新玩机工具箱,Uotan柚坛工具箱软件体验
-
以前的手机系统功能比较单调,各厂商的重视程度不一样,所以喜欢玩机的朋友会解锁手机系统的读写权限,来进行刷机或者ROOT之类的操作,让使用体验更好。随着现在的手机系统越来越保守,以及自身功能的增强,...
- 三星g906k刷recovery教程_三星g906k中文recovery下载
-
【搞科技教程】看到有一些机友在找三星g906k的第三方recovery,下面就来说一下详细的recovery的刷入方法了,因为手机只有有了第三方的recovery之后才可以刷第三方的root包和系统包...
- 中兴星星2号刷recovery教程_星星二号中文recovery下载
-
【搞科技教程】咱们的中兴星星2手机也就是中兴星星二号手机的第三方recovery已经出来了,并且是中文版的,有了这个recovery之后,咱们的手机就可以轻松的刷第三方的系统包了,如果没有第三方的re...
- 数据恢复软件有哪些值得推荐?这 6 款亲测好用的工具汇总请收好!
-
在数字生活中,数据丢失的阴霾常常突如其来。无论是误删工作文档、格式化重要磁盘,还是遭遇系统崩溃,都可能让我们陷入焦虑。关键时刻,一款得力的数据恢复软件便是那根“救命稻草”。今天,为大家精心汇总6...
- 中兴u956刷入recovery的教程(中兴e5900刷机)
-
【搞科技教程】这次主要来给大家说说中兴u956手机如何刷入第三方的recovery,因为第三方的recovery工具是咱们刷第三方rom包的基础,可是很我欠却不会刷,所以太这里来给大家整理了一下详细的...
- 联想A850+刷recovery教程 联想A850+第三方recovery下载
-
【搞科技教程】联想A850+的第三方recovery出来了,这个第三方的recovery是非常的重要的,比如咱们的手机要刷第三方的系统包的时候,都是需要用到这个第三方的recovery的,在网上也是有...
- 工具侠重大更新 智能机上刷机一条龙完成
-
工具侠是针对玩机的机油开发的一款工具,不管是发烧级别的粉丝,还是普通小白用户,都可以在工具侠上找到你喜欢的工具应用。这不,最新的工具侠2.0.16版本,更新了专门为小白准备的刷机助手工具,以及MTK超...
- shift+delete删除的文件找回6种硬盘数据恢复工具
-
硬盘作为电脑的重要存储设备,如同一个巨大的数字仓库,承载着我们日常工作、学习和生活中的各种文件,从珍贵的照片、重要的工作文档到喜爱的视频、音乐等,都依赖硬盘来安全存放。但有时,我们可能会不小心用sh...
- 使用vscode+Deepseek 实现AI编程 基于Cline和continue
-
尊敬的诸位!我是一名专注于嵌入式开发的物联网工程师。关注我,持续分享最新物联网与AI资讯和开发实战。期望与您携手探寻物联网与AI的无尽可能。这两天deepseek3.0上线,据说编程能力比肩Cl...
- 详解如何使用VSCode搭建TypeScript环境(适合小白)
-
搭建Javascript环境因为TypeScript不能直接在浏览器上运行。它需要编译器来编译并生成JavaScript文件。所以需要首先安装好javascript环境,可以参考文章:https://...
- 使用VSCode来书写你的Jupyter Notebooks
-
现在你可以在VScode里面来书写你的notebook了,使用起来十分的方便。下面来给大家演示一下环境的搭建。首先需要安装一个jupyter的包,使用下面的命令安装:pip3install-ih...
- 使用VSCode模板提高Vue开发效率(vscode开发vue插件)
-
安装VSCode安装Vetur和VueHelper插件,安装完成后需要重启VScode。在扩展插件搜索框中找到如下Vetur和VueHelper两个插件,注意看图标。添加Vue模板打...
- 干货!VsCode接入DeepSeek实现AI编程的5种主流插件详解
-
AI大模型对编程的影响非常之大,可以说首当其冲,Cursor等对话式编程工具渐渐渗透到开发者的工作中,作为AI编程的明星产品,Cursor虽然好用,但是贵啊,所以咱们得找平替,最好免费那种。俗话说,不...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- logstashinput (65)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)