MySQL基础命令

给你一囗甜甜゛ 提交于 2019-12-19 19:06:40

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

CMD窗口登录MySQL:

基本命令:mysql -u用户名 -p    回车

                 Enter Password:*********

C:\Users\Administrator>mysql -uroot -p
Enter Password:*********

 

授权特定用户操作数据库(授权特定用户对数据库中的某一张表拥有的相应权限):

基本命令:mysql>grant  权限名称(或权限列表)  on  数据库名称.数据表名称  to  用户名@localhost(或127.0.0.1)  identified  by 密码;

mysql>grant  select,delete,update on test.students to tom@localhost identified by '123456'; 

--授予所有权限给予用户tom
mysql>grant  all on test.students to tom@localhost identified by '123456'; 

收回特定用户对数据库的操作权限:

命令:revoke  操作名称  on  库名.表名  from  用户名@主机IP地址;

mysql> revoke select on test.students from tom@localhost;
Query OK, 0 rows affected (0.00 sec)

--收回所有的数据库操作权限
mysql> revoke all on test.students from tom@localhost;

 

查看数据库编码格式:

命令:show variables like 'character_set_database';

mysql> show variables like 'character_set_database';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| character_set_database | utf8  |
+------------------------+-------+
1 row in set (0.00 sec)

拓展查看数据库的所有相关编码

命令:show  variables like  ‘%character%’;

mysql> show variables like '%character%';
+--------------------------+------------------------------------+
| Variable_name            | Value                              |
+--------------------------+------------------------------------+
| character_set_client     | utf8                               |
| character_set_connection | utf8                               |
| character_set_database   | utf8                               |
| character_set_filesystem | binary                             |
| character_set_results    | utf8                               |
| character_set_server     | utf8                               |
| character_set_system     | utf8                               |
| character_sets_dir       | C:\NativeApp\MySQL\share\charsets\ |
+--------------------------+------------------------------------+
8 rows in set (0.00 sec)

 

修改数据库的编码格式:

命令:alter database 数据库名称  character set  utf8;

mysql> alter database test character set gbk;
Query OK, 1 row affected (0.00 sec)

​
mysql> show variables like 'character_set_database';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| character_set_database | gbk   |
+------------------------+-------+
1 row in set (0.00 sec)

​

 

查看数据表的编码格式:

命令:mysql> show create table <表名>;

mysql> show create table students;
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                                                                                                                    |
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| students | CREATE TABLE `students` (
  `id` int(11) NOT NULL,
  `name` varchar(10) NOT NULL,
  `sex` char(4) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

修改数据表格编码格式:

命令:mysql>alter table <表名> character set utf8;

mysql> alter table students character set gbk;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

修改字段编码格式

mysql>alter table <表名> change <字段名> <字段名> <类型> character set utf8;
mysql>alter table user change username username varchar(20) character set utf8 not null;

添加外键

mysql>alter table tb_product add constraint fk_1 foreign key(factoryid) references tb_factory(factoryid);
mysql>alter table <表名> add constraint <外键名> foreign key<字段名> REFERENCES <外表表名><字段名>;

删除外键

mysql>alter table tb_people drop foreign key fk_1;
mysql>alter table <表名> drop foreign key <外键名>;

修改数据表中的字段类型:

命令:alter table  <表名> modify  column  列名  类型;

mysql> alter table students modify column name varchar(30);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

 

删除用户:

命令:drop user tom@localhost;

mysql> drop user tom@localhost;
Query OK, 0 rows affected (0.00 sec)


--删除用户后,重新登录数据库时出现如下错误
C:\Users\Administrator>mysql -utom -p
Enter password: ******
ERROR 1045 (28000): Access denied for user 'tom'@'localhost' (using password: YES)

 

创建一个新用户完整步骤:

(1)、创建一个用户,命令:mysql>create  user  tom;

mysql> create user tom;
Query OK, 0 rows affected (0.03 sec)

(2)、进入mysql库,为新创建的新用户配置相关信息;

mysql> use mysql;
Database changed

--在dos窗口中查询出数据库有哪些用户的命令(格式化查询出的结果)
--select * from mysql.user \G    (切记:后面没有 分号 结尾)
--更新mysql.user表中新用户tom的密码;
mysql> update user set Password=PASSWORD('123456') where user='tom';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0


--题外话:我们以新用户的的身份登录到localhost上时,会发现新用户能操作的数据库很少。
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

(3)、为新用户授予相应权限;

--命令:grant 权限列表 on 库名.表名 to 用户名@主机名 identified by 用户密码;
mysql> grant select on test.students to tom@localhost identified by '123456';
Query OK, 0 rows affected (0.00 sec)

--此时以新用户登录数据库结果如下:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.00 sec)

