本帖最后由 小石姐姐 于 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 别名
|
|