0.MySQL服务的启动和停止

  1. Windows下:
# 以管理员身份运行命令提示符输入如下命令

# 启动 MySQL 服务命令:
net start MySQL服务名
# 停止 MySQL 服务命令:
net stop MySQL服务名

1.连接数据库

格式:mysql -h 主机地址 -P 端口号 -u 用户名 -p用户密码

1.连接到本机上的MYSQL。

如果已经配置好环境变量,DOS窗口下键入命令mysql -u root -p,使用默认主机名localhost,默认端口号3306。回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码.如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>

2.连接到远程主机上的MYSQL。

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

# u与用户名之间可以不用加空格,h与后面的主机地址可以不用加空格
mysql -h110.110.110.110 -u root -pabcd123
3.退出MYSQL命令: exit (回车)

2.增加用户

3.操作数据库

3.1创建数据库

命令:create database <数据库名>

例1:建立一个名为xhkdb的数据库

mysql> create database xhkdb;

例2:创建数据库并分配用户
①CREATE DATABASE 数据库名;
②GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 用户名@localhost IDENTIFIED BY '密码';
③SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASSWORD('密码');
依次执行3个命令完成数据库创建。
注意:中文 “密码”和“数据库”是户自己需要设置的。

3.2显示数据库

命令:show databases; (注意:最后有个s)

3.3 删除数据库

命令:drop database <数据库名>;

例如:删除名为 xhkdb的数据库

mysql> drop database xhkdb;

例子1:删除一个已经确定存在的数据库

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

3.4 连接数据库

命令: use <数据库名>;

使用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 其他数据库名称 就可以了。

3.5查看当前选择的数据库
mysql> use text
Database changed
mysql>  select database();
+------------+
| database() |
+------------+
| text       |
+------------+
1 row in set (0.00 sec)

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

(1). 显示MYSQL的版本

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.15    |
+-----------+
1 row in set (0.00 sec)

(2). 显示当前时间

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2021-01-30 09:37:30 |
+---------------------+
1 row in set (0.00 sec)

(3). 显示年月日

mysql> select year(current_date);
+--------------------+
| year(current_date) |
+--------------------+
|               2021 |
+--------------------+
1 row in set (0.00 sec)

mysql> select month(current_date);
+---------------------+
| month(current_date) |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.00 sec)

mysql> select dayofmonth(current_date);
+--------------------------+
| dayofmonth(current_date) |
+--------------------------+
|                       30 |
+--------------------------+
1 row in set (0.00 sec)

(4).显示字符串

mysql> select "hello,world";
+-------------+
| hello,world |
+-------------+
| hello,world |
+-------------+
1 row in set (0.00 sec)

(5).当计算器用

mysql> select ((4 * 4) / 10 ) + 25;
+----------------------+
| ((4 * 4) / 10 ) + 25 |
+----------------------+
|              26.6000 |
+----------------------+
1 row in set (0.00 sec)

(6).串接字符串
(7). 查看数据库的创建信息

4.操作表

1.创建表

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

2.获取表结构

命令: desc 表名;,或者show columns from 表名;

使用MySQL数据库,根据desc 表名的结果,我们看到Key那一栏,可能会有4种值,即' ','PRI','UNI','MUL'。这些值的含义是什么呢?

3.删除表

命令:drop table <表名>

4.向表插入数据
5.查询表
  1. 查询所有行,使用命令: select <字段1,字段2,...> from < 表名 > where < 表达式 >
# 查看表member中所有数据,*表示所有字段
mysql> select * from member;
  1. 查询前几行数据
# 查看表member中前2行数据
mysql> select * from member order by id limit 0,2;
  1. 使用AS关键字给列名取别名
SELECT name AS "姓名",age AS "年龄"from student;
  1. 使用DISTINCT关键字去除重复行
SELECT DISTINCT name AS "姓名",age AS "年龄" from student;
  1. 结合where子句过滤查询:where子句紧跟随from子句
 SELECT name,age FROM student where age > 23;
6.删除表

命令:delete from 表名 where 表达式

7.修改表中的数据

语法:update 表名 set 字段=新值,… where 条件

# 将member表中id等于2的tel改为18370430889
mysql> update member set tel = '18370430889' where id = 2;
8.增加表字段

命令:alter table 表名 add字段 类型 其他;

  1. 加索引:mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
  2. 加主关键字的索引:mysql> alter table 表名 add primary key (字段名);
  3. 加唯一限制条件的索引:alter table 表名 add unique 索引名 (字段名);
  4. 删除某个索引:alter table 表名 drop index 索引名;
  5. 增加字段:ALTER TABLE table_name ADD field_name field_type;
  6. 修改原字段名称及类型:ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
  7. 修改字段类型:ALTER TABLE table_name MODIFY colum_name field_type new_type;
  8. 删除字段:ALTER TABLE table_name DROP field_name;
9.修改表名

命令:rename table 原表名 to 新表名;

10.查看表的创建信息

使用show create table 表名;命令。这行命令可以查看到创建表时使用的字符集信息。

11.导入数据

在MySQL客户端下导入SQL文件:

source  xxx.sql
12.排序

排序使用order by子句,其涉及到的两个重要关键字ASC和DESC,分别表示升序和降序。

  1. 单列排序,不指定ASC或者DESC的其中一个,默认是升序的。
# 例如对年龄降序
SELECT * from student ORDER BY age DESC;
  1. 多列排序:在对多个列进行排序的时候,排序的第一列有相同的列值,才会对第二列进行排序。
# 例如对姓名,年龄进行排序。姓名相同,按照年龄降序
SELECT * from student ORDER BY name, age DESC;
13.分页

MySQL中使用limit关键字实现分页。格式为LIMIT [位置偏移量,] 行数,不指定位置偏移量,会从表中的第一条记录开始,第一条记录的位置偏移量是0。

#  前2条记录
SELECT * from student LIMIT 0,2;

5.查看字符集和排序相关

  1. 查看字符集:show variables like 'character_%';

  2. 查看排序:show variables like 'collation_%';