--可以看到:得到授权的新用户可以查询被授权的test库。

--授予更多权限
mysql> grant insert,delete,update on test.students to tom@localhost identified by '123456';
Query OK, 0 rows affected (0.00 sec)

附:mysql权限结构图:

 

修改表命令:

RENAME TABLE 原名 TO 新名;

ALTER TABLE 原名 RENAME 新名;

ALTER TABLE 原名 RENAME TO 新名;

修改表名:mysql>alter table 原表名 rename to 新表名;

修改列:mysql>alter table 表名 change  原列名  新列名  新列名的数据类型;

增加列:mysql>alter table 表名  add 新列名  新列名的数据类型;

删除列:mysql>alter table  表名  drop column  列名;

删除表:drop table 表名;

拓展知识:

MySQL常用的存储引擎为MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。 

MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。 

InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会
占用更多的磁盘空间以保留数据和索引。 

MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它
的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。 

MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同。MERGE表本身没有数据,对MERGE类型的表进行查询、
更新、删除的操作,就是对内部的MyISAM表进行的。 

 

新增数据:

命令:insert into 表名  列名  select  源列名  from  源表名;

          insert into 表名  (列名1,列名2)  select  源列名1,源列名2  from  源表名;

例如:insert into tb_user_bak(name,sex,age) select name,sex,age from tb_user;

 

修改MySQL客户端显示数据的编码:

命令:set names gbk;

mysql>SET NAMES gbk; -- 客户端以GBK的编码形式呈现数据

 

查看数据库的一些相关命令:

mysql> SELECT VERSION();    # 显示mysql版本,相当于登录数据库之前输入mysql -V
+-------------------------+
| VERSION()               |
+-------------------------+
| 5.5.35-0ubuntu0.12.04.2 |
+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT USER();       #   显示当前用户
+----------------+
| USER()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT NOW();        # 显示系统时间
+---------------------+
| NOW()               |
+---------------------+
| 2015-04-05 21:02:31 |
+---------------------+
1 row in set (0.00 sec)

mysql>                      # 在Linux的mysql中也可以使用Ctrl+L清屏

mysql> SELECT DATABASE();   #查看当前使用的数据库
+------------+
| DATABASE() |
+------------+
| test       |
+------------+
1 row in set (0.00 sec)

 

创建数据库:

命令:

-- 说明:花括号表示必选项,竖线表示多选一,方括号表示可选

CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] character_name;

mysql> CREATE DATABASE t1;
Query OK, 1 row affected (0.00 sec)

我们可以使用source命令运行sql脚本。登录mysql数据库:

命令:source 数据库脚本名;

查看创建数据库使用的命令:

命令:SHOW CREATE DATABASE 数据库名;

mysql> SHOW CREATE DATABASE t1; # 查看创建数据库使用的命令
+----------+-------------------------------------------------------------+
| Database | Create Database                                             |
+----------+-------------------------------------------------------------+
| t1       | CREATE DATABASE `t1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------+
1 row in set (0.00 sec)

修改数据库:

命令:ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] character_name;

mysql>ALTER DATABASE t2 CHARACTER SET=UTF8;

 

拓展:自动编号的字段必须是主键。

AUTO_INCREMENT该字段要么是整数,要么小数位数为0,且必须和主键组合使用,默认情况下初始值为1,增量为1.——保证记录的唯一性。
主键约束(PRIMARY KEY): 
每张表只能有一个主键,能够保证记录的唯一性,主键自动为NOT NULL,并自动创建索引。 
主键我们可以写成KEY或者PRIMARY KEY。
 

 

MySQL数据类型:

数据类型决定了数据的存储格式,代表了不同的信息类型。

1.整型 

这里写图片描述

2.浮点型 (项目开发中以float居多 )

这里写图片描述
3.日期型 

这里写图片描述

项目开发中该类型用得并不多,因为涉及到时区的问题,多用数字表示。 
4.字符型 

这里写图片描述

VARCHAR,TEXT,DATE,TIME,ENUM等类型的数据也需要单引号修饰,而INT,FLOAT,DOUBLE等则不需要。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!