目录
引言
一、SQL 基础命令
(一)数据库相关操作
(二)表格相关操作
(三)MySQL 常用数据类型
二、增删改查(CRUD)操作
(一)增加数据
(二)删除数据
(三)修改数据
(四)查询数据
三、建表约束
(一)非空约束(NK,not null)
(二)唯一约束(UK,unique)
(三)主键约束(PK,primary key)
(四)自动递增
(五)联合主键
(六)外键约束(FK,foreign key)
总结
在当今数字化时代,数据处理和管理变得至关重要。SQL(Structured Query Language,结构化查询语言)作为操作关系型数据库的核心工具,掌握它的基本命令和建表约束是迈向数据处理领域的关键一步。
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 | |
+---------+-------------+------+-----+---------+-------+
age int(3)
可以存储三位整数的年龄信息。price double(10, 2)
可以存储最多十位数字,其中小数部分占两位的价格信息。name varchar(10)
可以存储最长为 10 个字符的姓名。create_time datetime
可以存储具体的日期和时间。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
表中不重复的地址。非空约束用于确保字段不能为空值。创建表时,在字段定义后添加 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;
来添加非空约束。
唯一约束保证字段值的唯一性。创建表时,可以将字段定义为 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;
可添加唯一约束。
主键约束兼具非空和唯一的特性,是表中记录的唯一标识,一般将 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
的组合不重复即可。
外键约束用于建立表与表之间的关系,常见于一对多或多对多关系。例如,有 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 高级应用的基础。