SQL命令一:SQL 基础操作与建表约束
目录
引言
一、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 高级应用的基础。