MySQL 入门教程:全网最全,MySQL 增删改查高级命令硬核总结_数据库增删改查常见错误code

+ [1.2、连接到远程主机上的 MySQL](#12_MySQL_28)

前言

MySQL 是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。MySQL 是开放源代码的,因此任何人都可以在 General Public License 的许可下下载并根据个性化的需要对其进行修改。MySQL 因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL 是管理内容最好的选择。
在这里插入图片描述


声明:本文由作者“白鹿第一帅”于 CSDN 社区原创首发,未经作者本人授权,禁止转载!爬虫、复制至第三方平台属于严重违法行为,侵权必究。亲爱的读者,如果你在第三方平台看到本声明,说明本文内容已被窃取,内容可能残缺不全,强烈建议您移步“白鹿第一帅” CSDN 博客查看原文,并在 CSDN 平台私信联系作者对该第三方违规平台举报反馈,感谢您对于原创和知识产权保护做出的贡献!


文章作者白鹿第一帅作者主页https://blog.csdn.net/qq_22695001,未经授权,严禁转载,侵权必究!

前文回顾:《MySQL 入门教程:初学者一学就会,零基础 MySQL 安装及增删改查入门》

一、连接到 MySQL 数据库

连接到 MySQL 数据库,基本形式如下:

mysql -h主机地址 -u用户名 -p用户密码

1.1、连接到本机上的 MySQL

首先打开 DOS 窗口,然后进入目录 mysql\bin,再键入命令 mysql -u root -p,回车后提示你输密码。注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。

如果刚安装好 MySQL,超级用户 root 是没有密码的,故直接回车即可进入到 MySQL 中了,MySQL 的提示符如下:

mysql>

1.2、连接到远程主机上的 MySQL

假设远程主机的 IP 为:110.110.110.110,用户名为 root,密码为 abcd123,则输入如下命令:

mysql -h110.110.110.110 -u root -pabcd123

注意:u 与 root 之间可以不用加空格,其它也一样。

二、退出 MySQL 命令

退出 MySQL,实现命令如下:

exit

三、修改 MySQL 密码

修改 MySQL 密码,基本形式如下:

mysqladmin -u用户名 -p旧密码 password 新密码

3.1、先给 root 用户加个密码 ab12

首先在 DOS 下进入目录 mysql\bin,然后输入如下命令:

mysqladmin -u root password ab12

注意:因为开始时 root 没有密码,所以 -p 旧密码 一项就可以省略了。

3.2、再将 root 用户的密码改为 djg345

mysqladmin -u root -pab12 password djg345

四、增加新用户

注意:和上面不同,下面的因为是 MySQL 环境中的命令,所以后面都带一个分号作为命令结束符

增加新用户,基本形式如下:

grant select on 数据库.\* to 用户名@登录主机 identified by “密码”;

4.1、增加一个可以在任何主机上登录用户 test1,密码为 abc,并对所有数据库有查询、插入、修改、删除的权限

首先用 root 用户连入MySQL,然后键入以下命令:

grant select,insert,update,delete on \*.\* to [email=test1@”%]test1@”%[/email]” Identified by “abc”;

注意:增加的用户是十分危险的,你想如某个人知道 test1 的密码,那么他就可以在 internet 上的任何一台电脑上登录你的 MySQL 数据库并对你的数据可以为所欲为了,解决办法见 4.2。

4.2、增加一个只可以在 localhost 上登录用户 test2,密码为 abc,并可以对数据库 mydb 进行查询、插入、修改、删除的操作

(localhost 指本地主机,即 MySQL 数据库所在的那台主机),这样用户即使用知道 test2 的密码,他也无法从 internet 上直接访问数据库,只能通过 MySQL 主机上的 web 页来访问了。

grant select,insert,update,delete on mydb.\* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;

如果你不想 test2 有密码,可以再打一个命令将密码消掉,实现命令如下:

grant select,insert,update,delete on mydb.\* to [email=test2@localhost]test2@localhost[/email] identified by “”;

五、创建新的数据库

创建数据库之前要先连接 MySQL 服务器,基本形式如下:

create database <数据库名>;

例如:创建一个名为 xhkdb 的数据库,实现命令如下:

mysql> create database xhkdb;

例如:创建数据库并分配用户,实现命令如下:

CREATE DATABASE 数据库名;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.\* TO 数据库名@localhost IDENTIFIED BY '密码';
SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASSWORD('密码');

依次执行 3 个命令完成数据库创建,在这里中文 “密码”和“数据库”是户自己需要设置的。

六、显示存在的数据库与编码设置

显示存在的数据库,实现命令如下(注意:最后有个 s):

show databases;

为了不再显示的时候乱码,要修改数据库默认编码,我们以 GBK 编码页面为例进行说明:

  • 修改 MySQL 的配置文件:my.ini 里面修改 default-character-set=gbk
  • 代码运行时修改:

①Java 代码:

jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk;

②PHP 代码:

header("Content-Type:text/html;charset=gb2312");

③C 语言代码:

int mysql_set_character_set( MYSQL \* mysql, char \* csname);

该函数用于为当前连接设置默认的字符集。字符串 csname 指定了1个有效的字符集名称。连接校对成为字符集的默认校对。该函数的工作方式与 SET NAMES 语句类似,但它还能设置mysql- > charset的值,从而影响了由mysql_real_escape_string() 设置的字符集。

七、删除数据库

删除数据库,基本形式如下:

drop database <数据库名>;

例如:删除名为 xhkdb 的数据库,实现命令如下:

mysql> drop database xhkdb;

例如:删除一个已经确定存在的数据库 drop_database,实现命令如下:

mysql> drop database drop_database;
Query OK, 0 rows affected (0.00 sec)

例如:删除一个不确定存在的数据库,实现命令如下:

mysql> drop database drop_database;
ERROR 1008 (HY000): Can't drop database 'drop_database'; database doesn't exist	//发生错误,不能删除'drop\_database'数据库,该数据库不存在。
mysql> drop database if exists drop_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)	//产生一个警告说明此数据库不存在
mysql> create database drop_database;
Query OK, 1 row affected (0.00 sec)
mysql> drop database if exists drop_database;	//if exists 判断数据库是否存在,不存在也不产生错误
Query OK, 0 rows affected (0.00 sec)

