SQL之数据定义、数据操纵

时间:2025-04-18 10:08:32

  根据SQL的功能(数据定义、数据操纵、数据查询、数据控制)给大家依次例举了一些SQL的常用语法格式以及实例,希望能对各位初识SQL的伙伴一些帮助。由于篇幅原因,本文只介绍数据定义与数据操纵部分。

数据定义:

用于定义数据库、基本表等机构,基本命令包括:create、drop、alter。

先讲一下命令的用法:

命令 功能
create database 库名 创建数据库
create table 表名 (列名1 类型1 [约束列1],
列名2 类型2 [约束列2],
…)
创建数据表
drop table 表名 删除表
alter table 表名 修改内容 修改表结构(alter后面可以接的命令直接在实例里举出)

实例1:

创建数据库与基本表

建立“Practice”数据库,建立“student”数据表(结构如下):

id name age sex
int(5) char(5) int(3) char(2)
主键 非空
create database practice;  -- 创建数据库

use practice;  -- 选择要操作的数据库

create table student (id int(5) primary key,
					  name char(5) not null,
					  age char(3),sex char(2));    -- 创建表
desc student;  -- 查看数据表结构
					  
/***注意每条SQL语句的结尾要加分号,在SQL里面分号是一条语句结束的标志***/    

逐条运行的结果是这样的:

mysql> create database practice;  -- 创建数据库
Query OK, 1 row affected (0.01 sec)

mysql> use practice;  -- 选择要操作的数据库
Database changed
mysql> create table student (id int(5) primary key,
 ->   name char(5) not null,
 ->   age char(3),sex char(2));    -- 创建表
Query OK, 0 rows affected (0.34 sec)

mysql> desc student;  -- 查看数据表结构
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(5)  | NO   | PRI | NULL    |       |
| name  | char(5) | NO   |     | NULL    |       |
| age   | char(3) | YES  |     | NULL    |       |
| sex   | char(2) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
4 rows in set (0.01 sec)

  drop table 删除表,直接用就可以了,没有那么多弯弯绕绕的,简单易懂,所以就略过了。但是值得注意的是drop与delete的区别,drop是删除表,delete是删除表中的记录。其语法格式在之后的数据操纵中再向大家讲明。

  alter table 用于对表的结构进行修改,可以添加、删除字段:
添加字段:

alter table student add address char(50);  -- 添加地址字段
alter table student drop sex; -- 删除性别字段

结果是这样的:

mysql> desc student;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| id      | int(5)   | NO   | PRI | NULL    |       |
| name    | char(5)  | NO   |     | NULL    |       |
| age     | char(3)  | YES  |     | NULL    |       |
| address | char(50) | YES  |     | NULL    |       |
+---------+----------+------+-----+---------+-------+

当然alter还可以对字段的数据类型等进行设置,感兴趣的朋友可以自己再去了解一下。

数据操纵:

数据操纵可以分为数据查询和数据跟新两类,数据更新又分为插入、删除和修改,基本命令如下:

命令 功能
insert into 表名(字段1,字段2, …) values (值1,值2,…) 插入记录
update 表名 set 列名 = 新值 where 列名 = 某值 跟新符合条件的记录
delete from 表名 where 列名 = 值 删除符合条件的记录

  insert 用于向表中插入记录,可以直接插入,也可以插入到指定列,两者的写法稍有不同,会在实例中给出。还有值得注意的是delete与drop的区别,上文中也有提到,delete的操作对象是表中的记录,而drop的操作对象是表结构。

实例2:

插入、跟新、删除表中的记录

向“student”表中插入一条、多条记录,跟新记录属性,删除记录

INSERT INTO student(id,NAME,age,address) VALUES(1,'李涵','15',''); -- 插入单条记录

INSERT INTO student(id,NAME,age,address) VALUES(2,'张涵','20',''),(3,'王珂','21','上海'),(4,'彭军','20','北京'); -- 插入多条记录

UPDATE student SET age='25' WHERE NAME='彭军'; -- 跟新记录(将彭军的年龄改为25)

DELETE FROM student WHERE NAME='王珂'; -- 删除记录

结果如下:

mysql> insert into student(id,name,age,address) values(1,'李涵','15','');
Query OK, 1 row affected (0.14 sec)

mysql> insert into student(id,name,age,address) values(2,'张涵','20',''),(3,'王珂','21','上海'),(4,'彭军','20','北京');
Query OK, 3 rows affected (0.08 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> UPDATE student SET age='25' WHERE NAME='彭军';
Query OK, 1 row affected (0.10 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> UPDATE student SET age='25' WHERE NAME='彭军'; -- 跟新记录(将彭军的年龄改为25)
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> DELETE FROM student WHERE NAME='王珂'; -- 删除记录
Query OK, 1 row affected (0.11 sec)

mysql> select * from student;
+----+--------+------+---------+
| id | name   | age  | address |
+----+--------+------+---------+
|  1 | 李涵   | 15   |         |
|  2 | 张涵   | 20   |         |
|  4 | 彭军   | 25   | 北京    |
+----+--------+------+---------+
3 rows in set (0.00 sec)