【MySQL新手入门系列二】:手把手教你入门MySQL - 数据库及数据表操作 ...

打印 上一主题 下一主题

主题 964|帖子 964|积分 2892

假如您是一位刚刚开始学习MySQL的新手,本文将为您提供一些实用的入门知识和技巧,资助您快速上手。
【MySQL新手入门系列一】:手把手教你入门MySQL
前面我们已经大抵讲了一下mysql的安装等介绍,本篇文章将以windows为例,介绍MySQL的数据库及数据表的操作(增删改查)。

  
一、概览

在MySQL安装完成后,接下来,我们就要创建数据库及创建数据表。
二、MySQL数据库操作

MySQL 安装好之后就可以进行数据库的相关操作,这时候,是没有我们自己使用的数据库的,以是我们得先新建一个我们自己的数据库。
2.1 创建数据库

语法:
  1. CREATE DATABASE [IF NOT EXISTS] <数据库名>
  2. [[DEFAULT] CHARACTER SET <字符集名>]
  3. [[DEFAULT] COLLATE <校对规则名>];
复制代码
语法阐明如下:
   1、<数据库名>:创建数据库的名称,不能以数字开头
2、IF NOT EXISTS:在创建数据库之前进行判定,当数据库不存在时,才会执行创建语句。
3、[DEFAULT] CHARACTER SET:指定命据库的字符集。目的是为了避免在数据库中存储的数据出现乱码的环境。
4、[DEFAULT] COLLATE:指定字符集的默认校对规则。
  我们来举个例子,如今有个书店,要存书书相关的信息,创建一个新的数据库,定名为 “bookstore”:
  1. CREATE DATABASE IF NOT EXISTS bookstore
  2. DEFAULT CHARACTER SET utf8mb4
  3. DEFAULT COLLATE utf8mb4_unicode_ci;
复制代码
假如不想设置一些属性,可直接用下面简单的语句即可:
  1. CREATE DATABASE bookstore;
复制代码
当看到
  1. “Query OK, 1 row affected (0.32 sec);”
复制代码
提示中,“Query OK”表示下令执行乐成,“0.32 sec” 表示执行的时间。
2.2 查看全部数据库

实用语法
   SHOW DATABASES [LIKE ‘数据库名’];
  如:

第一个就是我们刚刚创建的bookstore
2.3 修改数据库



  • 语法:
  1. ALTER DATABASE [数据库名] {
  2. [ DEFAULT ] CHARACTER SET <字符集名> |
  3. [ DEFAULT ] COLLATE <校对规则名>}
复制代码
下面是一个实例 SQL 语句,用于修改一个名为 exampleDB 的数据库的默认字符集和校对规则
  1. ALTER DATABASE exampleDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
复制代码
这个 SQL 语句会将 exampleDB 的默认字符集和校对规则修改为 utf8mb4 和 utf8mb4_unicode_ci,同时保留该数据库中原有的数据。


  • 还可以重定名数据库:
  1. ALTER DATABASE exampleDB RENAME TO newDBName;
复制代码
将名为 exampleDB 的数据库修改为名为 newDBName。需要注意的是,在修改数据库名称过程中,你需要关闭该数据库的全部毗连,否则会报错。
2.4 删除数据库



  • 语法
  1. DROP DATABASE [ IF EXISTS ] <数据库名>
复制代码
其中,database_name 表示要删除的数据库的名称。假如指定了 IF EXISTS,那么在删除一个不存在的数据库时,不会报错而是静默返回。
三、MySQL 数据表操作

数据表是数据库的重要组成部分,我们上面介绍了如何新建一个数据库。下面介绍表相关操作。
3.1 学习如何创建表



  • 语法
  1. CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];
  2. CREATE TABLE table_name (
  3.     column1 datatype [constraint],
  4.     column2 datatype [constraint],
  5.     column3 datatype [constraint],
  6.     ...
  7.     PRIMARY KEY (one or more columns)
  8. );
复制代码
其中,table_name 表示要创建的表的名称。column1, column2, column3 等则表示表中的列名,datatype 表示该列的数据范例。假如不需要设置约束,则可以省略 [constraint]。PRIMARY KEY 用于指定表中的主键,可以需要设置一个或多个列作为主键,以保证表中的数据唯一性。


  • 举例阐明:
    创建一个新的数据表,定名为 “books”,包括图书编号、图书名称、作者和代价:
  1. CREATE TABLE books(
  2.   id INT(11) NOT NULL AUTO_INCREMENT,
  3.   title VARCHAR(255) DEFAULT NULL,
  4.   author VARCHAR(255) DEFAULT NULL,
  5.   price DECIMAL(10,2) DEFAULT NULL,
  6.   PRIMARY KEY(id)
  7. );
复制代码
3.2 学习如何删除表



  • 语法
  1. DROP TABLE [IF EXISTS] table_name;
复制代码
其中,table_name 表示要删除的表的名称。假如指定了 IF EXISTS,那么在删除一个不存在的表时,不会报错而是静默返回。


  • 举例阐明:
  1. 删除名为 users 的数据库表
  2. DROP TABLE users;
