MySQL 基操,勿 6
作者:互联网
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),用作事务控制 |
标签:count,基操,NULL,登录,数据库,MySQL,执行 来源: https://blog.csdn.net/Demo_Null/article/details/106994764