基础语法复习——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;
使用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;
RIGHT (OUTER) JOIN
从右表(table2)返回所有的行,若左表(table1)没有匹配,则结果为NULL。
语法:
SELECT column_name(s) FROM table1 RIGHT (OUTER) JOIN table2 ON table1.column_name = table2.column_name;
哪边的JOIN,哪边的表就会被全部显示。
FULL (OUTER) JOIN
只要左右两表其中一个存在匹配,就返回行。
语法:
`SELECT column_name(s) FROM table1 FULL (OUTER) JOIN table2 ON table1.column_name = table2.column_name;``
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;
允许重复的值。
不管是啥基础语言,都还是要动手实践一下才会更好呐