复制代码
这个 SQL 语句会删除名为 users 的数据库表及其中的全部数据。
3.3 学习如何修改表布局



  • 语法
  1. ALTER TABLE <表名> [修改选项];
  2. ALTER TABLE table_name
  3.     ADD [COLUMN] column_name data_type [NULL | NOT NULL] [DEFAULT default_value] [AFTER | FIRST column_name],
  4.     DROP [COLUMN] column_name,
  5.     MODIFY [COLUMN] column_name new_data_type [NULL | NOT NULL] [DEFAULT default_value] [FIRST | AFTER column_name],
  6.     RENAME [COLUMN] old_column_name TO new_column_name,
  7.     RENAME TO new_table_name;
复制代码
参数比力多,其中,ADD 可以添加一个新的列,DROP 可以删除一个已经存在的列,MODIFY 可以修改一个已经存在的列的数据范例等属性,RENAME 可以重定名一个已经存在的列或者整个表。


  • 举例阐明:
  1. 添加一个新列 age 到一个名为 users 的表中
  2. ALTER TABLE users ADD COLUMN age INT(11) AFTER email;
复制代码
  1. 删除一个名为 age 的列
  2. ALTER TABLE users DROP COLUMN age;
复制代码
  1. 修改一个名为 username 的列的数据类型和默认值
  2. ALTER TABLE users MODIFY COLUMN username VARCHAR(100) NOT NULL DEFAULT 'anonymous' AFTER id;
复制代码
  1. 将一个名为 name 的列重命名为 full_name
  2. ALTER TABLE users RENAME COLUMN name TO full_name;
复制代码
  1. 将一个名为 users 的表重命名为新名称 customers
  2. ALTER TABLE users RENAME TO customers;
复制代码
3.4 数据范例介绍和使用DATE、TIME、DATETIME和TIMESTAMP等时间数据范例

在 SQL 中,有很多差别的数据范例,包括数字范例、字符范例、日期时间范例等等。下面扼要介绍一些常见的数据范例:


  • INT / INTEGER:整数范例
  • VARCHAR:可变长度字符串范例
  • CHAR:定长字符串范例
  • TEXT:文本字符串范例
  • DECIMAL / NUMERIC:定点数范例
  • FLOAT / DOUBLE:浮点数范例
  • DATE:日期范例,仅准确到日期
  • TIME:时间范例,仅准确到时分秒
  • DATETIME:日期时间范例,准确到毫秒
  • TIMESTAMP:时间戳范例,准确到秒
