MySQL基本操作

1.1 MySQL 服务

1.1.1 启动 / 关闭

图形化操作

在命令行中执行 services.msc,打开服务,在服务中找到 MySQL 服务,在左侧或者右击选项中对 MySQl服务进行操作
MySQL基本操作_第1张图片
MySQL基本操作_第2张图片
MySQL基本操作_第3张图片

命令行操作

打开命令行执行 net stop mysql 就可以停止 MySQL 服务,但是我这里提示服务名无效,这是因为我的服务名是 MySQL57 不是 MySQL。我就需要执行 net stop mysql57
MySQL基本操作_第4张图片
哈?又出错了!这次提示发生系统错误5,这是因为命令行不是以管理员身份打开的,我们已管理员身份打开命令行就 OK 了。
MySQL基本操作_第5张图片
MySQL基本操作_第6张图片
然后执行 net start mysql,就可以启动 MySQL 服务,同理此处的服务名也要和自己的对应,我就执行 net start mysql57。perfect,启动成功!
MySQL基本操作_第7张图片

1.1.2 登录

本地登录

打开命令行执行 mysql -u用户名 -p,然后输入密码就可以登录都本地 MySQL 了。
MySQL基本操作_第8张图片

远程登录

打开命令行执行 mysql -h 主机地址 -P 端口 -u用户名 -p,然后输入密码,就可以远程登录 MySQL。-h 是 host 指MySQL 所在的 IP 或域名; -P 是 port 指 MySQL 服务端口号,注意是大写的 P;-u 是 username 指登录 MySQL 服务的用户名;-p 是 password 指登录 MySQL 服务的密码,注意是小写的 p。

MySQL基本操作_第9张图片
哎!怎么报了个不允许连接 ERROR 1130 (HY000): Host '113.97.59.243' is not allowed to connect to this MySQL server。赶紧爬到服务器上,果然没有远程权限。
MySQL基本操作_第10张图片
好吧!给他安排上登录 MySQL 服务后执行 GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; 我执行的是 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; 意思就是允许任何 ip 远程登录并且是开放所有权限。再来远程登录一下看看,OK 远程登录成功。
MySQL基本操作_第11张图片
MySQL基本操作_第12张图片



1.2 常见命令

1.2.1 查看版本号

打开命令行执行 mysql --version,就可以查看当前安装 MySQL 数据库的版本号
MySQL基本操作_第13张图片
登录 MySQL 后可以执行 select version(); 来查看当前使用数据库版本号
MySQL基本操作_第14张图片


1.2.2 数据库操作

查询所有数据库

登录 MySQL 后执行 show databases; 就可以查询出该数据库中所有的库。注意:MySQL 语句后要加 ; 否则认为该语句未完结。
MySQL基本操作_第15张图片

使用数据库

登录 MySQL 后执行 use 数据库名 就可以使用该数据库。
MySQL基本操作_第16张图片

查看数据库中所有的表

使用某个数据库后,执行 show tables; 就可以查看当前使用的数据库中所有的表。
MySQL基本操作_第17张图片



1.3 MySQL 规范

1.3.1 语法规范

① 不区分大小写,但建议关键字大写,表名、列名小写
② 每条命令要用英文分号结尾
③ 每条命令根据需要,可以进行缩进或换行
④ 单行注释:# 注释文字 或者 -- 注释文字 ;多行注释:/* 注释文字 */


1.3.2 开发规范

建表规约

① 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint(1 表示是,0 表示否)。
② 表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。(MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免节外生枝)
③ 表名不使用复数名词。表名应该仅仅表示表里面的实体内容,不应该表示实体数量,对应于 DO 类名也是单数形式,符合表达习惯。
④ 禁用保留字,如 desc、range、match、delayed 等,请参考 MySQL 官方保留字。
⑤ 小数类型为 decimal,禁止使用 float 和 double。
⑥ 如果存储的字符串长度几乎相等,使用 char 定长字符串类型。
⑦ varchar 是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索引效率。
⑧ 单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

SQL语句规约

① 不要使用 count(列名)或 count(常量)来替代 count(*),count(*)是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。count(distinct col) 计算该列除 NULL 之外的不重复行数,注意 count(distinct col1, col2) 如果其中一列全为 NULL,那么即使另一列有不同的值,也返回为 0。
② 当某一列的值全是 NULL 时,count(col)的返回结果为 0,但 sum(col)的返回结果为NULL,因此使用 sum()时需注意 NPE 问题。
③ 使用 ISNULL()来判断是否为 NULL 值。
④ 代码中写分页查询逻辑时,若 count 为 0 应直接返回,避免执行后面的分页语句。
⑤ 不得使用外键与级联,一切外键概念必须在应用层解决。
⑥ 禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。
⑦ 数据订正(特别是删除或修改记录操作)时,要先 select,避免出现误删除,确认无误才能执行更新语句。
⑧ in 操作能避免则避免,若实在避免不了,需要仔细评估 in 后边的集合元素数量,控制在 1000 个之内。



1.4 SQL 语句分类

分类 说明
DDL 数据定义语言(Data Definition Language),用来操作数据库、表
DQL 数据查询语言(Data Query Language),用来查询表中数据
DML 数据操纵语言(Data Manipulation Language),用来增删改表中数据
DCL 数据控制语言(Data Control Language),用来控制数据库的访问权限以及创建用户
TCL 事务控制语言(Transaction Control Language),用作事务控制



关注公众号一起学习 Java 开发,跟大家分享我的学习成长过程

在这里插入图片描述

你可能感兴趣的:(MySQL)