SQL语句

1. DDL(Data Definition Language,DDL)-操作数据库

数据定义语言(Data Definition Language,DDL):DROP、CREATE、ALTER等语句;
数据库定义语言。主要用于定义数据库、表、视图、索引和触发器等。

  • CREATE语句主要用于创建数据库、创建表、创建视图。
  • ALTER语句主要用于修改表的定义,修改视图的定义。
  • DROP语句主要用于删除数据库、删除表和删除视图等。

语句

  1. 查询所有数据库:
    show databases;
  2. 创建数据库
    create database 数据库名称;
  3. 如果不存在则创建数据库
    create database if not exists 数据库名称;
  4. 删除数据库
    drop database 数据库名称;
  5. 数据库存在的时候删除数据库
    drop database if exists 数据库名称;
  6. 使用数据库
    use 数据库名称;
  7. 查询当前正在使用的数据库:
    select database();

2. 数据操作语言(Data Manipulation Language,DML)

数据操作语言(Data Manipulation Language,DML):INSERT、UPDATE、DELETE语句;
数据库操作语言。主要用于插入数据,更新数据,删除数据。

  • INSERT语句用于插入数据,
  • UPDATE语句用于更新数据,
  • DELETE语句用于删除数据。

数值类型

type comment
tinyint 小整数型,占1个字节
int 大整数型,占4个字节
double 浮点类型

日期类型

type comment
date 日期值,只包含年月日
datetime 混合日期和时间值,包含年月日时分秒

字符串

type comment
char 定长字符串
varchar 变长字符串

语句

  1. 查询表
    show tables;
  2. 查询表结构
    desc 表名称
  3. 创建表
	create table 表名称(
			字段名1 数据类型,
			字段名2 数据类型,
			...
			字段名n 数据类型
	);
  1. 删除表
    drop table 表名
  2. 删除表如果表存在
    drop table if exists 表名;
  3. 修改表名
    alter table tablename rename to newtablename;
    7.增加列
    alter table 表名 add 列名 数据类型;
  4. 修改列的数据类型
    alter table 表名 modify 列名 新数据类型;
  5. 修改列的数据列行和列名
    alter table 表名 change 列名 新列名 新数据类型;
  6. 删除列
    alter table 表名 drop 列名;

DML- 增删改数据

  1. 给指定列插入数据
    insert into 表名(列名1,列名2...) values(值1,值2...);
    批量
    insert into 表名(列名1,列名2...) values(值1,值2...),(值1,值2...),(值1,值2...)...;

  2. 给所有列添加数据
    insert into 表名 values(值1,值2...);
    批量
    insert into 表名 values(值1,值2...),(值1,值2...),(值1,值2...)...;

  3. 修改表数据
    alter table set 列名1=值1,列名2=值2...[where 条件];

  4. 删除表数据
    delete from 表名 [where 条件];

3. DQL(Data Query Language)- 数据的查询操作

    SELECT
    	字段列表
    FROM
    	表名列表
    WHERE
    	条件列表
    GROUP BY
    	分组字段
    HAVING
    	分组后条件
    ORDER BY
    	排序字段
    LIMIT
    	分页限定

查询语句
select 字段列表 from 表名 where 条件列表;

运算符 功能描述
> < = ! 大于 小于 等于 不等于
between…and… 在这个范围之内
in(…) 多选一
is null / is not null 是null / 不是null
and 或 && 并且
or 或 || 或者

聚合函数

通常对列进行的操作

count(列名) 统计数量(一般选用不为null的列)
max(列名) 最大值
min(列名) 最小值
sum(列名) 求和
avg(列名) 平均值
select name,english 英语成绩 from stu;
select name,english as 英语score from stu;

select * from stu where age>20;
select * from stu where age in(18,20,21);
select * from stu where name like '%张%';
select * from stu order by math DESC;

select count(id) from stu;-- 6
select count(english) from stu; -- 5. Null 值会被忽略

-- 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组:
select gender, avg(math),count(*) from stu where math > 70 group by gender;

-- 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的
-- where 和 having 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。所以,where 不能对聚合函数进行判断,having 可以。
select gender, avg(math),count(*) from stu where math > 70 group by gender having count(*) >= 2;

约束

约束是作用于表中列上的规则,用于限制加入表的数据。

约束类型功能
-- 非空约束 NOT NULL 保证列中所有的数据不能有null值
-- 唯一约束 UNIQUE 保证列中所有数据各不相同主键约束
-- PRIMARY KEY 主键是一行数据的唯一标识,要求非空且唯一检查约束
-- CHECK 保证列中的值满足某一条件默认约束
--DEFAULT 保存数据时,未指定值则采用默认值外键约束 FOREIGN KEY外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性

-- 删除表
DROP TABLE IF EXISTS emp;
DROP TABLE IF EXISTS dept;
-- 部门表
CREATE TABLE dept(
id int primary key auto_increment,
dep_name varchar(20),
addr varchar(20)
);
-- 员工表
CREATE TABLE emp(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int,
-- 添加外键 dep_id,关联 dept 表的id主键
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
);


隐式内连接:select * from emp,dept where dep_id=did;
显式内连接: select * from emp inner join dept on dep_id=did;
image

左外连接:
select * from emp left outer join dept on dep_id=did;
image
image

右外连接:
select * from emp right outer join dept on dep_id=did;

子查询

子查询语句结果是单行单列,子查询语句作为条件值,使用 = != > < 等进行条件判断,例如查询员工中工资大于小李的员工信息:

select * from emp where dep_id in (select did from dept where dname='研发部' or dname= '财务部');

子查询语句结果是多行多列,子查询语句作为虚拟表,例如查询员工中工资大于3000的员工的信息和部门信息:
select * from (select * from emp where salary>3000) t1, dept where t1.dep_id=dept.did;

事务

MySQl 事务具有四大特征,分别是:

原子性: 事务是不可分割的最小操作单位,要么同时成功,要么同时失败
一致性 :事务完成时,必须使所有的数据都保持一致状态
隔离性: 多个事务之间,操作的可见性
持久性: 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

START TRANSACTION;
或者
BEGIN;

commit;

Rollback;

文章转自:
链接:https://juejin.cn/post/7190306988939542585

posted @   肥梁  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示