基础语法复习——SQL

2019-03-28  本文已影响0人  哈尼橘橘

SQL

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

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

基础语法

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; 允许重复的值。

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

上一篇下一篇

猜你喜欢

热点阅读