SQL基础语法操作详解

什么是SQL?

SQL (Structured Query Language)即“结构化查询语言”,是一种针对于关系型数据库的操作语言,常见关系型数据库由MySQL、Oracle、SQL Server等。

SQL语言分类

  • DDL(Data Definition Language):即数据定义语言,主要用来定义数据库的对象:库、表、列等。
  • DQL(Data Query Language):数据查询语言,主要用来查询数据。
  • DML(Data Manipulation Language):数据操作语言,用来定义数据库记录。
  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
SQL基础语法
  • SQL语法中关键字不区别大小写,建议使用大写
  • 可以用空格和缩进来来增强语句的可读性
  • SQL语句可以单行或多行书写,以分号结尾

SQL基本操作

创建数据库
CREATE DATABASE 数据库名;
该方法是创建未创建的数据库如果这个数据已经存在会报错
删除数据库
DROP DATABASE 数据库名;
查看当前所有数据库
SHOW DATABASES;
在这里插入图片描述

切换数据库
USE 数据库名;
显示数据库下的所有表格
SHOW TABLES;
使用该指令前应当先切换数据库
在这里插入图片描述
创建表
create table 表名( 列名 列数据类型, 列名 列数据类型, ...... )

显示表结构
desc 表名;
在这里插入图片描述

查看当前数据库
select database();
修改数据库编码
ALTER DATABASE 数据库1 CHARACTER SET utf8;
修改数据库mydb1的编码为utf8

强调
路径分隔符

  • Windows 系统路径分隔符 \
  • Linux 系统路径分隔符 /

数据类型

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:时间戳类型;

操作表

创建表

CREATE TABLE 表名(
  列名 列类型,
  列名 列类型,
  ......
);

创建person表

CREATE TABLE person(
  sno int,
  name varchar(10),
  gender varchar(2),
  age int,
  birthdat date
);

查看表结构

DESC  表名;

删除表

DROP  TABLE  表名;

修改表

添加列 给person表添加class列

ALTER TABLE person ADD(class VARCHAR(10));

修改列的数据类型 修改person表中gender数据类型修改为CHAR(2)

ALTER TABLE person MODIFY gender CHAR(2);

修改列名 修改person表中gender列为sex

ALTER TABLE person CHANGE gender sex CHAR(2);

删除列 删除person表的class列

ALTER TABLE person DROP class;

修改表名称 修改person表名称为stu

ALTER TABLE person RENAME TO stu;

插入数据

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

给stu表的sid name age gender列添加数据

INSERT INTO stu(sid, name,age,gender) VALUES('1001', '李明, 23, 'male');

当没有指定要插入的列,表示按创建表时列的顺序插入所有列的值

INSERT INTO 表名 VALUES(1,2,);

创建一个stu表并向里面插入数据

CREATE TABLE stu (
	sid	CHAR(6),
	name VARCHAR(50),
	age INT,
	gender VARCHAR(50)
);
INSERT INTO stu VALUES('S_1001', 'liuYi', 35, 'male');
INSERT INTO stu VALUES('S_1002', 'chenEr', 15, 'female');
INSERT INTO stu VALUES('S_1003', 'zhangSan', 95, 'male');
INSERT INTO stu VALUES('S_1004', 'liSi', 65, 'female');
INSERT INTO stu VALUES('S_1005', 'wangWu', 55, 'male');
INSERT INTO stu VALUES('S_1006', 'zhaoLiu', 75, 'female');
INSERT INTO stu VALUES('S_1007', 'sunQi', 25, 'male');
INSERT INTO stu VALUES('S_1008', 'zhouBa', 45, 'female');
INSERT INTO stu VALUES('S_1009', 'wuJiu', 85, 'male');
INSERT INTO stu VALUES('S_1010', 'zhengShi', 5, 'female');
INSERT INTO stu VALUES('S_1011', 'xxx', NULL, NULL);

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

修改数据

UPDATE 表名 SET 列名1=1, … 列名n=值n [WHERE 条件];

删除数据

删除stu表中sid为1001这一项

DELETE FROM stu WHERE sid= '1001';

这里的where是可选的,表示条件,即给满足条件的列修改数据

DELETE FROM 表名 [WHERE 条件];
TRUNCATE TABLE 表名;

TRUNCATE和DELETE都可以删除表的所有记录,但原理不同。DELETE的效率没有TRUNCATE高,TRUNCATE是先DROP TABLE,再CREATE TABLE,而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的。

数据查询

数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。

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

基础查询

查询所有列

SELECT * FROM 表名;

* :通配符,表示所有列

查询指定列

SELECT 列名1, 列名2, …列名n  FROM  表名;

条件查询

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符

= != <> < <= > >=
between...and... 在两个值之间
in(集合) 在集合范围内
is NULL 是否为空值
or 或关系
and 与关系
NOT 取反

查询性别为女,并且年龄小于50的记录

SELECT * FROM stu 
WHERE gender='female' AND age<50;

查询学号不是S_1001,S_1002,S_1003的记录

SELECT * FROM stu 
WHERE sid NOT IN('S_1001','S_1002','S_1003');

模糊查询

 SELECT 字段 FROMWHERE 某字段 Like 条件;

其中关于条件,SQL 提供了两种匹配模式
% 表示0或多个字符
_ 表示任意单个字符

查询姓名以“陈”开头的学生记录

SELECT * 
FROM stu
WHERE name LIKE '陈%';

字段控制查询

去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如stu表中name字段就存在相同的记录,去掉重复用DISTINCT

SELECT DISTINCT class FROM stu;

另外 IFNULL(列名,值) 可以将Null转换成指定的值

AS可以给列添加别名

统计表中的记录数
SELECT count(*) as '总记录数' FROM stu;

排序

对查询结果进行排序 关键字是 order by

select 列 from 表名 [where 条件] order by 列名 asc/desc 升序/降序;

默认为升序

聚合函数

  • count(列名) 统计指定列不为NULL的记录行数
  • max(列名)/min(列名) 计算制定列的最大值和最小值
  • sum(列名) 求和
  • avg(列名) 求平均值
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值