SQL【速成帖】

一、SQL 概述
1、什么是 SQL
SQL(Structured Query Language) 是“结构化查询语言”,它是对关系型数据库的操作语言。它可以应用到所有关系型数据库中,例如:MySQL、Oracle、SQL Server 等。

2、语法要求
SQL 语句可以单行或多行书写,以分号结尾;
可以用空格和缩进来来增强语句的可读性;
关键字不区别大小写,建议使用大写;

二、SQL 分类
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(Data Query Language):数据查询语言,用来查询记录(数据)

三、DDL(Data Definition Language):数据定义语言
基本操作
查看所有数据库:show databases;

切换数据库:use mydb1;,切换到 mydb1 数据库;

1.操作数据库
创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1;
删除数据库:DROP DATABASE [IF EXISTS] mydb1;
修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8;

2.数据类型
MySQL 与 Java、C 一样,也有数据类型MySQL 中数据类型主要应用在列上。常用类型:

  • int:整型
  • double:浮点型,例如 double(5,2)表示最多 5 位,其中必须有 2 位小数,即最大值为 999.99;
  • decimal:泛型型,在表单线方面使用该类型,因为不会出现精度缺失问题;
  • char:固定长度字符串类型;(当输入的字符不够长度时会补空格)
  • varchar:固定长度字符串类型;
  • text:字符串类型;
  • blob:字节类型;
  • date:日期类型,格式为:yyyy-MM-dd;
  • time:时间类型,格式为:hh:mm:ss
  • timestamp:时间戳类型;
    3.操作表
    创建表:CREATE TABLE 表名;
    查看表结构:DESC 表名;
    删除表:DROP TABLE 表名;
    修改表:ALTER TABLE 表名;

四、DML(Data Manipulation Language):数据操作语言

1.插入数据

INSERT INTO 表名(列名 1,列名 2, …) ;
INSERT INTO 表名 VALUES(值 1,值 2,…);

注意:所有字符串数据必须使用单引用!

2.修改数据
UPDATE 表名 SET 列名 1=值 1, … 列名 n=值 n [WHERE 条件];

3.删除数据
DELETE FROM 表名 [WHERE 条件];
TRUNCATE TABLE 表名;

五、DCL(Data Control Language):数据控制语言

1.创建用户
CREATE USER ‘用户名’@地址 IDENTIFIED BY '密码';

2.给用户授权
GRANT 权限 1, … , 权限 n ON 数据库.* TO ‘用户名’@地址;

3.撤销授权
REVOKE 权限 1, … , 权限 n ON 数据库.* FROM ‘用户名’@地址;

4.查看用户权限
SHOW GRANTS FOR ‘用户名’@地址;

5.删除用户
DROP USER ‘用户名’@地址;

6.修改用户密码(以root身份)
use mysql;
alter user '用户名'@localhost identified by '新密码';

六、DQL(Data Query Language):数据查询语言
数据库执行 DQL 语句不会对数据进行改变,而是让数据库发送结果集给客户端。

语法:

  • select 列名 ----> 要查询的列名称
  • from 表名 ----> 要查询的表名称
  • where 条件 ----> 行条件
  • group by 分组列 ----> 对结果分组
  • having 分组条件 ----> 分组后的行条件
  • order by 排序列 ----> 对结果分组
  • limit 起始行, 行数 ----> 结果限定

1.基础查询
查询所有列

SELECT * FROM 表名;
(* :通配符,表示所有列)

2.条件查询
条件查询介绍
条件查询就是在查询时给出 WHERE 子句,在 WHERE 子句中可以使用如下运算符及关键字:

  • =、!=、<>、<、<=、>、>=;
  • BETWEEN…AND;
  • IN(set);
  • IS NULL;
  • AND;
  • OR;
  • NOT;

3.模糊查询
参考正则表达式
SELECT 字段 FROM 表 WHERE 某字段 Like 条件
其中关于条件,SQL 提供了两种匹配模式:

  1. % :表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
  2. _: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字 符长度语句。

4.字段控制查询

  1. 去掉重复记录
  2. 查看雇员的月薪与佣金之和
  3. 给列名添加别名

5.排序
查询所有学生记录,按年龄升序排序
SELECT * FROM stu
ORDER BY sage ASC;
或者
SELECT * FROM stu ORDER BY sage;

查询所有学生记录,按年龄降序排序
SELECT * FROM stu
ORDER BY age DESC;

查询所有雇员,按月薪降序排序,如果月薪相同时,按编号升序排序
SELECT * FROM emp
ORDER BY sal DESC ,empno ASC;

6.聚合函数
聚合函数是用来做纵向运算的函数:

  1. COUNT():统计指定列不为 NULL 的记录行数;
  2. MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
  3. MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
  4. SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为 0;
  5. AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为 0;
    COUNT:当需要纵向统计时可以使用 COUNT()。

7.分组查询
分组查询
当需要分组查询时需要使用 GROUP BY子句,例如查询每个部门的工资和,这说明要使用部分来分组。

HAVING 子句
查询工资总和大于 9000 的部门编号以及工资和:

8.LIMIT:用来限定查询结果的起始行,以及总行数。
查询 5 行记录,起始行从 0 开始
SELECT * FROM emp LIMIT 0, 5;
注意,起始行从 0 开始,即第一行开始!

9.多表连接查询:
表连接分为内连接外连接。他们之间最主要的区别:
内连接仅选出两张表中互相匹配的记录,外连接会选出其他不匹配的记录。

select staff.name,deptname from staff,deptno where
staff.name=deptno.name;

外连接分为左连接右连接
左连接:包含左边表中所有的记录,右边表中没有匹配的记录显示为 NULL。

select staff.name,deptname from staff left join deptno onstaff.name=deptno.name;

右连接:包含右边表中所有的记录,左边表中没有匹配的记录显示为 NULL。

select deptname,deptno.name from staff right join deptno ondeptno.name=staff.name;

参考链接:https://blog.csdn.net/PILIpilipala/article/details/113798383

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值