SQL语言


一、SQL语言的介绍

SQL(Structured Query Language):结构化查询语言,其实就是定义了操作所有关系型数据库的一种规则。

(1)通用语法规则:
sql语言可以单行或者多行书写,以分号结尾
可以使用空格和缩进来增强语句的可读性
Mysql数据库的SQL语句不区分大小写,关键字建议使用大写
单行注释:–注释内容 ##注释内容(Mysql特有)
多行注释:/注释内容*/
(2)SQL的分类:
DDL:数据库定义语句。用来操作数据库,表,列等。
DML:数据操作语言。用来对数据库中表的数据进行增删改。
DQL:数据查询语言。用来查询数据库中表的记录(数据)。
DCL:数据控制语言。用来定义数据库的访问权限和安全级别,及创建用户。

二、DDL

1.查询与创建数据库

代码如下(示例):

查询所有数据库:SHOW DATABASES;
查询数据库的创建语句:SHOW CREATE DATABASES 数据库名称;
创建数据库:CREATE DATABASE 数据库名称;
创建数据库(判断,如果不存在则创建):CREATE DATABASES IF EXISTS 数据库名称
创建数据库(指定字符集):
CREATE DATABASES 数据库名称 CHARACTER SET 字符集名称;

2.修改、删除、使用数据库

修改数据库(修改字符集)
ALTER DATASETS 数据库名称 CHARACTER SET 字符集名称;
删除数据库
DROP DATABASE 数据库名称;
删除数据库(判断,如果存在则删除)
DROP DATABASE IF EXISTS 数据库名称;
使用数据库
USE 数据库名称;
查看当前使用的数据库
SELECT DATABASE();

3.查询和创建数据表

1.查询所有的数据表
SHOW TABLES;
查询表结构
DESC 表名;
查询表字符集
SHOW TABLE STATUS FROM 库名 LIKE '表名';
2.创建数据表
CREATE TABLE 表名(
	列名 数据类型 约束;
	...
	列名 数据类型 约束;
)
数据类型有
int 整数类型;double 小数类型;
date:日期类型.包含年月日,格式yyyy-MM-dd;datetime:日期类型.包含年月日时分秒,格式yyyy-MM-dd HH:mm:ss;
timestamp:时间戳,同datetime,如果不给该列赋值、或赋值为null,则默认使用当前系统时间自动赋值.
varchar:字符串类型


4.修改和删除数据表

1.修改表名
ALTER TABLE 表名 RENAME TO 新表名;
修改表的字符集
ALTER TABLE 表名 CHARACTER SET 字符集名称
单独添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
修改某列的数据类型
ALTER TABLE 表名 MODIFY 列名 新数据库类型;
修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
删除某一列
ALTER TABLE 表名 DROP 列名;
2.删除数据表
DROP TABLE 表名;
删除数据表(判断,如果存在则删除)
DROP TABLE IF EXISTS 表名;


三、DML

1.新增表数据

给指定列添加数据
INSERT INTO 表名 (列名1,列名2,列名3,..,)VALUES(1,2);
给全部列添加数据
INSERT INTO 表名 VALUES (1,值2);
批量添加数据
INSERT INTO 表名(列名1,列名2,...)VALUES(1,2,...),(1,2,...),...;
INSERT INTO 表名 VALUES(1,2,...),(1,2,...),...;
列名和值的数量以及数据类型要对应,除了数字类型,其他数据类型的数据都需要加引号(单双引都行,推荐单引)

2.修改和删除表数据

(修改删除后都要加条件,不然都会被删除修改)
修改表中数据
UPDATE 表名 SET 列名1=1,列名2=2,列名3=3,...[WHERE 条件];
删除表中的数据
DELETE FROM 表名 [WHERE 条件];

四、DQL

1.数据查询

查询全部的表数据
SELECT * FROM 表名
查询指定字段的表数据
SELECT 列名1,列名2,...FROM 表名;
去除重复查询
SELECT DISTINCT 列名1,列名2,列名3,... FROM 表名;
计算列的值(四则运算)
SELECT 列名1 运算符(+-*/)
起别名查询
SELECT 列名 AS 别名 FROM 表名;

如果某一列为NULL,可以进行替换
ifnull(表达式1,表达式2)
表达式1:想替换的列
表达式2:想替换的值