下面是使用差别时间数据范例的示例 SQL 语句:


  • 使用 DATE 存储日期数据
    1. CREATE TABLE sales (
    2.     id INT(11) NOT NULL AUTO_INCREMENT,
    3.     customer_id INT(11) NOT NULL,
    4.     order_date DATE NOT NULL,
    5.     total_amount DECIMAL(10,2) NOT NULL,
    6.     PRIMARY KEY (id)
    7. );
    复制代码
    order_date 列被指定为 DATE 范例,因此它只准确到日期,而不包括时间。
  • 使用 TIME 存储时间数据
    1. CREATE TABLE employees (
    2.     id INT(11) NOT NULL AUTO_INCREMENT,
    3.     name VARCHAR(50) NOT NULL,
    4.     start_time TIME NOT NULL,
    5.     PRIMARY KEY (id)
    6. );
    复制代码
    start_time列被指定为TIME` 范例,因此它只准确到时分秒,而不包括日期。
  • 使用 DATETIME 存储日期时间数据
    1. CREATE TABLE log (
    2.     id INT(11) NOT NULL AUTO_INCREMENT,
    3.     access_time DATETIME NOT NULL,
    4.     user_id INT(11) NOT NULL,
    5.     PRIMARY KEY (id)
    6. );
    复制代码
    access_time列被指定为DATETIME` 范例,因此它包括日期和时间,准确到毫秒。
  • 使用 TIMESTAMP 存储时间戳数据
    1. CREATE TABLE bookings (
    2.     id INT(11) NOT NULL AUTO_INCREMENT,
    3.     checkin_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    4.     checkout_time TIMESTAMP NOT NULL DEFAULT '1970-01-01 00:00:01',
    5.     room_id INT(11) NOT NULL,
    6.     PRIMARY KEY (id)
    7. );
    复制代码
    checkin_time和checkout_time列都被指定为TIMESTAMP 范例,因此它们包括日期和时间,准确到秒。其中,checkin_time 的默认值被设置为当前时间戳,checkout_time的默认值被设置为’1970-01-01 00:00:01’`,代表最小时间戳值。
需要注意的是,在差别的数据库管理系统中,时间数据范例可能会有所差别,比方 DATETIME 和 TIMESTAMP 的差别。别的,还需要仔细思量如何处理时区、闰秒等问题。在实际使用中,建议参考相关的文档和标准,并遵守最佳实践。
3.5 如何使用SQL约束来掩护数据的完整性

在 SQL 中,可以使用约束(Constraint)来限定或掩护表中的数据完整性。这些约束包括列级约束和表级约束。
列级约束是针对单个列的约束,比方 NOT NULL、UNIQUE、PRIMARY KEY 和 FOREIGN KEY 约束。表级约束是针对多个列的约束,比方 CHECK 约束。
下面是一些常见的 SQL 约束以及如何使用它们来掩护数据的完整性:


  • NOT NULL 约束:用于确保列中的值不为空。
    1. CREATE TABLE Users (
    2.     ID INT NOT NULL,
    3.     FirstName VARCHAR(50) NOT NULL,
    4.     LastName VARCHAR(50) NOT NULL,
    5.     Email VARCHAR(100) NOT NULL,
    6.     CONSTRAINT PK_Users PRIMARY KEY (ID)
    7. );
    复制代码
    ID、FirstName、LastName 和 Email 列都被设置为 NOT NULL,以确保这些列中的值不能为空。
  • UNIQUE 约束:用于确保列中的值是唯一的。
    1. CREATE TABLE Products (
    2.     ID INT NOT NULL,
    3.     Name VARCHAR(100) NOT NULL,
    4.     Description TEXT,
    5.     SKU VARCHAR(50) UNIQUE,
    6.     CONSTRAINT PK_Products PRIMARY KEY (ID)
    7. );
    复制代码
    SKU 列被设置为 UNIQUE,以确保每个产物都有唯一的 SKU 编号。
  • PRIMARY KEY 约束:用于指定一个或多个列是表的主键,确保每行都有唯一的标识符。
    1. CREATE TABLE Orders (
    2.     ID INT PRIMARY KEY,
    3.     CustomerID INT NOT NULL,
    4.     OrderDate DATETIME DEFAULT NULL,
    5.     CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES Customers(ID)
    6. );
    复制代码
    ID 列被设置为 PRIMARY KEY,以确保每个订单都有唯一的标识符。
  • FOREIGN KEY 约束:用于确保列中的值与另一个表中的列的值匹配。
    1. CREATE TABLE OrderDetails (
    2.     ID INT PRIMARY KEY,
    3.     OrderID INT NOT NULL,
    4.     ProductID INT NOT NULL,
    5.     Quantity INT NOT NULL,
    6.     CONSTRAINT FK_OrderDetails_Orders FOREIGN KEY (OrderID) REFERENCES Orders(ID),
    7.     CONSTRAINT FK_OrderDetails_Products FOREIGN KEY (ProductID) REFERENCES Products(ID)
    8. );
    复制代码
    OrderID和ProductID列都被设置为FOREIGN KEY`,以确保订单详情行与订单和产物表中的精确行匹配。
  • CHECK 约束:用于确保列中的值符合特定条件。
    1. CREATE TABLE Employees (
    2.     ID INT PRIMARY KEY,
    3.     FirstName VARCHAR(50) NOT NULL,
    4.     LastName VARCHAR(50) NOT NULL,
    5.     HireDate DATE,
    6.     Salary DECIMAL(10,2) NOT NULL,
    7.     CONSTRAINT CK_Employees_Salary CHECK (Salary > 0)
    8. );
    复制代码
    Salary列被设置为CHECK` 约束,以确保每个员工的工资大于 0。
通过使用约束,可以在 SQL 中掩护数据的完整性和合法性。当尝试向表中插入或更新数据时,假如违背任何约束,则 SQL 将抛出错误,阻止事务的提交。
3.6 表的备份与规复

在 SQL 中,我们可以使用备份和还原功能来保存和规复数据库中的数据。
MySQL 数据库也提供了备份和规复功能,可以使用 mysqldump 下令进行备份,使用 mysql 下令进行还原。下面是备份和规复 MySQL 数据库表的语法及示例:


  • 备份MySQL表
    1. /*备份整个数据库*/
    2. mysqldump -u root -p database_name > backup_file.sql
    3. /*备份单个表结构和数据*/
    4. mysqldump -u root -p database_name table_name > backup_file.sql
    5. /*备份单个表结构*/
    6. mysqldump -u root -p -d database_name table_name > backup_file.sql
    复制代码
    在执行备份下令时,-u 表示登录 MySQL 数据库的用户名,-p 表示在输入密码时提示,database_name 表示需要备份的数据库名,table_name 表示需要备份的数据库表名。备份文件 backup_file.sql 可以自行决定,同时也可以指定文件保存目次。
  • 规复MySQL表
    1. /*从备份文件中还原整个数据库*/
    2. mysql -u root -p database_name < backup_file.sql
    3. /*从备份文件中还原单个表结构和数据*/
    4. mysql -u root -p database_name < backup_file.sql
    5. /*从备份文件中还原单个表结构*/
    6. mysql -u root -p database_name < backup_file.sql
    复制代码
    还原下令中的语法和备份下令大抵相同,唯一的区别在于把备份文件作为标准输入来还原表格。在执行还原操作时,需要注意确保当前数据库表和备份文件中的表名和布局同等。
需要注意的是,MySQL 备份和规复下令通常需要管理员权限,且执行时间较长,同时也需要思量备份文件的安全和管理。在实际使用中,需要仔细思量备份和规复策略,并遵守相关的数据库安全和最佳实践。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表