基础语法复习——SQL

SQL

Structured Query Language,结构化查询语言,可用于访问和处理数据库。
基本操作:增删改查。
大小写不敏感,每一个命令用分号结尾。

为了更好的复习,所以这里就用命令行,而不用GUI

  • 在所有操作之前的准备工作当然是要先安装配置好SQL环境
  • 命令行登陆mysql -h localhost -u root -p
    这样就完成了最开始的准备工作

基础语法

show databases; 查看所有的数据库


use Databases_name; 选择需要的数据库

show tables; 查看所选择的数据库中所有的表

create database db_name; 创建新的数据库

create table table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
...
);

创建新的表


增(INSERT INTO)

语法:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

删(DELETE)

语法:
DELETE FROM table_name WHERE some_column = some_value; 删除指定表中的某条数据
如果不加后面的WHERE语句,就会把整个表都删除。

改(UPDATE)

语法:
UPDATE table_name SET column1 = value1, column2=value2, ... WHERE some_column=some_value; 更新某个表中的某条数据
如果不加WHERE语句,会把整个表的该字段都更新。

查(SELECT)

SELECT * FROM table_name; 查看整个表的数据

SELECT column_name1, column_name2, ... FROM table_name; 查看指定表中某几个字段的数据

运算符(AND&OR)

AND:两个条件都满足时,显示记录;
OR:只要有其中一个条件满足,就显示记录。


关键字(ORDER BY&DESC)

对查询的结果集进行排序,默认为升序,若要按降序排列,可使用DESC关键字。


进阶

因为本胖太菜了,只会一点MySQL,所以这后面都只考虑MySQL里面的情况。

通配符

通配符 描述
% 替代0个或多个字符
_ 替代一个字符
[charlist] 字符列中的任何单一字符
^[charlist]或![charlist] 不在字符列中的任何单一字符

在MySQL中,用REGEXP或NOT REGEXP运算符来操作正则表达式。(^和!都是正则表达式中的内容)
通配符%和_在下面LIKE部分做演示,这里演示后两种情况。
查找出empno中有数字2或3的信息

查找出empno中有数字3-6其中之一的信息

查找出empno中没有数字3-9任何一个数字的信息

SELECT TOP

用来规定返回的记录的数目。
并非所有的数据库系统都支持这个语句。MySQL支持LIMIT语句,Oracle使用ROWNUM。
MySQL语法:
SELECT column_name(s) FROM table_name LIMIT number;

LIKE

用在WHERE子句中,搜索某列内容中指定的内容。
语法:
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;不知道pattern意思的自己去百度
查询ename用J开头的所有员工信息:

查询ename以E/e结尾的所有员工信息:

查询ename中包含了ar字符的所有员工信息:

查询ename中以任意字符开头,以nne结尾的所有员工信息

IN

允许在WHERE子句中规定多个值。
语法:
SELECT column(s) WHERE table_name WHEREcolumn_name IN (value1, value2, ...);

如果你非要用=来去多个值的话,用or也可以实现

BETWEEN

查询介于两个值之间的数据范围内的值,值得类型可以不仅仅是数值。
语法:
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;

BETWEEN前面加上not也可以


AS

为指定表或列指定新的名字。
语法:
SELECT column_name AS new_name FROM table_name;
SELECT column_name(s) FROM table_name AS new_name;

image.png

image.png

使用AS修改的名字,是暂时的。

JOIN

基于两个或多个表之间共同的字段,用JOIN把他们的行结合起来。

INNER JOIN

语法:
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
dept表:

emp表:


结合之后:


LEFT (OUTER) JOIN

从左表(table1)返回所有的行,若右表(table2)没有匹配,则结果为NULL。
语法:
SELECT column_name(s) FROM table1 LEFT (OUTER) JOIN table2 ON table1.column_name = table2.column_name;

图源 RUNOOB

RIGHT (OUTER) JOIN

从右表(table2)返回所有的行,若左表(table1)没有匹配,则结果为NULL。
语法:
SELECT column_name(s) FROM table1 RIGHT (OUTER) JOIN table2 ON table1.column_name = table2.column_name;

图源 RUNOOB

哪边的JOIN,哪边的表就会被全部显示。

FULL (OUTER) JOIN

只要左右两表其中一个存在匹配,就返回行。
语法:
`SELECT column_name(s) FROM table1 FULL (OUTER) JOIN table2 ON table1.column_name = table2.column_name;``

图源 RUNOOB

UNION

用于联合查询,联合多个SELECT语句的结果集,结果集中的列名等于UNION中第一个SELECT语句中的列名。
UNION内部的每个SELECT语句结果必须列数相同,列的数据类型、顺序也必须相同。
语法:
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; 默认将重复的值合并为一个。
SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2; 允许重复的值。

不管是啥基础语言,都还是要动手实践一下才会更好呐

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 4,999评论 0 7
  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 5,876评论 0 10
  • 基础语句 1. 创建数据库 CREATE DATABASE database_name 2. 删除数据库 drop...
    敲代码的本愿阅读 4,638评论 1 7
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 12,373评论 5 116
  • 安武林的《在厕所读书》中记录了他收藏了很多作家的签名书籍,他用了四个字形容对这些藏书的想法——风光无限。 回想起来...
    懿轮明月阅读 3,890评论 0 3

友情链接更多精彩内容