目錄
引言
一、SQL 基礎命令
(一)數據庫相關操作
(二)表格相關操作
(三)MySQL 常用數據類型
二、增刪改查(CRUD)操作
(一)增加數據
(二)刪除數據
(三)修改數據
(四)查詢數據
三、建表約束
(一)非空約束(NK,not null)
(二)唯一約束(UK,unique)
(三)主鍵約束(PK,primary key)
(四)自動遞增
(五)聯合主鍵
(六)外鍵約束(FK,foreign key)
總結
引言
????????在當今數字化時代,數據處理和管理變得至關重要。SQL(Structured Query Language,結構化查詢語言)作為操作關系型數據庫的核心工具,掌握它的基本命令和建表約束是邁向數據處理領域的關鍵一步。
一、SQL 基礎命令
(一)數據庫相關操作
- 登錄 MySQL
要與 MySQL 數據庫進行交互,首先得登錄到數據庫系統。使用命令?mysql -u root -p
?登錄,其中?-u
?后面跟著用戶名,這里是?root
,-p
?表示需要輸入密碼。輸入密碼后回車,就能成功登錄。 - 查看所有數據庫
登錄成功后,使用?show databases;
?命令可以查看當前 MySQL 服務器上的所有數據庫。例如,執行該命令后,可能會看到?information_schema
、mysql
、performance_schema
?等系統自帶數據庫,以及你自己創建的數據庫。 - 使用數據庫
若要對某個特定數據庫進行操作,需先指定使用該數據庫。使用?use +數據庫名稱;
?語句,比如?use testdb;
,就可以切換到名為?testdb
?的數據庫,后續操作都將在這個數據庫中進行。 - 刪除數據庫
當某個數據庫不再需要時,可以使用?drop database +數據庫名稱;
?命令將其刪除。例如,drop database olddb;
?會永久刪除?olddb
?數據庫及其所有數據,此操作需謹慎執行。 - 創建數據庫
使用?create database +數據庫名稱;
?命令創建新的數據庫。例如,create database newdb;
?會在服務器上創建一個名為?newdb
?的數據庫。還可以通過?show create database +數據庫名稱;
?查看數據庫的詳細創建信息,包括編碼設置等。比如?show create database newdb;
?可能會顯示如下結果:
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| newdb | CREATE DATABASE `newdb` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+----------------------------------------------------------------+
(二)表格相關操作
- 查看所有表格
在選定的數據庫中,使用?show tables;
?命令可以查看該數據庫下的所有表格。假設在?testdb
?數據庫中已經創建了?users
?和?orders
?表,執行該命令就會顯示這兩個表名。 - 創建表格
創建表格使用?create table +表名+(字段1 類型(長度),字段2 類型(長度),字段3 類型(長度))
?語法。例如,創建一個?users
?表,包含姓名、年齡和地址信息:
create table users (name varchar(10),age int(3),address varchar(50)
);
- 刪除表格
若要刪除某個表格,使用?drop table +表名
?命令。例如,drop table users;
?會刪除?users
?表及其所有數據。 - 修改表結構
- 刪除列:使用?
alter table t_user drop column name;
?可以刪除?t_user
?表中的?name
?列。 - 添加列:
alter table t_user add column name varchar(10);
?會在?t_user
?表中添加一個名為?name
?的?varchar(10)
?類型的列。 - 修改列:
alter table t_user change column name username varchar(15);
?會將?t_user
?表中的?name
?列名改為?username
,并將其數據類型修改為?varchar(15)
。
- 刪除列:使用?
- 查看表格詳細信息
使用?desc +表名
?命令可以查看表格的詳細結構,包括字段名、數據類型、是否允許為空等信息。例如,desc users;
?可能會顯示如下結果:
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(10) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
(三)MySQL 常用數據類型
- 整數(int):用于存儲整數數值,如年齡、數量等。例如,
age int(3)
?可以存儲三位整數的年齡信息。 - 小數(double):適用于需要高精度小數的場景,如商品價格。例如,
price double(10, 2)
?可以存儲最多十位數字,其中小數部分占兩位的價格信息。 - 字符串(varchar):可存儲可變長度的文本,如姓名、地址等。例如,
name varchar(10)
?可以存儲最長為 10 個字符的姓名。 - 日期(datetime):用于記錄日期和時間信息,如訂單創建時間、用戶注冊時間等。例如,
create_time datetime
?可以存儲具體的日期和時間。
二、增刪改查(CRUD)操作
(一)增加數據
- 方式一:添加所有字段
可以使用?insert into 表格名稱 values (字段1,字段2,字段3)
?或?insert into 表格名稱(全部字段)values (字段1,字段2,字段3);
?語句插入數據。例如,向?users
?表插入數據:
insert into users values ('張三', 20, '北京市');
insert into users (name, age, address) values ('李四', 22, '上海市');
- 方式二:挑一部分字段添加
使用?insert into t_user (age,address) value (12,"beijing")
?這種方式,只插入部分字段的數據。例如:
insert into users (name, age) values ('王五', 25);
(二)刪除數據
- 物理刪除:使用?
delete from 表格名稱 where 條件
?語句。例如,刪除?users
?表中地址為 “北京市” 的記錄:
delete from users where address = '北京市';
若要清空表格所有數據,去掉?where
?條件,即?delete from users;
。
2.?邏輯刪除:通常通過?update
?語句實現。例如,在?users
?表中添加一個?is_deleted
?字段,將其值設為 1 表示已刪除:
alter table users add column is_deleted tinyint(1) default 0;
update users set is_deleted = 1 where age = 22;
(三)修改數據
使用?update 表格名稱 set 字段=修改的值 where 條件
?語句。例如,將?users
?表中姓名為 “王五” 的年齡修改為 26:
update users set age = 26 where name = '王五';
若要修改所有記錄,去掉?where
?條件,如?update users set age = age + 1;
?會將所有用戶的年齡加 1。
(四)查詢數據
- 查詢所有數據:使用?
select * from +表名
?語句,例如?select * from users;
?會返回?users
?表的所有記錄。 - 查詢特定字段:使用?
select 字段1, 字段2 from 表名
?語句,如?select name, age from users;
?只查詢姓名和年齡字段。 - 使用別名:使用?
select 字段1 別名, 字段2 別名 from 表名
?語句,例如?select name 姓名, age 年齡 from users;
?會將查詢結果的列名顯示為 “姓名” 和 “年齡”。 - 去重查詢:使用?
distinct
?關鍵字,如?select distinct address from users;
?會查詢出?users
?表中不重復的地址。
三、建表約束
(一)非空約束(NK,not null)
非空約束用于確保字段不能為空值。創建表時,在字段定義后添加?not null
。例如:
create table admins (id int(5),adminname varchar(10) not null,password varchar(20)
);
當嘗試向?adminname
?字段插入空值時,會報錯?ERROR 1364(HY000):Field "adminname" doesn't have a default value
。創建表后,也可以使用?alter table student1 change age age int( 3 ) not null;
?來添加非空約束。
(二)唯一約束(UK,unique)
唯一約束保證字段值的唯一性。創建表時,可以將字段定義為?unique
,例如:
create table persons (id int(5) unique,adminname varchar(10) not null,password varchar(20)
);
也可以通過指定名稱創建唯一約束:
create table cats (id int(5),name varchar(10),password varchar(20),constraint uk_name unique(name)
);
創建表后,使用?alter table student1 change age age int( 3 ) Unique;
?可添加唯一約束。
(三)主鍵約束(PK,primary key)
主鍵約束兼具非空和唯一的特性,是表中記錄的唯一標識,一般將?id
?編號設置為主鍵,且一張表至少有一個主鍵。例如:
create table cats (id int(5) primary key,name varchar(10),password varchar(20)
);
或者指定主鍵名稱:
create table cats (id int(5),name varchar(10),password varchar(20),constraint pk_name primary key(id)
);
(四)自動遞增
當主鍵為?int
?類型時,常設置為自動遞增。在 MySQL 中,創表時追加?AUTO_INCREMENT
?即可實現。例如:
create table persons (id int(5) primary key AUTO_INCREMENT,name varchar(10),password varchar(20)
);
插入數據時無需指定?id
,它會自動遞增。如果刪除了?id
?為 3 的記錄,再插入新記錄時,id
?會自動遞增到 4。
(五)聯合主鍵
當需要兩個或兩個以上字段共同約束非空和唯一時,可使用聯合主鍵。例如:
create table cats (id int(5),name varchar(10),password varchar(20),constraint pk_name primary key(id, name)
);
只要?id
?和?name
?的組合不重復即可。
(六)外鍵約束(FK,foreign key)
外鍵約束用于建立表與表之間的關系,常見于一對多或多對多關系。例如,有?departments
?表和?employees
?表,員工屬于某個部門,通過外鍵建立關聯:
create table departments (department_id int(11) primary key,department_name varchar(50)
);create table employees (employee_id int(11) primary key,employee_name varchar(50),department_id int(11),constraint fk_department_id foreign key(department_id) references departments(department_id)
);
總結
????????通過本文,我們學習了 SQL 的基礎命令,包括數據庫和表格的操作,以及數據的增刪改查。同時,了解了建表約束的各種類型及其作用,這些約束能夠確保數據的完整性和一致性。掌握這些知識是進一步學習 SQL 高級應用的基礎。