1. MySQL 常用命令
1.1 常用命令行
-
mysql的启动与停止
- 启动MYSQL服务 net start mysql
- 停止MYSQL服务 net stop mysql
-
netstat –na | findstr 3306 查看被监听的端口 , findstr用于查找后面的端口是否存在
-
在命令行中登陆MYSQL控制台
- mysql –u root –p
-
切换连接数据库的语法 : use dbname
-
显示所有数据库 : show databases
-
显示数据库中的所有表 : show tables
-
显示某个表创建时的全部信息 : show create table table_name
-
查看表的具体属性信息及表中各字段的描述 desc table_name
-
备份一个数据库 mysqldump -uroot -p123456 数据库名 >E:\demo.sql
-
备份多个数据库 mysqldump --all-database > D:\all_database.sql -u root -p
-
数据库还原 source D:\all_database.sql
1.2 SQL语句
-
创建数据库指定字符编码 create database 数据库名 default character set utf8
-
数据库创建 : Create database db_name
-
删除数据库 Drop database db_name
-
建表
-
创建数据表的语法 : create table table_name (字段1 数据类型 , 字段2 数据类型);
-
create table mytable (id int (10) primary key auto_increment username char(20));
-
-
-
删表 : drop table table_name
-
添加数据 : Insert into 表名 [(字段1 , 字段2 , ….)] values (值1 , 值2 , ……),如果向表中的每个字段都插入一个值,那么前面 [ ] 括号内字段名可写也可不写
-
查询 :
- 查询所有数据 : select * from table_name
- 查询指定字段的数据 : select 字段1 , 字段2 from table_name
-
更新 update 表 set 字段名=? where id = ?
-
删除表中的信息 delete from 表名 where id=?
1.3 表结构的修改
(1)增加一个字段格式:
alter table table_name add column (字段名 字段类型); ----此方法带括号
(2)指定字段插入的位置:
alter table table_name add column 字段名 字段类型 after 某字段;
删除一个字段:
alter table table_name drop 字段名;
(3)修改字段名称/类型
alter table table_name change 旧字段名 新字段名 新字段的类型;
(4)改表的名字
alter table table_name rename to new_table_name;
(5)一次性清空表中的所有数据
truncate table table_name; 此方法也会使表中的取号器(ID)从1开始
查看数据库当前引擎
SHOW CREATE TABLE table_name;
修改数据库引擎
ALTER TABLE table_name ENGINE=MyISAM | InnoDB;
SQL语句运用实例:
--1 建users表
create table users (id int(10) primary key auto_increment,
name varchar(20) not null,
password varchar(20) not null,
address varchar(200)ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8;
--3. 向users表中插入数据,同时插入多条
insert into users (id,name,password,address) values
(1,'lyh1','1234',null),
(10,'lyh22','4321','湖北武汉'), (null,'lyh333','5678', '北京海淀');
2. where和having区别
where和having区别
- where和having都是为了完成数据的过滤,它们后面都是添加条件;
- where是在 group by之前完成过滤;
- having是在group by之后完成过滤
以上关键字的顺序不能变,严格遵守
以上语句的执行顺序:
from 将硬盘上的表文件加载到内存
where:将符合条件的数据筛选出来。生成一张新的临时表
group by :根据列中的数据种类,将当前临时表划分成若干个新的临时表
having : 可以过滤掉group by生成的不符合条件的临时表
select : 对当前临时表进行整列读取
order by : 对select生成的临时表,进行重新排序,生成新的临时表
limit : 对最终生成的临时表的数据行,进行截取
3. 事务
原子性:要么都成功,要么都失败
一致性:事务前后的数据完整性要一致。比如A本来有1000,给B转200,此时A剩下800,B多200,事务结束后两个加起来的数据要等于事务前的1000
持久性:事务一旦提交则不可逆转,被持久化到数据库中
隔离性:有多个用户在操作数据库时,数据库会为每个用户开启一个事务,不能被其他事务操作所干扰,但是隔离失败,会产生以下一些问题
脏读:指一个事务读取了另外一个事务未提交的数据。比如A在给B转钱的时候,这个事务还没提交,此时C也给B转但是A转B的事务还没提交,C读取的数据是A转B之前的数据
不可重复读:在一个事务中读取一张表,多次读取的数据不同。比如在生成一个转账后的表,刚要点生成表的时候,发现数据突然有变化,是因为有另一个人又转的钱进来
幻读:在一个事务内读取到了别的事务插进入的数据,导致前后不一致。一般是表后面多一行数据
4.windows10 完全卸载MySQL残留文件
- 先去卸载完MySQL
- 找到安装路径,删除mysql文件夹下的my.ini文件及所有数据;
- 删除MySQL文件:默认安装路径:C:\Program Files\MySQL
- 删除MySQL数据:默认路径:C:\ProgramData\MySQL(ProgramData文件夹是默认隐藏的,设置为显示后可见,或直接复制【C:\ProgramData\】地址到文件夹地址栏回车即可进入)
- 删除注册表中mysql文件;
- WIN+R,输入“regedit”,打开注册表编辑器;
- 删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL文件夹
- 删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL文件夹。
- 删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL的文件夹。
- (如果没有不用删除了)
5.MySQL设置时区
每次搭载数据库的虚拟机重启之后,MySQL数据库会把时区默认设置成系统时区;在外部JDBC链接不上,提示时区错误; 比如用idae连接数据库时就会报错没有设置时区
解决办法:
Win+R调出CMD窗口 , 分别键入以下命令
mysql -hlocalhost -uroot -p
show variables like '%time_zone'; //查看当前时区
set global time_zone ='+8:00';
flush privileges;
永久性:
如果安装在C盘的: 我们要进入 C:\ProgramData\MySQL\MySQL Server 5.7 此目录即可看到my.ini 此时你可以修改次配置啦!
这是一个隐藏目录
- 打开my.ini ,搜索 mysqld ,加入配置 default-time_zone=’+8:00’ 保存
- 关闭mysql服务: net stop mysql
- 开启mysql服务: net start mysql