美文网首页
基础语法复习——SQL

基础语法复习——SQL

作者: 哈尼橘橘 | 来源:发表于2019-03-28 20:22 被阅读0次

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

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

    相关文章

      网友评论

          本文标题:基础语法复习——SQL

          本文链接:https://www.haomeiwen.com/subject/anocbqtx.html