2.条件查询
查询条件分类
(> ,<, >=,<=,=,<>或者!=)比较运算
BETWEEN…AND…:在某个范围之内(都包含)
IN(…):多选一
LIKE 占位符:模糊查询 _单个任意字符 %多个任意字符
IS NULL:是NULL
IS NOT NULL:不是NULL
AND或&&:并且
OR或||:或者
NOT或!:非
2.聚合函数
1.聚合函数的介绍
将一列数据作为一个整体,进行纵向的计算。
2.聚合函数的分类
count(列名):统计数量(一般选用不为null的列)
max(列名):最大值
min(列名):最小值
sum(列名):求和
avg(列名):平均值
2.聚合函数查询语法
SELECT 函数名(列名)FROM 表名[WHERE条件]

3.排序查询
语法
SELECT 列名列表 FROM 表名[WHERE 条件]ORDER BY 列名 排序方式,列名 排序方式,…;
排序方式:ASC-升序,DESC-降序
如果有多个排序条件,只有当前边的条件值一样时,才会判断第二条件

4.分组查询
语法
SELECT 列名列表 FROM 表名
[WHERE 条件]
[GROUP BY 分组列名]
[HAVING 分组后的条件过滤]
[ORDER BY 排序列名 排序方式]

5.分页查询
语法
SELECT 列名列表 FROM 表名
[WHERE 条件]
[GROUP BY 分组列名]
[HAVING 分组后的条件过滤]
[ORDER BY 排序列名 排序方式]
LIMIT 当前页数,每页显示的条数
(当前页数=(当前页数(如1,2,3)-1)*每页显示的条数)

五、约束

1.主键约束
主键约束特点:
主键约束默认包含非空和唯一两个功能
一张表只能含有一个主键
主键一般用于表中数据的唯一标识

1.建表时添加主键约束
CREATE TABLE 表名(
	列名 数据类型 PRIMARY KEY,
	...
	列名 数据类型 约束
)

删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY;
建表后单独添加主键约束
ALTER TABLE 表名 MODIFY 列名 数据类型 PRIMARY KEY;

2.建表时添加主键自增约束
CREATE TABLE 表名(
	列名 数据类型 PRIMARY KEY AUTO_INCREMENT,(按tab按键可以自动补全关键字)
	...列名 数据类型 约束
)
删除主键自增约束
ALTER TABLE 表名 MODIFY 列名 数据类型;
建表后单独添加主键自增约束
ALTER TABLE 表名 MODIFY 列名 数据类型 AUTO_INCREMENT;
(MYSQL的自增约束,必须配合键约束一起使用)

3.建表时添加唯一约束
CREATE TABLE 表名(
	列名 数据类型 PRIMARY UNIQUE,
	...列名 数据类型 约束
)
删除唯一约束
ALTER TABLE 表名 DROP INDEX 列名;
建表后单独添加唯一约束
ALTER TABLE 表名 MODIFY 列名 数据类型 UNIQUE;

3.建表时添加非空约束
CREATE TABLE 表名(
	列名 数据类型 NOT NULL,
	...列名 数据类型 约束
)
删除非空约束
ALTER TABLE 表名 MODIFY 列名 数据类型;
建表后单独添加非空约束
ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NULL;

2.外键约束
作用:让表与表之间产生关联关系,从而保证数据的准确性。

建表时添加外键约束
CREATE TABLE 表名(
	列名 数据类型 约束,
	...
	CONSTRAINT 外键名 FOREIGN KEY (本表外键列名)PEFERENCES 主键名(主表主键列名)
);
删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
建表后单独添加外键约束
ALTER TABLE 表名 ADD
CONSTRAINT 外键名 FOREIGN KEY (本表外键列名)REFERENCES 主表名(主键列名);

外键的级联更新和级联删除
级联更新:当想把主表中的元素进行修改时,期望从表中有关联的数据也随之修改。
级联删除:当想把主表中的元素进行删除时,期望从表中有关联的数据也随之删除。

添加级联更新
ALTER TABLE 表名 ADD
CONSTRAINT 外键名 FOREIGN KEY (本表外键列名)FEFERENCES 主表名(主键列名)
ON UPDATE CASCADE;
添加级联删除
ALTER TABLE 表名 ADD
CONSTRAINT 外键名 FOREIGN KEY (本表外键列名)FEFERENCES 主表名(主键列名)
ON DELETE CASCADE;
同时添加级联更新和级联删除
ALTER TABLE 表名 ADD
CONSTRAINT 外键名 FOREIGN KEY (本表外键列名)FEFERENCES 主表名(主键列名)
ON UPDATE CASCADE ON DELETE CASCADE;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值