八、连接数据库

连接数据库,基本形式如下:

use <数据库名>;

例如:如果 xhkdb 数据库存在,尝试存取它,实现代码如下:

mysql> use xhkdb;

这个时候屏幕会出现如下提示:

Database changed

use 语句可以通告 MySQL 把 db_name 数据库作为默认(当前)数据库使用,用于后续语句。该数据库保持为默认数据库,直到语段的结尾,或者直到发布一个不同的 USE 语句:

mysql> USE db1;
mysql> SELECT COUNT(\*) FROM mytable;   # selects from db1.mytable
mysql> USE db2;
mysql> SELECT COUNT(\*) FROM mytable;   # selects from db2.mytable

使用 USE 语句为一个特定的当前的数据库做标记,不会阻碍您访问其它数据库中的表。下面的例子可以从 db1 数据库访问作者表,并从 db2 数据库访问编辑表,命令如下:

mysql> USE db1;
mysql> SELECT author_name,editor_name FROM author,db2.editor
-> WHERE author.editor_id = db2.editor.editor_id;

可能有些同学会有疑问,连接以后怎么退出,其实不用退出来,use 数据库后,使用 show databases 就能查询所有数据库,如果想跳到其他数据库,用 use 其他数据库名字 就可以了。

九、查看当前选择的数据库

查看当前选择的数据库,实现命令如下:

mysql> select database();

MySQL 中 SELECT 命令类似于其他编程语言里的 print 或者 write,你可以用它来显示一个字符串、数字、数学表达式的结果等等。那么我们如何使用 MySQL 中 SELECT命令的特殊功能?

9.1、查看显示 MySQL 的版本

我们可以使用 select 命令查看显示 MySQL 的版本,实现命令如下:

mysql> select version(); 
+-----------------------+ 
| version()             | 
+-----------------------+ 
| 6.0.4-alpha-community | 
+-----------------------+ 
1 row in set (0.02 sec) 

9.2、查看显示当前时间

我们可以使用 select 命令查看显示当前时间,实现命令如下:

mysql> select now(); 
+---------------------+ 
| now()               | 
+---------------------+ 
| 2009-09-15 22:35:32 | 
+---------------------+ 
1 row in set (0.04 sec) 

9.3、查看显示当前年月日

我们可以使用 select 命令查看显示当前年月日,实现命令如下:

SELECT DAYOFMONTH(CURRENT\_DATE); 
+--------------------------+ 
| DAYOFMONTH(CURRENT\_DATE) | 
+--------------------------+ 
|                       15 | 
+--------------------------+ 
1 row in set (0.01 sec) 

SELECT MONTH(CURRENT\_DATE); 
+---------------------+ 
| MONTH(CURRENT\_DATE) | 
+---------------------+ 
|                   1 | 
+---------------------+ 
1 row in set (0.00 sec) 

SELECT YEAR(CURRENT\_DATE); 
+--------------------+ 
| YEAR(CURRENT\_DATE) | 
+--------------------+ 
|               2020 | 
+--------------------+ 
1 row in set (0.00 sec) 

9.4、查看显示字符串

我们可以使用 select 命令查看显示字符串,实现命令如下:

mysql> SELECT "welecome to my blog!"; 
+----------------------+ 
| welecome to my blog! | 
+----------------------+ 
| welecome to my blog! | 
+----------------------+ 
1 row in set (0.00 sec) 

9.5、当计算器用

我们可以使用 select 命令当计算器用,实现命令如下:

select ((4 \* 4) / 10 ) + 25; 
+----------------------+ 
| ((4 \* 4) / 10 ) + 25 | 
+----------------------+ 
|                26.60 | 
+----------------------+ 
1 row in set (0.00 sec) 

9.6、串接字符串

我们可以使用 select 命令串接字符串,实现命令如下:

