mysql的初次使用
安装及环境变量配置
略
初次使用
-
以管理员身份打开cmd
-
启动MySQL服务
输入命令net start mysql80
启动服务器,只有启动了服务器,数据库才能正常使用。
//对版本号不同的MySQL需要的命令可能不同,可以在任务管理器查看自己的MySQL版本
-
进入MySQL
输入命令mysql -u root -p
弹出提示后输入密码进入MySQL
或者直接输入命令mysql -u root -p
进入MySQL,其中123为root密码,使用时以自己设置的密码为准
//安装MySQL时未设置密码的用户可通过mysql -u root
直接进入MySQL -
修改密码
·处于MySQL交互界面的用户
输入命令set password ='123'
设置或重置密码,其中123为所指定的新密码
·处于CMD交互界面的用户
输入命令mysqladmin -u root -p password 123
设置或重置密码,其中123为所指定的新密码
这种方式下需要输入老密码确认修改
-
退出MySQL交互界面
退出MySQL交互有exit
quit
/q
这几种命令,在作用上没有什么区别,可以依据个人习惯使用,下面举例一种情况
-
关闭MySQL服务*
输入命令net stop MySQL80
关闭MySQL服务,关闭服务后在进入MySQL服务需要重启服务,详见第一步
mysql基础操作
·使用show variables like 'version'
查看当前使用的MySQL的版本
·多行语句
在MySQL中以分号(;)作为语句结尾,所以一条语句可以分为多行输入,直到“ ; ”出现
如将上述版本查询多行输入,可以得到相同的效果
库的创建与管理
- 创建数据库
creat database 数据库名;
- 显示所有的数据库
show databases ;
- 删除指定的库
drop database 数据库名;
为了避免没有指定的数据库,在执行删除操作会报错,可将命令优化为
drop database if exists 数据库名;
- 数据库的连接
use 数据库名
- 数据库的备份
mysqldump -u 用户名 -p 数据库名 (表名) > 导出的文件地址
文件地址为绝对路径,下面的数据库恢复也是如此
其中只指定数据库名时,将备份整个数据库 , 当在数据库后接表名时,将只备份指定的表
- 数据库的恢复
mysqldump -u -u 用户名 -p 数据库名 < 导入的文件地址
当已经连接数据库时,可以使用下面的命令直接恢复到当前数据库
source 文件地址
表的创建与管理
- 数据表的基本概念
数据表是一种行与列数据的组合,也是数据库中最基本的组成单元,所有数据操作(增删查改)以及约束都要依赖于数据表而存在。而数据表可以理解为对显示或者业务抽象的结果。
使用表前需要先连接表所在的数据库通过use 数据库名
命令连接指定数据库
- 创建表
creat table 表名 ( 字段名1 字段数据类型, 字段名2 字段数据类型, 其他字段... )
-
复制表
create table 表2 select * from 表1;--表1数据将会全部复制到表2中
如果仅需复制表的字段可以使用命令:
create table 表3 like 表1; --表3将会拥有和表1相同的字段,但不会拥有具体的数据
-
查看指定表的所有字段属性
desc 表名;
-
删除表
drop table 表名;
-
查看库内的所有表
show tables;
-
修改表属性
·对表重命名alter table 表名 rename 新表名;
·添加字段
alter table 表名 add 字段名 字段数据类型;
由这种方式添加的字段默认添加到表末,如果需要指定字段的添加位置可以使用下面的命令:
alter table 表名 add 字段1 字段数据类型 after 字段2;--字段1将被添加到字段2后
alter table 表名 add 字段名 字段数据类型 first;--该字段将被添加到第一列
·删除字段
alter table 表名 drop 字段名 ;
·修改字段
alter table 表名 change 字段名 新字段名 字段数据类型;--可以用来重命名字段或更改字段属性
-
临时表
临时表的创建的普通的表创建类似,可以使用下面的命令可以创建临时表create temporary table 表名 ( 字段名1 字段数据类型, 字段名2 字段数据类型, 其他字段... );
临时表有如下特点:
1.临时表无法使用show tables
命令查看,但临时表可以进行一系列操作
2.仅在当前会话可见,退出MySQL交互界面后,创建的临时表都会消失
3.临时表也可以使用drop table 表名
命令删除
数据的创建与管理
- 向表中添加数据
insert into 表名 (列1,列2, ... ) values (值1,值2, ... );
每项值将分别对应每项列插入到表中,当存在列未指定时,该值为空(null)
如果向表中添加元素时,元素的每项值依照表的列名排列,可以不用指定列名: sql insert into 表名 values (值1,值2, ... );
-
数据的更新
update 表名 set 字段=值 [,字段=值] where 条件;
-
从表中删除数据
delete form 表名 where 删除条件;
-
数据的基础查询
select 查询列表 from 表名;
//查询列表可以是一个字段、常量、表达式、函数,也可以是多个
// 查询结果是一个虚拟表
// 当要查询表内的所有数据时可用select * from 表名
模糊查询:select 查询列表 from 表名 where 列名 like 条件 ;
例如
SELECT * FROM users WHERE userName LIKE '%三%'
会将字段userName中含字符“三”的记录全部找出
模糊查询中各个通配符的作用:
符号 | 作用 |
---|---|
% | 表示任意0个或多个字符。可匹配任意类型和长度的字符 |
_ | 表示任意单个字符 |
[ ] | 表示括号内所列字符中的一个 |
[^ ] | 表示不在括号所列之内的单个字符 |
数据的进阶查询
-
联合查询,使用union关键字将多个查询结果合并为一个,合并的是数据相同的行而不是列
语法:查询1 union (all) 查询2 union (all) ... ...
同时对两张表进行查询,如果用表1union表2,查询结果中表1 不会新增列,而是表2的查询结果会添加到表1
使用union进行联合查询,结果会去重复项
使用union all 进行联合查询,结果会保留重复项 -
连接查询
内连接查询( inner join)
语法:select 列名 from 表1 别名 inner join 表2 别名 on 表1.列名 = 表2.列名
组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集
左(外)连接查询(left join)
语法:select 列名 from 表1 别名 left join 表2 别名 on 表1.列名 = 表2.列名
左连接的全称是左外连接,是外连接中的一种。
通过该查询,表1的记录将会全部表示出来,而表2只会显示符合搜索条件的记录。表1记录不足的地方均为空(NULL)右(外)连接查询(right join)
语法:select 列名 from 表1 别名 right join 表2 别名 on 表1.列名 = 表2.列名
右连接的全称是右外连接,是外连接中的一种。
与左连接相反,通过该查询,表2的记录将会全部表示出来,而表1只会显示符合搜索条件的记录。表1记录不足的地方均为空(NULL) -
排序
语法:查询语句 order by 排序列表 (desc||asc)
1、 asc代表的是升序,可以省略; desc代表的是降序
2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段
3、order by子句在查询语句的最后面
-
使用正则表达式查询
正则表达式使用regexp(regular expression)关键字进行查询
语法:select 列名 from 表名 where 列名 regexp 表达式
示例:
查找name字段中含有字符“a”的所有数据:select name from student where name regexp 'a';
正则表达式与模糊查询类似,下面是regexp操作符中部分符号的作用
符号 | 描述 |
---|---|
^ | 查询以匹配字符串开头的所有数据(如查询以abc开头所有数据‘^abc’) |
$ | 查询以匹配字符串结尾的所有数据(如查询以ab结尾所有数据‘ab$’) |
* | 匹配前面的子表达式零次或多次。(如,zo* 能匹配 “z” 以及 “zoo”) |
+ | 匹配前面的子表达式一次或多次。(如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”) |
主键与索引
索引(index)用来来快速地寻找那些具有特定值的记录,通过索引可以减少MySQL执行查询时的速度,可以有多个索引,索引类似于书的目录
主键(primary key)主键是索引的一种,主要用来区分,所以只能有一个主键
- 添加主键
上面这种情况适用于表已经被创建。创建新表时也可以直接添加主键:alter table 表名 add primary key(列名);
也可以使用这种方式在新建表时添加主键:create table 表名( 字段名 字段数据类型 primary key, 其他字段... );
create table 表名( 字段名0 字段数据类型 , primary key(字段名0) 其他字段... );
- 联合主键
当仅有一个主键不能满足需求时,则需要将多个字段联合起来一起作为主键,这就是联合主键
添加联合主键的语法基本与添加单一主键类似
或者在建表时添加联合主键:alter table 表名 ADD PRIMARY KEY(列名1,列名2);
create table 表名( 字段名0 字段数据类型 , 字段名1 字段数据类型 , primary key(字段名0 ,字段名1) 其他字段... );
- 删除主键
alter table 表名 drop primary key;--删除主键或联合主键
- 添加索引
alter table 表名 add index(列名)
- 查看索引
show index from 表名;
- 删除索引
create table 表名 drop index 列名;