SQL概述

  • SQL语句可以单行或者多行编写,以;结尾
  • MySQL中的SQL语句不区分大小写,关键字一般使用大写

注释

  • 单行注释:--
  • 多行注释:/* */
  • MySQL单行注释:#

操作数据库

1.创建数据库

  • 创建数据库sql -- 语法:CREATE DATABASE 数据库名; CREATE DATABASE db1_1;
  • 设置字符集sql -- 语法:CREATE DATABASE 数据库名 CHARACTER SET 字符集; CREATE DATABASE db1_1 CHARACTER SET utf8;

2.查看数据库

  • 切换数据库
    1. -- 语法:USE 数据库
    2. USE db1_1;
  • 查看当前数据库
    1. SELECT DATABASE();
  • 查询所有数据库
    1. SHOW DATABASES;
  • 查看数据库详细信息
    1. -- 语法:SHOW CREATE DATABASE 数据库名;
    2. SHOW CREATE DATABASE db1_1;

3.修改数据库

  • 修改数据库字符集
    1. -- 语法:ALTER DATABASE 数据库名 CHARACTER SET 字符集;
    2. ALTER DATABASE db1_1 CHARACTER SET utf8;

4.删除数据库

  • 删除数据库
    1. -- 语法:DROP DATABASE 数据库名
    2. DROP DATABASE db1;

操作数据表

1.数据类型

  • 整数类型:
    TINTINT(8字节)、SMALLINT(16字节)、MEDIUMINT(24字节)、INT(32字节)、BIGINT(64字节)

整数类型有可选的UNSIGNED属性,表示不允许负数,可以使正数范围提高一倍,例如:TINTINT UNSIGNED可以使存储的范围是0-255

  • 浮点类型:

    • FLOAT(4字节)、DOUBLE(8字节)、DECIMAL(字符串形式的浮点数)
  • 字符串类型

    • VARCHAR:可变长字符串

    • CHAR:固定长度字符串

    • TEXT:存储大的字符串,类型有:TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT

    • BLOB:字符串以二进制存储,类型有:TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB

    • ENUM:枚举类型

  • 日期类型:

    • DATE(3字节):记录日期
    • TIME(3字节):记录时间
    • YEAR(1字节):记录年份
    • DATETIME(8字节):记录日期yyyy-MM-dd HH:mm:ss
    • TIMESTAMP(4字节):记录修改时间

2.创建数据表

  • 创建数据表
    1. /*
    2. 语法:
    3. CREATE TABLE 表名(
    4. 字段名称1 字段类型(长度),
    5. 字段名称2 字段类型
    6. );
    7. */
    8. CREATE TABLE table1(
    9. field1 INT,
    10. field2 VARCHAR(20)
    11. );
  • 复制表结构
    1. -- 语法:CREATE TABLE 新表明 LIKE 旧表名
    2. CREATE TABLE table2 LIKE table1;

3.查看数据表

  • 查看当前数据库所有表
    1. SHOW TABLES;
  • 显示数据表结构
    1. -- 语法:DESC 表名;
    2. DESC table1;
  • 显示创建数据表的SQL语句
    1. -- 语法:SHOW CREATE TABLE 表名;
    2. SHOW CREATE TABLE table1;

4.删除数据表

  • 删除表
    1. -- 语法:DROP TABLE 表名;
    2. DROP TABLE table2;
  • 判断是否存在并删除
    1. -- 语法:DROP TABLE IF EXISTS 表名;
    2. DROP TABLE IF EXISTS table2;

5.修改数据表

  • 修改表名
    1. -- 语法:RENAME TABLE 旧表名 TO 新表名
    2. RENAME TABLE table1 TO newtable1;
  • 修改表的字符集
    1. -- 语法:ALTER TABLE 表名 CHARACTER SET 字符集
    2. ALTER TABLE table1 CHARACTER SET gbk;
  • 向表中添加列
    1. -- 语法:ALTER TABLE 表名 ADD 字段名称 字段类型
    2. ALTER TABLE table1 ADD field3 VARCHAR(20);
  • 修改表中列的数据类型或长度
    1. -- 语法:ALTER TABLE 表名 MODIFY 字段名称 字段类型
    2. ALTER TABLE table1 MODIFY field3 VARCHAR(50);
  • 修改列名称
    1. -- 语法:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度);
    2. ALTER TABLE table1 CHANGE field4 field3 VARCHAR(30);
  • 删除列
    1. -- 语法:ALTER TABLE 表名 DROP 列名;
    2. ALTER TABLE table1 DROP field3;

操作数据

1.新增数据

  • 插入数据的3种方式
    1. -- 语法:INSERT INTO 表名 (字段名1,字段名2...) VALUES(字段值1,字段值2...);
    2. INSERT INTO table1 (field1,field2) VALUES(1,'Name');
    3. INSERT INTO table1 VALUES(2,'Name');
    4. INSERT INTO table1 (field2) VALUES('Name');

2.修改数据

  • 修改整列数据
    1. -- 语法:UPDATE 表名 SET 列名 = 值, 列名 = 值...
    2. UPDATE table1 SET field2 = 'NAME';
  • 修改表的字符集
    1. -- 语法:UPDATE 表名 SET 列名 = 值, 列名 = 值... [WHERE 条件表达式/字段名 = ];
    2. UPDATE table1 SET field2 = 'NAME' WHERE field1 = 1;

3.删除数据

  • 删除所有数据
    1. -- 语法:DELETE FROM 表名;
    2. DELETE FROM table1;
  • 指定条件删除数据
  1. -- 语法:DELETE FROM 表名 [WHERE 字段名 = 值];
  2. DELETE FROM table1 WHERE field1 = 1;
  • 初始化数据表
    1. -- 语法:TRUNCATE TABLE 数据表;
    2. TRUNCATE TABLE table1;

4.简单查询数据

  • 查询所有数据
    1. -- 语法:SELECT 列名,列名... FROM 表名;
    2. -- 使用 * 表示所有列
    3. SELECT * FROM table1;
  • 别名查询
  1. -- 语法:SELECT 列名 AS '别名', 列名 AS '别名',... FROM 表名;
  2. SELECT field1 AS '编号', field2 AS '姓名' FROM table1;
  • 去重查询
    1. -- 语法:SELECT DISTINCT 列名 FROM 表名;
    2. SELECT DISTINCT field2 FROM table1;
  • 运算查询
    1. SELECT field1 + 100 FROM table1;
  • 条件查询
    1. -- 语法:SELECT 列名 FROM 表名 WHERE 条件表达式;
    2. SELECT * FROM table1 WHERE field1 = 1;
运算符 说明
> < <= >= = <> != 大于、小于、大于(小于)等于、不等于
BETWEEN ...AND... 显示在某一区间的值
IN(集合) in中的每个数据都会作为一次条件,只要满足条件就会显示
LIKE '%哈%' 模糊查询
IS NULL 查询某一列为NULL的值, 注: 不能写 = NULL
And / && 多个条件同时成立
Or / || 多个条件任一成立
Not 不成立,取反

更新时间:{docsify-updated}