导图社区 SQL基础语句(DDL、DML、DQL操作语句)
关于数据库SQL基础语句的思维导图,主要内容有DLL操作语句、DML增删改操作语句、DQL数据库查询语言。
编辑于2022-10-16 16:01:10 内蒙古自治区SQL基础语句(DDL、DML、DQL操作语句)
DLL操作语句
数据库操作
CREATE DATABASE IF NOT EXISTS day01d; --如果不存在创建数据库
SHOW DATABASES; --查询数据库
SHOW CREATE DATABASE day01d;-- 展示数据库day01d创建语句
ALTER DATABASE CHARACTER SET gbk;-- 修改数据库
DROP DATABASE IF EXISTS day01d;-- 删除数据库
USE day01;-- 使用库
子主题
SELECT DATABASE();-- 查看当前使用的数据库
DDL操作数据表
创建表
CREATE TABLE stu01(
id INT DEFAULT 0 COMMENT "记录唯一标识id",
uname VARCHAR(8) DEFAULT NULL COMMENT "用户姓名",
usex CHAR(1) DEFAULT "男" COMMENT "用户性别",
ubirthday DATETIME DEFAULT NULL COMMENT "出生日期",
updatetime TIMESTAMP NOT NULL COMMENT "记录修改时间"
);
复制表
CREATE TABLE stu03 LIKE stu02;-- 复制表的目录结构
查看表
SHOW TABLES;--查看创建的所有表
查看表
SHOW TABLES;--查看创建的所有表
SHOW CREATE TABLE stu02;-- 查看stu02的创建语句
DESC stu07;--查询表结构
修改表
ALTER TABLE stu02 ADD ssex CHAR(1) DEFAULT "男" COMMENT "性别";-- 添加一列
ALTER TABLE stu02 MODIFY ssex VARCHAR(10);--修改列类型
ALTER TABLE stu02 CHANGE ssex sgender CHAR(2);--修改列名
ALTER TABLE stu02 DROP insert_time; -- 删除列
ALTER TABLE stu02 CHARACTER SET gbk;-- 修改字符编码
RENAME TABLE stu02 TO stu002;-- 修改表名
DROP TABLE IF EXISTS stu002;-- 删除表
DML增删改操作语句
添加数据
INSERT INTO stu02(id,NAME,age) VALUE (1,"张无忌",18);-- 向表中添加一行数据
INSERT INTO stu02 VALUES(2,"赵敏",17,99.9,NULL,NULL);-- 默认向表中添加一行数据
删除数据
DELETE FROM stu02 WHERE id=1; -- 逐行删除数据
TRUNCATE TABLE stu02; -- 格式化数据后复制表头
修改数据
UPDATE stu01 SET uname="mack"; -- 将stu02表中uname值改为mack
UPDATE stu02 SET age= 17 WHERE id=2; -- 将stu02中id=2的age改为17
查询数据
SELECT * FROM stu02; -- 查看表的所有数据
蠕虫复制
INSERT INTO student2 SELECT * FROM stu01; -- 将表stu01的数据复制到student2中
DQL数据库查询语言
DQL简单查询
简单查询
SELECT * FROM student2; -- 查询表student2中的所有数据
SELECT uname,usex FROM student2; -- 查询表student2中的uname,usex字段
SELECT uname AS n,usex AS g FROM student2; -- 别名查询uname字段别名为n进行查询(多用于多表查询)
SELECT uname AS n,usex AS g FROM student2; -- 别名查询uname字段别名为n进行查询(多用于多表查询)
DQL语句增强
条件查询
SELECT * FROM student2 WHERE uname="jack01"; -- 查询uname字段为"jack01"的行
SELECT * FROM student2 WHERE uname = "jack" AND usex = "女"; -- 查询表student2中uname和usex字段同时为要求的值
SELECT * FROM student2 WHERE uname = "jack" OR usex = "女"; -- 查询表student2中uname="jack"或者usex="女"的值;
SELECT * FROM student2 WHERE uname IN("jack01","rose"); -- 查询表student2中uname为"jack01","rose"的数据行
SELECT * FROM student2 WHERE uname NOT IN("jack01","rose"); -- 查询表student2中uname不为"jack01","rose"的数据行
SELECT * FROM student2 WHERE score BETWEEN 30 AND 50; -- 查询score字段的值为30到50之间的数据行
模糊查询
SELECT * FROM student2 WHERE uname LIKE "jack%"; -- 模糊查询jack后包含的任意字段 % 通配符代表0个或者多个字符
SELECT * FROM student2 WHERE uname LIKE "%ck%"; -- 查询student2中uname字段包含ck的值
SELECT * FROM student2 WHERE uname LIKE "_邦%";-- 匹配uname字段中包含邦的字段 _ 通配符代表任意的一个字符
排序
SELECT * FROM student2 ORDER BY score DESC; -- 按照score降序进行排列数据
SELECT * FROM student2 ORDER BY score; -- 默认按照score升序进行排列
SELECT * FROM student2 ORDER BY score ,math ASC; -- score字段进行升序排列后,对score相同的值进行升序排列;
聚合函数
SELECT COUNT(english) FROM student3; -- 查询english学生总数不统计值为null的值
SELECT COUNT(IFNULL(english,0)) FROM student3; -- 统计english字段总数 如果english为null则用0代替
SELECT COUNT(*) FROM student3; -- 查询表中有多少行数据
SELECT COUNT(*) FROM student3 WHERE age>40;-- 查询表中有多少age>40的数据行
SELECT SUM(math) FROM student3; -- 查询数学成绩总和
SELECT AVG(math) FROM student3;-- 查询数学成绩平均值
SELECT MAX(math) FROM student3;-- 查询数学成绩最大值
SELECT MIN(math) FROM student3;-- 查询数学成绩最小值
分组
SELECT * FROM student2 GROUP BY usex; -- 将分组字段结果中相同内容作为一组
SELECT usex,SUM(score) FROM student2 GROUP BY usex; -- 按照分组结果进行聚合函数求和计算然后返回结果
SELECT usex,COUNT(*) FROM student2 WHERE age>25 GROUP BY usex; -- 查询年龄大于25岁的人,按性别分组,统计每组的人数
SELECT sex, COUNT(*) FROM student3 WHERE age > 25 GROUP BY sex HAVING COUNT(*)
>2; -- 只有分组后人数大于2的`男`这组数据显示出来
其它
SELECT * FROM student3 LIMIT 2,6; -- 我们可以认为跳过前面2条,取6条数据
查询顺序
select distinct *或者字段或者聚合 from 表名 where 条件 and 条件 或 btween 条件 或 or 条件 或 in 条件 group by 字段 having 条件 order by 字段 asc/desc limit a,b