select CONCAT(f_name, " ", l_name) AS Name from employee_data where title = 'Marketing Executive'; 
+---------------+ 
| Name          | 
+---------------+ 
| Monica Sehgal | 
| Hal Simlai    | 
| Joseph Irvine | 
+---------------+ 
3 rows in set (0.00 sec) 

注意:这里用到 CONCAT() 函数,用来把字符串串接起来。另外,我们还用到以前学到的 AS 给结果列 'CONCAT(f_name, " ", l_name)' 起了个列别名。

十、创建数据表

创建数据表,基本形式如下:

create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);

例如:建立一个名为 MyClass 的表,具体如下表所示:

字段名数字类型数据宽度是否可以为空是否主键自动增加默认值
idint4primary keyauto_increment0
namechar20
sexint4
degreedouble16

实现命令如下:

mysql> create table MyClass(

> id int(4) not null primary key auto\_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));

十一、查看表的字段信息

查看表的字段信息,基本形式如下:

mysql> describe table_name;

十二、删除数据表

删除数据表,基本形式如下:

drop table <表名>;

例如:删除表名为 MyClass 的表,实现命令如下:

mysql> drop table MyClass;

注意:DROP TABLE 用于取消一个或多个表。您必须有每个表的 DROP 权限。所有的表数据和表定义会被取消,所以使用本语句要小心!

注意:

  • 对于一个带分区的表,DROP TABLE 会永久性地取消表定义,取消各分区,并取消储存在这些分区中的所有数据。DROP TABLE 还会取消与被取消的表有关联的分区定义(.par)文件。
  • 对与不存在的表,使用 IF EXISTS 用于防止错误发生。当使用 IF EXISTS 时,对于每个不存在的表,会生成一个NOTE。
  • RESTRICT 和 CASCADE 可以使分区更容易。目前,RESTRICT 和 CASCADE 不起作用。

十三、在表中插入数据

在表中插入数据,基本形式如下:

insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);

说明:其中 [] 内的内容是可选的,当向表中所有列插入数据时,并且插如的数据值和表中列的定义顺序完全相同时,可以缺省[]。

例如:往表 MyClass 中所有列插入二条的记录,这二条记录表示:编号为 1 的名为 Tom 的成绩为 96.45,编号为 2 的名为 Joan 的成绩为 82.99,编号为 3 的名为 Wang 的成绩为 96.5,实现命令如下:

mysql> insert into MyClass values(1,'Tom',1,96.45),(2,'Joan',1,82.99), (3,'Wang', 0,96.59);

按回车键确认后若提示 Query Ok, 1 row affected (0.05 sec) 表示数据插入成功。若插入失败请检查是否已选择需要操作的数据库。

13.1、设置某些属性的值为空

在插入的元组中,设置某些属性的值为空,基本形式如下:

insert into 表名 values(值1,值2,NULL,值3,…);

表明插入的记录的第三列的取值为 NULL。

13.2、为指定列插入数据

有时我们要为指定列插入数据,或者不按照列的顺序进行插入,则表名后必须制定要插入的列名,基本形式如下:

insert into student (Sno,Sname, Ssex) values(‘95007’,’孙丽华’, ‘女’);

这时 student 中没有插入具体值的属性的取值为空,默认 NULL。

十四、查询表中的数据

14.1、查询所有行数据

查询所有行数据,基本形式如下:

select <字段1,字段2,...> from < 表名 > where < 表达式 >;

例如:查看表 MyClass 中所有数据,实现命令如下:

 mysql> select \* from MyClass;

14.2、查询前几行数据(分页查询)

例如:查看表 MyClass 中前 2 行数据,实现命令如下:

mysql> select * from MyClass order by id limit 0,2;

说明:表的元组从 0 开始编号,limit 的格式为 limit a,b,表明从第 a 个元组开始显示,总共显示 b 个元组。

十五、删除表中数据

删除表中数据,基本形式如下:

delete from 表名 where 表达式;

说明:select 一般配合 where 使用,以查询更精确更复杂的数据。

最后

2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。

更多JVM面试整理:

、查询表中的数据

14.1、查询所有行数据

查询所有行数据,基本形式如下:

select <字段1,字段2,...> from < 表名 > where < 表达式 >;

例如:查看表 MyClass 中所有数据,实现命令如下:

 mysql> select \* from MyClass;

14.2、查询前几行数据(分页查询)

例如:查看表 MyClass 中前 2 行数据,实现命令如下:

mysql> select * from MyClass order by id limit 0,2;

说明:表的元组从 0 开始编号,limit 的格式为 limit a,b,表明从第 a 个元组开始显示,总共显示 b 个元组。

十五、删除表中数据

删除表中数据,基本形式如下:

delete from 表名 where 表达式;

说明:select 一般配合 where 使用,以查询更精确更复杂的数据。

最后

2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。

[外链图片转存中…(img-dzECs4qI-1714422155179)]

更多JVM面试整理:

[外链图片转存中…(img-4QF3Grm7-1714422155180)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值