| 
 
| 本帖最后由 小石姐姐 于 2018-1-24 15:59 编辑 
 
 SQL语句单表查询基本语法总结 SQL特点
 SQL不区分大小写
 一条SQL语句以;分号结尾, 一条语句可以多行书写
 单词之间通过空格分隔, 参数之间通过,逗号分隔
 字符串和日期要用''或""引起来, 建议单引号
 SQL注释(2+1种)
 2种单行注释
 #单行注释
 -- 单行注释: 减号后必须有一个空格
 1种多行注释: /* 注释内容 */
 SQL的数据类型
 INT: 整数
 DOUBLE: 小数
 VARCHAR: 可变长度字符
 CHAR: 固定长度字符
 其他看文档
 VARCHAR和CHAR的区别:
 VARCHAR(200), 可变长度字符, 存储占用的内存空间是可变的, 如果你的数据容量小于我们指定的空间大小, 那么就会按照实际的数据空间来开辟内存大小
 优点: 节省内存
 缺点: 因为每次存入数据时都会判断数据的实际大小, 来动态修改内存空间, 所以需要占用资源, 效率低
 CHAR(200), 固定长度字符, 存储占用的内存空间是不可变的. 无论实际存入的数据容量是多大, 都占用这么大的空间
 优点: 插入数据时不需要额外操作, 效率高
 缺点: 可能会浪费空间
 SQL对库的操作
 创建库
 使用默认字符集创建库: CREATE DATABASE 库名;
 默认是UTF-8编码
 指定字符集: CREATE DATABASE 库名 CHARACTER SET '字符集';
 删除库
 DROP DATABASE 库名;
 查看所有库
 SHOW DATABASES;
 使用库
 USE 库名;
 查看当前使用的库
 SELECT DATABASE();
 SQL对表的操作
 创建表: CREATE TABLE 表名 (列名1 数据类型 约束, 列名2 数据类型 约束);
 删除表: DROP TABLE 表名;
 查看当前库中的所有表: SHOW TABLES;
 修改表的结构: ALTER TABLE 表名 操作关键字 列名 数据类型 约束;
 增加列: ALTER TABLE 表名 ADD 新列名 新数据类型 新约束;
 删除列: ALTER TABLE 表名 DROP 列名;
 修改列的数据类型和约束(不能修改列名): ALTER TABLE 表名 MODIFY 列名 新数据类型 新约束;
 修改列的列名, 数据类型, 约束: ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 新约束;
 查看表结构:DESC 表名;
 修改表名: RENAME TABLE 旧表名 TO 新表名;
 SQL对记录的操作
 增
 一次插入一条记录: INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);
 一次性插入一条记录(省略自增主键): INSERT INTO 表名 (非主键自增列1, 非主键自增列2) VALUES (值1, 值2);
 一次插入所有列的记录(省略列名): INSERT INTO 表名 VALUES (值1, 值2);
 值的数量和顺序必须和表的列一致
 一次插入多个记录(指定列): INSERT INTO 表名 (列1, 列2) VALUES (记录1值1, 记录1值2), (记录2值1, 记录2值2);
 一次插入多个记录(省略列): INSERT INTO 表名 VALUES (记录1值1, 记录1值2), (记录2值1, 记录2值2);
 删
 删除符合条件的记录: DELETE FROM 表名 WHERE 条件;
 删除所有记录: DELETE FROM 表名;
 清空表: TRUNCATE TABLE 表名;
 DELETE FROM 表名;和TRUNCATE TABLE 表名;的区别
 DELETE, 逐条删除记录, 不会重置自增计数器
 TRUNCATE, 删除表再重建, 会重置自增计数器
 改
 修改符合条件的记录: UPDATE 表名 SET 列名1=新值, 列名2=新值 WHERE 条件;
 修改所有记录: UPDATE 表名 SET 列名1=新值, 列名2=新值;
 查
 查询指定列: SELECT 列名1, 列名2 FROM 表名;
 查询所有列: SELECT * FROM 表名;
 条件查询: SELECT 列名1, 列名2 FROM 表名 WHERE 条件;
 运算符
 比较运算符
 =: 相等
 <>或!=: 不等
 >: 大于
 <: 小于
 >=: 大于等于
 <=: 小于等于
 BETWEEN...AND...: 在一个范围内(包含头和尾)
 如: BETWEEN 0 AND 10
 IN (): 在列表中, 满足列表中一个即可
 如: IN (1, 3, 5)
 IS NULL: 是空
 LIKE '通配符': 模糊查询
 %: 一个百分号可以表示任意个字符. 比如'王%', 王大锤, 王五
 _: 一个下划线可以表示一个字符. 比如'王_', 只能匹配王五
 逻辑运算符
 AND: 与. 两边条件同时成立才成立
 OR: 或. 两边条件只要有一个成立就成立
 NOT: 非, 取相反结果
 NOT BETWEEN ... AND ...: 不在范围内
 NOT IN: 不在列表中
 NOT LIKE: 不匹配
 IS NOT NULL: 非空
 去重: SELECT DICTINCT 列名1, 列名2 ... FROM 表名 WHERE 条件;
 别名:
 字段名 AS 别名
 表名 AS 别名
 
 | 
 |