第一章 基本操作
一、管理数据库
难点:创建数据库
输入cmd的MySQL安装路径C:\Program Files\MySQL\MySQL Server 8.0\bin
1.查看所有数据库
show databases;
2.创建数据库
create database hsusers default charset utf8 collate utf8_general_ci;
create database:这是一个 SQL 关键字,用于指示数据库系统创建一个新的数据库。
hsusers:这是要创建的数据库的名称。在实际使用时,你可以依据自身需求将其替换为合适的名称。
default charset utf8:指定了该数据库默认的字符集为 utf8。字符集定义了数据库存储和处理文本时所采用的字符编码方式。utf8 能够支持多种语言的字符,是一种广泛使用的字符编码。
collate utf8_general_ci:指定了该数据库默认的排序规则为 utf8_general_ci。排序规则决定了在进行字符串比较和排序时的规则。utf8_general_ci 中的 ci 表示大小写不敏感(Case - Insensitive),即数据库在比较字符串时不会区分大小写。
3.删除数据库
drop database day1db;
4.进入数据库
use day1db;
5.查看数据库中的表
show tables;
create database hsusers default charset utf8 collate utf8_general_ci;
二、管理数据表
难点:创建数据表
(一)创建表
在 MySQL 里,你可以使用 CREATE TABLE
语句来创建表。下面为你详细介绍其基本语法、示例以及不同参数的作用。
基本语法
sql
CREATE TABLE table_name (
column1 datatype [optional_constraints],
column2 datatype [optional_constraints],
...
[table_constraints]
);
语法解释
CREATE TABLE
:这是用于创建表的关键字。table_name
:要创建的表的名称,需保证在数据库中该名称是唯一的。column1, column2, ...
:表中的列名,每个列都有对应的datatype
(数据类型)。datatype
:指定列可以存储的数据类型,例如INT
(整数)、VARCHAR
(可变长度字符串)、DATE
(日期)等。optional_constraints
:可选择的列约束条件,像NOT NULL
(非空)、UNIQUE
(唯一)、PRIMARY KEY
(主键)、FOREIGN KEY
(外键)等。table_constraints
:表级约束条件,用于定义跨列的约束,例如复合主键、唯一键组合等。
示例
以下是创建一个名为 employees
的表的示例,该表包含员工的基本信息:
sql
CREATE TABLE employees (
id INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
birth_date DATE,
hire_date DATE,
salary DECIMAL(10, 2),
department_id INT,
PRIMARY KEY (id),
FOREIGN KEY (department_id) REFERENCES departments(id)
);
示例解释
id
:是一个自增的整数列,作为主键,确保每个员工记录有唯一的标识符。first_name
和last_name
:为可变长度字符串列,用于存储员工的名字和姓氏,且不能为空。birth_date
和hire_date
:为日期列,分别存储员工的出生日期和入职日期。salary
:是一个十进制数,用于存储员工的工资,精度为 10 位,小数部分为 2 位。department_id
:是一个整数列,作为外键,引用departments
表中的id
列,用于关联员工所属的部门。
创建临时表
若你需要创建一个临时表(该表在会话结束时会自动删除),可以使用 CREATE TEMPORARY TABLE
语句,语法如下:
sql
CREATE TEMPORARY TABLE temp_table_name (
column1 datatype [optional_constraints],
column2 datatype [optional_constraints],
...
[table_constraints]
);
这些示例和语法应该能帮助你在 MySQL 中创建所需的表。在实际使用时,根据具体需求调整列名、数据类型和约束条件。
(二)列约束条件
在 MySQL 中,列约束条件用于限制列中存储的数据,确保数据的完整性和一致性。以下是常见的列约束条件及其含义:
1. NOT NULL
- 含义:该约束规定列不允许存储
NULL
值。也就是说,在向该列插入数据时,必须提供一个有效的值。 - 示例:
sql
CREATE TABLE users (
id INT,
name VARCHAR(50) NOT NULL
);
在这个 users
表中,name
列不允许为 NULL
,插入数据时必须提供一个名字。
2. UNIQUE
- 含义:此约束保证列中的所有值都是唯一的,即同一列中不能有重复的值。
- 示例:
sql
CREATE TABLE employees (
id INT,
email VARCHAR(100) UNIQUE
);
在 employees
表中,email
列的每个值都必须是唯一的,不能有两个员工使用相同的电子邮件地址。
3. PRIMARY KEY
- 含义:
PRIMARY KEY
约束用于唯一标识表中的每一行记录。它结合了NOT NULL
和UNIQUE
的特性,即主键列的值不能为NULL
且必须唯一。一个表只能有一个主键,但主键可以由多个列组成(复合主键)。 - 示例:
sql
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(200)
);
这里 product_id
列被定义为主键,用于唯一标识每个产品。
4. FOREIGN KEY
- 含义:
FOREIGN KEY
约束用于建立表与表之间的关联。它引用另一个表的主键列,确保该列中的值必须存在于被引用表的主键列中。通过外键可以实现数据库的参照完整性。 - 示例:
sql
CREATE TABLE orders (
order_id INT PRIMARY KEY,
product_id INT,
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
在 orders
表中,product_id
列是外键,它引用了 products
表的 product_id
主键列。这意味着 orders
表中的 product_id
值必须是 products
表中已经存在的 product_id
值。
5. DEFAULT
- 含义:
DEFAULT
约束为列指定一个默认值。当插入数据时,如果没有为该列提供值,则会使用默认值。 - 示例:
sql
CREATE TABLE customers (
customer_id INT,
status VARCHAR(20) DEFAULT 'active'
);
在 customers
表中,如果插入数据时没有为 status
列提供值,那么该列将自动使用默认值 'active'
。
6. CHECK
- 含义:
CHECK
约束用于限制列中的值必须满足特定的条件。在 MySQL 8.0.16 及以后的版本中,CHECK
约束是强制执行的。 - 示例:
sql
CREATE TABLE students (
student_id INT,
age INT,
CHECK (age >= 18)
);
在 students
表中,CHECK
约束确保 age
列的值必须大于或等于 18。
7. AUTO_INCREMENT
- 含义:
AUTO_INCREMENT
约束用于为整数类型的列自动生成唯一的、递增的值。通常与PRIMARY KEY
约束一起使用,用于自动生成主键值。 - 示例:
sql
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50)
);
在 users
表中,每次插入新记录时,user_id
列会自动生成一个比上一个记录的 user_id
值大 1 的新值。
注意:MySQL并非只有这个7个列约束条件,其他孤不常用,在此不作深入讲解。