美文网首页MySQL数据库
MySQL——基本语句

MySQL——基本语句

作者: SolaTyolo | 来源:发表于2017-10-07 22:38 被阅读0次

    Mysql-基础语法

    导语

    本博文主要是简述选择数据库和对表内容的增、删、改和查的一些基本语法

    USE

    语法:

    • USE databaseName;打开名为databaseName的数据库

    SHOW

    语法:

    • SHOW DATABASES;返回可用库的列表
    • SHOW TABLES;返回当前库内的可用表的列表
    • SHOW COLOMNS FROM tableName;返回tableName表的行信息
    • SHOW CREATE TABLE;查看数据表的创建语句

    tips : Mysql支持用DESCRIBE COLUMNS; 来代替SHOW COLOMNS FROM tableName;
    更多SHOW用法可以用help SHOW来查看

    CREATE

    语法:

    CREATE TABLE `table`
    (
        id int NOT NULL AUTO_INCREMENT,
        name char(50) NOT NULL DEFAULT 'hello',
        phone char(20) NULL,
        PRIMARY KEY (id)
        FOREIGN KEY(phone) REFERENCES othertable(id)
    )ENGINE=InnoDB;
    

    创建了一个名为table的表,拥有三列:id列是整形数据、非空、自增,name列字符型数据、非空、默认值为hello,phone字符型数据,可空。

    tips:

    • 通常仅在表不存在是创建:CREATE TABLE IF NOT EXISTS table(···)
    • 在创建表时用:PRIMARY KEY(id)来创建主键,主键值必须唯一,主键也可以是多列联合
    • AUTO_INCREMENT表示自增,通常和单列主键配合使用,一个表只能有一个自增列
    • DEFAULT来指定默认值
    • NULL允许空值,插入行数据时允许不给出该列的值
    • ENGINE=InnoDB表示用InnoDB这个搜索引擎
    • FOREIGN KEY(phone) REFERENCES othertable(id)来创建外键phone指向另一个表的主键

    ALTER

    更新表结构

    语法:

    • ALTER TABLE table ADD address CHAR(100) NOT NULL;table表增加一列address
    • ALTER TABLE table DROP COLUMN phone; 删除table表的phone

    tips:

    • 删除表:DROP TABLE table;
    • 清空表: TRUNCATE TABLE table
    • 重命名表:RENAME TABLE table TO table1;

    INSERT

    语法:
    INSERT INTO table(col1,col2,···)VALUES(value1,value2,···);

    tips:

    • 如果表定义时对某行允许了空值或者设置了默认值,那INSERT操作可以省略该行
    • 因为INSERT操作是很耗时的,所以有时加入LOW_PRIORIRY降低优先级:INSERT LOW_PRIORITY INTO
    • 插入多行数据时每组值用()INSERT INTO table(col1,col2,···)VALUES(value1,value2,···),(value1,value2,···),(···);

    UPDATE

    语法:

    • UPDATE table SET name = 'abc';更新table表所有行的name值为'abc'
    • UPDATE table SET name = 'abc'[,col = 'xxx',···] WHERE id = 1;若要更新某行时要加where限定,更新多列时,每个键值对用,隔开

    DELETE

    语法:

    • DELETE FROM table; 删除table
      表中所有数据
    • DELETE FROM table where id = 1;删除指定的某行

    tips: 可用TRUNCATE TABLE table来代替DELETE FROM table,前者是直接删除表本身,再创建同名表,比后者速度快。

    SELECT

    语法:

    • SELECT colName1[,colName2···] FROM tableName;检出出某行,多行用,隔开,所有行用*表示
    DISTINCT

    表示只返回不同值

    用法 : SHOW DITINCT id FROM ···; ,DISTINCT只能放在列名最前面

    LIMIT

    限制返回数目

    用法 :

    • SELECT * FROM table LIMIT 5;返回前五行数据
    • SELECT * FROM table LIMIT 3,4;返回从第三行开始的四行数据
    • SELECT * FROM table LIMIT 4 OFFSET 3;等效于上面一句MYSQL

    ORDER BY

    关系型数据库中,如果没有明确排序顺序,检索出来的数据顺序无意义

    用法:

    • SELECT * FROM table ORDER BY id;id的升序排列,等同于ORDER BY id ASC。降序用DESC代替ASC即可
    • SELECT * FROM table ORDER BY id,name DESC;先按id升序排序,若id相同时按name的降序排序

    tips:

    • 通常字典排序是不区分大小写的
    • order by子句要在from子句之后,若是和limit联用,要放limit之前。与where联用,放where之后。

    WHERE

    根据where子句来对检索进行过滤

    用法:

    • SELECT * FROM table WHERE id = 1;此处的操作符有=!=>>=<<=,匹配字符串的时候要加''
    • SELECT * FROM table WHERE id BETWEEN 1 AND 5;可以用BETWEEN来限定范围
    • SELECT * FROM table WHERE id IN (1,2,3,4,5);可以用IN来限定范围
    • SELECT * FROM table WHERE id IS NULL;空值检查,返回的是id为空的行,而非id为0的行

    tips:

    • 可以用ANDOR来连接多个where子句,形成高级where
    • 若是有ANDOR组成的高级WHERE时,会先优先处理AND的语句的组合,所以为了避免组合错误应该使用()来明确组合,消除歧义。
    • WHERE子句中用NOT来否定之后所跟的任何条件

    LIKE

    LIKE后面跟的搜索模式利用通配符匹配

    %(匹配任何字符出现任意次)

    用法:

    • SELECT * FROM table where name LIKE 'base%'检索以base开头的name
    • SELECT * FROM table where name LIKE '%base%'检索含有basename
    • SELECT * FROM table where name LIKE 'ba%se'检索以ba的开头,以se结尾的name%表示任意字符,也包括0字符。
    _(匹配单字符)

    用法:

    • SELECT * FROM table where name LIKE 'base_'

    tips:

    • 通配符的效率较低,要尽可能避免使用

    相关文章

      网友评论

        本文标题:MySQL——基本语句

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