SQL基础语句(DDL、DML、DQL操作语句)

SQL常用语句(单表操作)
1.SQL概述

​ SQL(Structured Query Language)结构化查询语言 : 结构化查询语言是一种特定目的编程语言,用于管理关系数据库管理系统(RDBMS),或在关系流数据管理系统(RDSMS)中进行流处理。

ps:就是对数据库操作的语言.

https://zh.wikipedia.org/zh-cn/SQL

2.SQL常用语句
2.1 SQL语句分类

​ 1.DDL(Data Definition Language)数据定义语言定义(创建) 数据库,数据表及其结构
​ 2.DML(Data Manipulation Language)数据操作语言新增,修改,删除,查询 数据. (java开发工程师数据库操作语言)
​ 3.DQL(Data Query Language)数据查询语言(民间称呼)查询数据. (java开发工程师面试中数据库考题)
​ 4.DCL(Data Control Language)数据控制语言创建账号,并授予访问权限.
​ 5.TCL(Transaction Control Language)事务控制语言事务处理的管理.

2.2 注释语句

​ 单行注释: --空格 需要注释的语句
​ 多行注释: /* 需要注释的语句 */

2.3 登陆连接

​ SQLyog:图形化操作
​ CMD命令行: mysql -uroot -p (已配置环境变量)

3.DLL操作语句
3.1 DLL数据库操作语句(CRUD)
  1. 数据库操作
      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();-- 查看当前使用的数据库

3.2 DDL操作数据表
  1. 创建表
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 "记录修改时间"
);
  1. 复制表
CREATE TABLE stu03 LIKE stu02;-- 复制表的目录结构
  1. 查看表
SHOW TABLES;--查看创建的所有表
SHOW CREATE TABLE stu02;-- 查看stu02的创建语句
DESC stu07;--查询表结构
  1. 修改表
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;-- 删除表
4.DML增删改操作语句
4.1 DML操作表中的数据
  1. 添加数据
INSERT INTO stu02(id,NAME,age) VALUE (1,"张无忌",18);-- 向表中添加一行数据
INSERT INTO stu02 VALUES(2,"赵敏",17,99.9,NULL,NULL);-- 默认向表中添加一行数据
  1. 删除数据
DELETE FROM stu02 WHERE id=1; -- 逐行删除数据
TRUNCATE TABLE stu02; -- 格式化数据后复制表头
  1. 修改数据
UPDATE stu01 SET uname="mack"; -- 将stu02表中uname值改为mack
UPDATE stu02 SET age= 17 WHERE id=2; -- 将stu02中id=2的age改为17
  1. 查询数据
SELECT * FROM stu02; -- 查看表的所有数据
  • 蠕虫复制

    INSERT INTO student2 SELECT * FROM stu01; -- 将表stu01的数据复制到student2中
    
5. DQL数据库查询语言
5.1 DQL简单查询
  1. 简单查询

    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,usex,ubirthday FROM student2 AS s;  -- 表student2的别名为s进行查询(用于多表查询)
    SELECT DISTINCT uname,usex FROM student2; -- 重复值多个字段比较
    
5.2 DQL语句增强
  1. 条件查询

    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之间的数据行
    
  2. 模糊查询

    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字段中包含邦的字段 _ 通配符代表任意的一个字符
    
  3. 排序

    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相同的值进行升序排列;
    
  4. 聚合函数

    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;-- 查询数学成绩最小值
    
  5. 分组

    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的`男`这组数据显示出来
    
  6. 其它

    SELECT * FROM student3 LIMIT 2,6; -- 我们可以认为跳过前面2条,取6条数据
    
  7. 查询顺序

     select distinct *或者字段或者聚合 from 表名 where 条件 and 条件 或 btween 条件 或 or 条件  或 in 条件 group by 字段 having 条件 order by 字段 asc/desc limit a,b
    
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值