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 高级应用的基础。
