MySQL基本操作

时间:2022-07-26
本文章向大家介绍MySQL基本操作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.1 MySQL 服务

1.1.1 启动 / 关闭

图形化操作

在命令行中执行 services.msc,打开服务,在服务中找到 MySQL 服务,在左侧或者右击选项中对 MySQl服务进行操作

命令行操作

打开命令行执行 net stop mysql 就可以停止 MySQL 服务,但是我这里提示服务名无效,这是因为我的服务名是 MySQL57 不是 MySQL。我就需要执行 net stop mysql57

哈?又出错了!这次提示发生系统错误5,这是因为命令行不是以管理员身份打开的,我们已管理员身份打开命令行就 OK 了。

然后执行 net start mysql,就可以启动 MySQL 服务,同理此处的服务名也要和自己的对应,我就执行 net start mysql57。perfect,启动成功!

1.1.2 登录

本地登录

打开命令行执行 mysql -u用户名 -p,然后输入密码就可以登录都本地 MySQL 了。

远程登录

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

哎!怎么报了个不允许连接 ERROR 1130 (HY000): Host '113.97.59.243' is not allowed to connect to this MySQL server。赶紧爬到服务器上,果然没有远程权限。

好吧!给他安排上登录 MySQL 服务后执行 GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; 我执行的是 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; 意思就是允许任何 ip 远程登录并且是开放所有权限。再来远程登录一下看看,OK 远程登录成功。

1.2 常见命令

1.2.1 查看版本号

打开命令行执行 mysql --version,就可以查看当前安装 MySQL 数据库的版本号

登录 MySQL 后可以执行 select version(); 来查看当前使用数据库版本号

1.2.2 数据库操作

查询所有数据库

登录 MySQL 后执行 show databases; 就可以查询出该数据库中所有的库。注意:MySQL 语句后要加 ; 否则认为该语句未完结。

使用数据库

登录 MySQL 后执行 use 数据库名 就可以使用该数据库。

查看数据库中所有的表

使用某个数据库后,执行 show tables; 就可以查看当前使用的数据库中所有的表。

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),用作事务控制