MySQL入门操作:数据库管理、表管理(增、删、改、查等)

1、数据库管理

(1)连接/断开数据库

[root@zjx-mysql ~]#mysql -u root -p (-h 127.0.0.1 -P 3306)

Enter password:******

此时已连接上数据库,这将为您提供 mysql> 命令提示符,您可以在其中执行任何 SQL 命令

可以随时在 mysql> 提示符下使用 exit 命令断开与 MySQL 数据库的连接

mysql> exit
Bye

(2)创建/删除数据库

需要特殊权限才能创建或删除 MySQL 数据库。因此,假设您有权访问 root 用户,则可以使用 mysqladmin 二进制文件创建任何数据库。

创建名为 TEST 的数据库的简单示例:

[root@zjx-mysql ~]# mysqladmin -u root -p create TEST
Enter password:

...........

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| TEST               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |

当然,也可以连接上数据库之后在mysql> 命令提示符下进行创建和删除

mysql> create database TEST02;
Query OK, 1 row affected (0.04 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| TEST               |
| TEST02             |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

删除以上创建的数据库的示例 :

mysql> drop database TEST02;
Query OK, 0 rows affected (0.02 sec)

[root@zjx-mysql ~]# mysqladmin -u root -p drop TEST
Enter password: 
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

这将给你一个警告,它将确认你是否真的要删除这个数据库。

Do you really want to drop the 'TEST' database [y/N] y
Database "TEST" dropped
[root@zjx-mysql ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.35 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> 
 

(3)显示/选择数据库

显示所有数据库及选择使用名为 TEST的数据库的示例 :

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| TEST               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use TEST;
Database changed
mysql> 

现在已经选择了 TEST数据库,所有后续操作都将在 TUTORIALS 数据库上执行。

注意:所有数据库名称、表名、表字段名称均区分大小写。因此,在发出任何 SQL 命令时,您必须使用正确的名称。

2、表管理

(1)创建/删除表

表创建命令需要以下详细信息:表的名称、字段的名称、每个字段的定义

创建MySQL表的通用SQL语法 : CREATE TABLE table_name (column_name column_type);
  TEST  数据库中创建下表的 示例

mysql> use TEST;
Database changed
mysql> create table tests_tbl(
    ->    test_id INT NOT NULL AUTO_INCREMENT,
    ->    test_title VARCHAR(100) NOT NULL,
    ->    test_author VARCHAR(40) NOT NULL,
    ->    submission_date DATE,
    ->    PRIMARY KEY ( test_id )
    -> );
Query OK, 0 rows affected (0.33 sec)

mysql> 

注:正在使用字段属性  NOT NULL,因为我们不希望此字段为 NULL。因此,如果用户尝试创建具有 NULL 值的记录,则 MySQL 将引发错误。
字段属性  AUTO_INCREMENT 告诉 MySQL 继续将下一个可用数字添加到 id 字段。关键字  PRIMARY KEY 用于将列定义为主键。您可以使用逗号分隔的多个列来定义主键。
MySQL不会终止命令,直到您在SQL命令的末尾给出分号(;)。
查看表的结构的通用命令: desc table_name;
示例:
mysql> desc tests_tbl;
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| test_id         | int          | NO   | PRI | NULL    | auto_increment |
| test_title      | varchar(100) | NO   |     | NULL    |                |
| test_author     | varchar(40)  | NO   |     | NULL    |                |
| submission_date | date         | YES  |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
 
删除MySQL表的通用SQL语法 : DROP TABLE table_name ;
以下是删除 tests_tbl 的示例 :
mysql> DROP TABLE tests_tbl;
Query OK, 0 rows affected (0.05 sec)
mysql>

(2)插入/选择查询

用于将数据插入MySQL表中使用INSERT INTO命令,通用SQL语法:

INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
将在表中创建 2 条记录 tests_tbl 的示例:

mysql> INSERT INTO tests_tbl
    -> (test_title, test_author, submission_date)
    -> VALUES
    -> ("Learn MYSQL", "John", NOW());
Query OK, 1 row affected, 1 warning (0.03 sec)

mysql> INSERT INTO tests_tbl
    -> (test_title, test_author, submission_date)
    -> VALUES
    -> ("Learn JAVA", "Bob", NOW());
Query OK, 1 row affected, 1 warning (0.02 sec)

mysql> 

注:在上面的示例中,我们没有提供test_id,因为在创建表时,我们为此字段提供了AUTO_INCREMENT选项。因此,MySQL负责自动插入这些ID。这里, NOW()  是一个 MySQL 函数,它返回当前日期和时间。
选择查询用于从MySQL表中获取数据,使用SELECT命令的通用SQL语法,:
SELECT field1, field2,...fieldN
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
注:
您可以在单个 SELECT 命令中获取一个或多个字段。
您可以指定星号 (*) 来代替字段。在这种情况下,SELECT 将返回所有字段。
您可以使用 WHERE 子句指定任何条件。
您可以使用  OFFSET 指定偏移量,SELECT 将从该偏移量开始返回记录。默认情况下,偏移量从零开始。
您可以使用  LIMIT 属性限制返回次数。
操作示例:

mysql> SELECT * from tests_tbl;
+---------+-------------+-------------+-----------------+
| test_id | test_title  | test_author | submission_date |
+---------+-------------+-------------+-----------------+
|       1 | Learn MYSQL | John        | 2023-12-03      |
|       2 | Learn JAVA  | Bob         | 2023-12-03      |
+---------+-------------+-------------+-----------------+
2 rows in set (0.00 sec)

mysql> SELECT test_title,test_author from tests_tbl WHERE test_id=2;
+------------+-------------+
| test_title | test_author |
+------------+-------------+
| Learn JAVA | Bob         |
+------------+-------------+
1 row in set (0.00 sec)

mysql> 

当然您也可以将 LIKE 子句与 WHERE 子句一起使用,可使用 LIKE 子句代替要签名的等号。当 LIKE 与 % 符号一起使用时,它将像元字符搜索一样工作。可以使用 AND 或 OR 运算符指定多个条件。

将返回 tests_tbl 表中作者姓名以 ohn 结尾的所有记录的示例:

mysql> SELECT * from tests_tbl WHERE test_author LIKE '%ohn';
+---------+-------------+-------------+-----------------+
| test_id | test_title  | test_author | submission_date |
+---------+-------------+-------------+-----------------+
|       1 | Learn MYSQL | John        | 2023-12-03      |
+---------+-------------+-------------+-----------------+
1 row in set (0.00 sec)

mysql> 
 

(3)更新/删除查询

更新UPDATE

用于修改更新MySQL表中的数据,通用的SQL语法, :

UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]

您可以完全更新一个或多个字段。您可以使用 WHERE 子句指定任何条件。您可以一次更新单个表中的值。

操作示例:

mysql> UPDATE tests_tbl SET test_title = 'Learn C++' WHERE test_id=2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from tests_tbl;
+---------+-------------+-------------+-----------------+
| test_id | test_title  | test_author | submission_date |
+---------+-------------+-------------+-----------------+
|       1 | Learn MYSQL | John        | 2023-12-03      |
|       2 | Learn C++   | Bob         | 2023-12-03      |
+---------+-------------+-------------+-----------------+
2 rows in set (0.00 sec)

mysql> 

删除DELETE

DELETE 命令用于从 MySQL 表中删除数据,通用的 SQL 语法:

DELETE FROM table_name [WHERE Clause]

您可以使用 WHERE 子句指定任何条件。您可以一次删除单个表中的记录。

操作示例:

mysql> INSERT INTO tests_tbl (test_title, test_author, submission_date) VALUES ("Learn JAVA", "Marry", NOW());
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> select * from tests_tbl;
+---------+-------------+-------------+-----------------+
| test_id | test_title  | test_author | submission_date |
+---------+-------------+-------------+-----------------+
|       1 | Learn MYSQL | John        | 2023-12-03      |
|       2 | Learn C++   | Bob         | 2023-12-03      |
|       3 | Learn JAVA  | Marry       | 2023-12-03      |
+---------+-------------+-------------+-----------------+
3 rows in set (0.00 sec)
mysql> DELETE from tests_tbl WHERE test_id=3;
Query OK, 1 row affected (0.02 sec)

mysql> select * from tests_tbl;
+---------+-------------+-------------+-----------------+
| test_id | test_title  | test_author | submission_date |
+---------+-------------+-------------+-----------------+
|       1 | Learn MYSQL | John        | 2023-12-03      |
|       2 | Learn C++   | Bob         | 2023-12-03      |
+---------+-------------+-------------+-----------------+
2 rows in set (0.00 sec)

如果未指定 WHERE 子句,则将从给定的 MySQL 表中删除所有记录。

mysql> DELETE from tests_tbl ;
Query OK, 2 rows affected (0.02 sec)

mysql> select * from tests_tbl;
Empty set (0.00 sec)

mysql> INSERT INTO tests_tbl (test_title, test_author, submission_date) VALUES ("Learn MYSQL", "John", NOW());
Query OK, 1 row affected, 1 warning (0.07 sec)

mysql> INSERT INTO tests_tbl (test_title, test_author, submission_date) VALUES ("Learn JAVA", "Bob", NOW());
Query OK, 1 row affected, 1 warning (0.03 sec)

mysql> select * from tests_tbl;
+---------+-------------+-------------+-----------------+
| test_id | test_title  | test_author | submission_date |
+---------+-------------+-------------+-----------------+
|       4 | Learn MYSQL | John        | 2023-12-03      |
|       5 | Learn JAVA  | Bob         | 2023-12-03      |
+---------+-------------+-------------+-----------------+
2 rows in set (0.00 sec)

mysql> 

(4)结果排序

排序ORDER BY

ORDER BY 子句用来对结果集进行排序,该子句命名要排序的列。语法如下:

SELECT field1, field2,...fieldN table_name1, table_name2...

ORDER BY field1, [field2...] [ASC [DESC]]

       如果列出任何字段,则可以对返回的结果进行排序。

       您可以对多个字段的结果进行排序。

       您可以使用关键字 ASC 或 DESC 按升序或降序获取结果。默认情况下,它是升序。

       您可以使用 WHERE...LIKE子句以通常的方式放置条件。

mysql> select * from tests_tbl ORDER BY test_author ASC;
+---------+-------------+-------------+-----------------+
| test_id | test_title  | test_author | submission_date |
+---------+-------------+-------------+-----------------+
|       5 | Learn JAVA  | Bob         | 2023-12-03      |
|       4 | Learn MYSQL | John        | 2023-12-03      |
+---------+-------------+-------------+-----------------+
2 rows in set (0.00 sec)
(验证按升序列出的所有作者姓名)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值