SQL 概述
1、什么是 SQL
==SQL(Structured Query Language)==是“结构化查询语言”,它是对关系型数据库的操作语言。它可以应用到所有关系型数据库中,例如:MySQL、Oracle、SQL Server 等。SQL 标准(ANSI/ISO)有:
SQL-92:1992 年发布的 SQL 语言标准;
SQL:1999:1999 年发布的 SQL 语言标签;
SQL:2003:2003 年发布的 SQL 语言标签;
这些标准就与 JDK 的版本一样,在新的版本中总要有一些语法的变化。不同时期的数据库对不同标准做了实现。
虽然 SQL 可以用在所有关系型数据库中,但很多数据库还都有标准之后的一些语法,我们可以称之为“方言”。例如 MySQL 中的 LIMIT 语句就是 MySQL 独有的方言,其它数据库都不支持!当然,Oracle 或 SQL Server 都有自己的方言。
2、语法要求
SQL 语句可以单行或多行书写,以分号结尾;
可以用空格和缩进来来增强语句的可读性;
关键字不区别大小写,建议使用大写;
SQL 分类
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(Data Query Language):数据查询语言,用来查询记录(数据)
DDL:数据定义语言
基本操作
查看所有数据库:show databases;
切换数据库:use mydb1,切换到 mydb1 数据库;
1.操作数据库
创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1;
例如:CREATE DATABASE mydb1,创建一个名为 mydb1 的数据库。如果这个数据已经存在,那么会报错。
例如 CREATE DATABASE IF NOT EXISTSmydb1,在名为 mydb1 的数据库不存在时创建该库,这样可以避免报错。
删除数据库:DROP DATABASE [IF EXISTS] mydb1;
例如:DROP DATABASE mydb1,删除名为 mydb1 的数据库。如果这个数据库不存在,那么会报错。DROP DATABASE IF EXISTS mydb1,就算 mydb1不存在,也不会的报错。
修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8
修改数据库 mydb1 的编码为 utf8。注意,在 MySQL 中所有的 UTF-8 编码都
不能使用中间的“-”,即 UTF-8 要书写为 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.操作表
创建表
例如,创建stu表
查看表的结构
DESC 表名;
删除表
DROP TABLE 表名;
修改表
添加列:给 stu 表添加 classname 列
ALTER TABLE stu ADD (classname varchar(100));
修改列的数据类型:修改 stu 表的 gender 列类型为 CHAR(2)
ALTER TABLE stu MODIFY gender CHAR(2);
修改列名:修改 stu 表的 gender 列名为 sex
ALTER TABLE stu change gender sex CHAR(2);
删除列:删除 stu 表的 classname 列
ALTER TABLE stu DROP classname;
修改表名称:修改 stu 表名称为 student
ALTER TABLE stu RENAME TO student;
DML:数据操作语言
1.插入数据
语法 1:
INSERT INTO 表名(列名 1,列名 2, …) ;
语法 2:
INSERT INTO 表名 VALUES(值 1,值 2,…);
因为没有指定要插入的列,表示按创建表时列的顺序插入所有列的值:
注意:所有字符串数据必须使用单引用!
2.修改数据
语法:
UPDATE 表名 SET 列名 1=值 1, … 列名 n=值 n [WHERE 条件];
3.删除数据
语法 1:
DELETE FROM 表名 [WHERE 条件];
语法 2:
TRUNCATE TABLE 表名;
两者之间的区别:
虽然 TRUNCATE 和 DELETE 都可以删除表的所有记录,但有原理不同。DELETE的效率没有 TRUNCATE 高!
TRUNCATE 其实属性 DDL 语句,因为它是先 DROP TABLE,再 CREATE TABLE。
而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)。
DCL:数据控制语言
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:数据查询语言
数据库执行 DQL 语句不会对数据进行改变,而是让数据库发送结果集给客户端。
语法:
select 列名 ----> 要查询的列名称
from 表名 ----> 要查询的表名称
where 条件 ----> 行条件
group by 分组列 ----> 对结果分组
having 分组条件 ----> 分组后的行条件
order by 排序列 ----> 对结果分组
limit 起始行, 行数 ----> 结果限定
创建数据库:Info,在 Info 下创建如下表:
学生表:stu:
雇员表:emp
版权声明:本文为CSDN博主「南梵.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_73868348/article/details/127487686
- END -
回复【50】即可领取
《MySQL经典50题》
《MySQL经典50题》部分内容
想要获取更多精彩的内容和个性化的功能吗?
快来点击菜单栏,开启新的体验吧!
如果您认为我们的公众号内容对您有帮助,请分享给您的朋友们,
并把它设为星标
⭐,方便您随时查看。