前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL基础操作

SQL基础操作

作者头像
木瓜煲鸡脚
发布2019-07-22 16:14:15
7450
发布2019-07-22 16:14:15
举报
文章被收录于专栏:Jasper小笔记Jasper小笔记
  1. 什么是SQL
  2. SQL常用数据类型
  3. SQL功能分类
  4. DDL
  5. DML
  6. DQL

什么是SQL

  • SQL是Structured Quevy Language(结构化查询语言)的缩写。
  • SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。
  • 在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。

SQL常用数据类型

  • int:整型
  • double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
  • char:固定长度字符串类型;char(10) 'abc '
  • varchar:可变长度字符串类型;varchar(10) 'abc'
  • text:字符串类型;
  • blob:二进制类型;
  • date:日期类型,格式为:yyyy-MM-dd;
  • time:时间类型,格式为:hh:mm:ss
  • datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
  • 在mysql中,字符串类型和日期类型都要用单引号括起来。

SQL功能分类

  • DDL:数据定义语言
    • 用来定义数据库对象:创建库,表,列等。
  • DML:数据操作语言
    • 用来操作数据库表中的记录
  • DQL:数据查询语言
    • 用来查询数据
  • DCL:数据控制语言
    • 用来定义访问权限和安全级别

DDL

创建数据库

代码语言:javascript
复制
create database 数据库名  (character set utf8);

修改数据库

代码语言:javascript
复制
alter database 数据库名 (charactor set utf8);

创建表

代码语言:javascript
复制
CREATE TABLE student(
  sno VARCHAR(10),
  sname VARCHAR(10),
  sex varchar(2) CHECK(sex='男' or sex='女')
);

添加一列

代码语言:javascript
复制
ALTER TABLE 表名 ADD 列名 数据类型;

修改一个表的字段类型

代码语言:javascript
复制
ALTER TABLE 表名 MODIFY 字段名 数据类型;

修改表名

代码语言:javascript
复制
RENAME TABLE 原始表名 TO 要修改的表名; 

修改表的字符集为gbk

代码语言:javascript
复制
ALTER TABLE 表名 CHARACTER SET 字符集名称;

修改表的列名

代码语言:javascript
复制
ALTER TABLE 表名 CHANGE 原始列名 新列名 数据类型;

查看表的字段信息

代码语言:javascript
复制
DESC 表名;

查看表的创建细节

代码语言:javascript
复制
SHOW CREATE TABLE 表名;

删除一列

代码语言:javascript
复制
ALTER TABLE 表名 DROP 字段名;

删除表

代码语言:javascript
复制
DROP TABLE 表名;

DML

查询表中的所有数据

代码语言:javascript
复制
SELECT * FROM 表名;

插入操作

代码语言:javascript
复制
INSERT INTO 表名(列名1,列名2 ...)VALUE (列值1,列值2...);

批量插入

代码语言:javascript
复制
INSERT INTO 表名(列名1,列名2 ...)VALUES (列值1,列值2...),(列值1,列值2...);

更新操作

代码语言:javascript
复制
UPDATE 表名 SET 列名1=列值1,列名2=列值2 ... WHERE 列名=值

删除操作

代码语言:javascript
复制
DELETE FROM 表名 (WHERE 列名=值);
TRUNCATE TABLE 表名 (WHERE 列名=值);

DELETED 与TRUNCATE的区别

  • DELETE 删除表中的数据,表结构还在;
  • TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。执行速度比DELETE快。

DQL

查询所有列

代码语言:javascript
复制
SELECT * FROM 表名;

结果集

  • 数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
  • 通过查询语句查询出来的数据以表的形式展示我们称这个表为虚拟结果集。存放在内存中。
  • 查询返回的结果集是一张虚拟表。

查询指定列的数据

代码语言:javascript
复制
SELECT 列名1,列表2... FROM 表名;

条件查询

代码语言:javascript
复制
select * from 表名 where 字段 运行符用法;

where name = "张三";
where age < 20 ;
where age between 18 and 30;
where name in("张三","李四","王五");

条件查询运行符及关键字

=(等于)、!=(不等于)、<>(不等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于);

BETWEEN…AND;值在什么范围

IN(set);固定的离散范围

IS NULL(为空)、IS NOT NULL(不为空)

AND与、OR或、NOT非

模糊查询

使用like关键字

通配符

_ :任意一个字符

%:任意0~n个字符

代码语言:javascript
复制
where name like "带有通配符";

where name like "张%";  //"张"开头的
where name like "张__"; // "张"开头的并且三个字
where name like "%张%"; // 含有"张"的
where name like "___张%";// 第四位是"张"的 

字段控制查询

  • 去除重复记录
代码语言:javascript
复制
SELECT DISTINCT name FROM students;
  • 把查询字段的结果进行运算,必须都要是数据型
代码语言:javascript
复制
SELECT *,字段1+字段2 FROM 表名;
/*
 列有很多记录的值为NULL,
 因为任何东西与NULL相加结果还是NULL,所以结算结果可能会出现NULL。
 下面使用了把NULL转换成数值0的函数IFNULL
*/
SELECT *,age+IFNULL(score,0) FROM students;
  • 对查询结果起别名
代码语言:javascript
复制
/* 
 在上面查询中出现列名为sx+IFNULL(yw,0),这很不美观,
 现在我们给这一列给出一个别名,为total
 AS可以省略
*/
SELECT *, yw+IFNULL(sx,0) AS total FROM score;

SELECT *, yw+IFNULL(sx,0) total FROM score;

排序

  • 对查询的结果进行排序
代码语言:javascript
复制
/*
使用关键字ORDER BY
排序类型
升序ASC
从小到大  默认
降序DESC
从大到小
*/
select * from student order by age desc;

聚合函数

对查询的结果进行统计计算

代码语言:javascript
复制
/*
常用聚合函数
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
*/

SELECT COUNT(*) AS studentNumber FROM student;// 查询有几条student记录

SELECT COUNT(grade)  FROM stduent;// 有成绩的学生多少条

SELECT COUNT(*) FROM student WHERE grade > 60;// 成绩大于60的学生有多少

SELECT COUNT(*)  FROM student WHERE grade-IFNULL(penalty,0) > 60;// 成绩减去罚分超过60的

SELECT SUM(grade) FROM student;// 全体学生总分

SELECT AVG(grade) FROM student;// 平均分

SELECT MAX(grade), MIN(grade) FROM student;// 两列最高和最低分
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT那个小笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档