一、语句基础
SQL(Structured Query Language)是关系型数据库的核心语言,用于定义、操作和查询数据。
SQL 可分为以下几类:
-
DDL(数据定义语言)
用于定义数据库结构,例如表和索引。常用命令:CREATE
:创建数据库或表。ALTER
:修改表结构。DROP
:删除数据库或表。
-
DML(数据操作语言)
用于操作数据(增删改)。常用命令:INSERT
:插入数据。UPDATE
:更新数据。DELETE
:删除数据。
-
DQL(数据查询语言)
用于查询数据,主要是SELECT
语句。 -
DCL(数据控制语言)
用于权限控制,例如:GRANT
:授予权限。REVOKE
:撤销权限。
二、详解DDL DML
1. DDL(数据库)
相关语法:
-- 查询所有数据库
show databases;
-- 查询当前数据库
select database();
-- 使用/切换数据库
use 数据库名;
use XXX;
-- 创建数据库
create database [if not exists] 数据库名 [default charset utf8mb4];
create database if not exists itheima03;
-- 删除数据库
drop database if exists XXX;
2. DDL(表操作)
创建表的语法:
create table 表名 (
字段1 字段类型 [约束] [comment '字段1注释'],
...
字段2 字段类型 [约束] [comment '字段2注释']
) [comment '表注释'];
约束:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
目的:保证数据库中数据的正确性、有效性和完整性。
语法示例:
create table emp(
id int unsigned primary key auto_increment comment 'ID,主键',
username varchar(20) not null unique comment '用户名',
password varchar(50) default '123456' comment '密码',
name varchar(10) not null comment '姓名',
gender tinyint unsigned not null comment '性别, 1:男, 2:女',
phone char(11) not null unique comment '手机号',
job tinyint unsigned comment '职位, 1 班主任, 2 讲师 , 3 学工主管,
salary int unsigned comment '薪资',
entry_date date comment '入职日期',
image varchar(300) comment '头像',
create_time datetime comment '创建时间',
update_time datetime comment '修改时间'
) comment '员工表';
修改表结构:
-- 查询当前数据库的所有表
show tables;
-- 查询表结构
desc 表名;
-- 查询建表语句
show create table 表名;
-- 添加字段
alter table 表名 add 字段名 类型(长度) [comment '注释'] [约束];
-- 修改字段类型
alter table 表名 modify 字段名 新数据类型(长度);
-- 修改字段名与字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment '注释'] [约束];
-- 删除字段
alter table 表名 drop column 字段名;
-- 修改表名
alter table 表名 rename to 新表名;
-- 删除表
drop table [if exists] 表名;
语法示例:
-- 表结构修改: 添加字段 add
alter table emp add qq varchar(11) comment 'QQ';
-- 表结构修改: 修改字段类型 modify
alter table emp modify qq varchar(13) comment 'QQ';
-- 表结构修改: 修改字段名 和 字段类型 change
alter table emp change qq qq_num varchar(15) comment 'QQ';
-- 表结构修改: 删除字段 drop
alter table emp drop column qq_num;
-- 表结构修改: 修改表名
alter table emp rename to employee;
-- 删除表
drop table user;
3. DML
insert:
-- 指定字段添加数据
insert into 表名 (字段名1, 字段名2)
values (值1, 值2);
-- 全部字段添加数据
insert into 表名
values (值1, 值2, ...);
-- 批量添加数据(指定字段)
insert into 表名 (字段名1, 字段名2)
values (值1, 值2),
(值1, 值2);
-- 批量添加数据(全部字段)
insert into 表名
values (值1, 值2, ...),
(值1, 值2, ...);
语法示例:
-- DML : 数据操作语言
-- DML : 插入数据 - insert
-- 1. 为 emp 表的 username, password, name, gender, phone 字段插入值
insert into emp(username, password, name, gender, phone, create_time, update_time)
values ('Tom', '1234', '汤姆', 1, '13309091212',now(),now());
-- 2. 为 emp 表的 所有字段插入值
insert into emp(id, username, password, name, gender, phone, job, salary, entry_date, image, create_time, update_time)
values (null, 'Tom2', '1234', '汤姆2', 1, '13309091213',1,2800,'2008-01-01','1.jpg',now(),now());
-- 作用相同
insert into emp values (null, 'Tom3', '1234', '汤姆3', 1, '13309091214',1,2800,'2008-01-01','1.jpg',now(),now());
注意:
-
插入数据时,指定的字段顺序需要与值的顺序一一对应。
-
字符串和日期型数据应该包含在引号中(单引号
'
或双引号"
都可以)。 -
插入的数据大小,应在字段的规定范围内。
update:
-- 修改数据
update 表名
set 字段名1 = 值1,
字段名2 = 值2,
...
[where 条件];
语法示例:
-- DML : 更新数据 - update
-- 1. 将 emp 表的ID为1员工 姓名name字段更新为 '张三'
update emp set name = '张三' where id = 1;
-- 2. 将 emp 表的所有员工的 入职日期(entry_date) 更新为 '2010-01-01'
update emp set entry_date = '2010-01-01';
delete:
-- 删除数据
delete from 表名
[where 条件];
语法示例:
-- DML : 删除数据 - delete
-- 1. 删除 emp 表中 ID为1的员工
delete from emp where id = 1;
-- 2. 删除 emp 表中的所有员工
delete from emp;
三、总结
在关系型数据库中,SQL 语言根据功能可以分为多个子集,其中 DDL(Data Definition Language,数据定义语言) 和 DML(Data Manipulation Language,数据操作语言) 是最常用的两部分,下一篇博客我再对DQL进行总结