一、选择语句
USE
用于选中数据库;
SELECT
用于选择某列,全选时用*表示,做选择语句时,选取内容不用带括号,之间用逗号隔开;
FROM
用于选中数据的来源表;
AS
用于起别名(后跟单引号,双引号皆可)。
二、运算符
1. AND,OR,NOT
AND
表示并列,需同时满足;
OR
表示而这满足已即可;
NOT
表示否命题,常与AND和OR连用,放在他们之前。
2. IN
行使多个OR的作用
例:‘NA’ OR ‘JA’ OR ‘IA’,用IN表示则为IN(‘NA’ ‘JA’ ‘IA’);
3. BETWEEN
用于同一主体的AND,表示一个闭区间。
例:points>=1000 AND points<=2000,用BETWEEN表示为points BETWEEN 1000 AND 2000;
4.LIKE
在表中搜索含有LIKE中关键词的内容,前带主体,内容带引号。
例:last_name LIKE 'b%' (%表示任意数量的字符,可任意摆放, '%b%', '%b')
例:last_name LIKE '_b'(_表示占用单个字符,可任意多个摆放,_b_', '__b');
5. REGEXP (正则表达式)
表示包含,跟主体,可以理解为last_name REGEXP 'x'=last_name LIKE '%x%',
REGEXP '^x' 表示“x”要在句首,
REGEXP 'x&'表示“x”要在句尾,
REGEXP 'x|y'表示包含“x或y”任一即可,
REGEXP '[asd]x'表示中括号内任一与“x”结合的所有种类,即包含“ax,bx,cx”,
REGEXP 'x[asd]'同上,
REGEXP '[a-d]x'表示“a到d”的所有字符与x的结合;
6. IS NULL
用来查找表格中的缺失值,带主体。例:phone IS NULL;
还可以用IS NOT NULL,表示查找未缺失值
7. ORDER BY
起到排序作用,一般位置在WHERE之下,直接跟列名,可实现多列排序,多个列名之间用逗号隔开;
例:ORDER BY points ,也可在列名后加DESC表示倒序排列
8. LIMIT
限制选取的行数
例:LIMIT 3 即选取表中的前三行
LIMIT 6,3 表示在表中跳过前6个后再选取3个
三、连接
1. 内连接
JOIN···ON···
JOIN表示连接,后跟需要连接的表
ON表示用来连接的列,即连接两表的重合部分,例: ON a.stID= b.stID
2. 跨数据库连接
在JOIN或FROM子句中,在连接的表名前加上其所在数据库的名字
3. 自连接
FROM和JOIN用同一张表(两次引用表要有不同的简称),再用ON将两个有关系的列连接起来(并不一定要用同一列,可以选不同列来表示对应关系)
4. 多表连接
多个JOIN连用,将第一个连接后的表用JOIN···ON连接
5. 复合连接
连接包含含有两个主键列的表格时,在ON时用AND将两个主键列并列连接
6.外连接
用于返回所有项(包括null项),常用LEFT JOIN的形式
7. USING
用于替代JOIN后的ON,仅当连接的列名称相同时,列名要用()括起来(只能用于单独两个完整表的连接时使用)
8. 交叉连接
用于将每个项与每个项连接,CROSS JOIN
9. UNION
合并多个查询的结果,即合并多个行的内容,之间用UNION连接
union all和union的区别在于,union选出的值不允许重复,但union all的值可以重复
四、插入列
1.插入单行
INSERT INTO+被加入的表名
value()在括号中分别填入要插入的每列的内容,之间用逗号隔开
2. 插入多行
在VALUE后,每插入一行,分别用()表示,期间用逗号隔开
例如:VALUE(),(),()
3. 创建表复制
CREATE TABLE 新表名AS
SELECT 复制的列
FROM 被复制的表
之后在表格列表按刷新
4. 更新单行
UPDATE 更新的表名
SET 更改的列=更改的内容,(用逗号隔开)
WHERE 输入条件,选定更新的列。
5. 删除行
DELETE FROM 表的名称
WHERE 要删除行的条件,可用子查询
六、编写复杂查询
1.子查询
在WHERE子句中添加SELECT子句以实现更复杂的查询,成为子查询;(子查询要有别名,子查询内部不能连接其他表)
用于SELECT子句时,当子查询产生运算关系,要用SELECT再次选中别名再做一个子查询运算;
2. IN运算符
用来替代连续的OR,用于规定一个范围(也可用NOT IN选定不在这个范围的内容)
3. EXISTS 运算符
用于检验某项是否存在于某表。位于子查询前
七、数值函数
1. 基础数值函数
ROUND,四舍五入数字,可设置保留小数点后几位:ROUND(2.19,1)即保留一位数字,也可通过负值去保留更高位数;
CEILING:保留大于或等于此数的整数(直接入)
FLOOR:保留小于或等于此数的整数(直接舍)
ABS:绝对值
RAND:随机产生0-1之间的随机数
2. 字符串函数
LENGTH(“”):选中文本的字节数
UPPER(“”):选中文本大写
LOWER(“”):选中文本小写
TRIM(“”):删除所有空格
LEFT(“str, length”):从左数返回字符
RIGHT(“str, length”):从右数返回字符
SUBSTRING(“”,,):从任意位置返回字符
LOCATE(“”,“”):搜索第一个参数在第二个参数中的位置
REPLACE(“”,“”,“”):第一个参数选中字符串,第二个参数选中被替换的具体内容,第三个表示被替换的内容
CANCAT(“”,“”):将多个参数连接
3. 日期函数
NOW(),现在的日期和时间;
CURDATE()现在的日期;
CURTIME()现在的时间;
YEAR()\MONTH()\DAY()提取年、月、日;
HOUR()\MINUTE()\SECOND()提取时、分、秒;
DAYNAME()\MONTHNAME()提取周几、月名;
EXTRACT()用在最外层,方便转化成其他格式的文件。
4.日期和时间的格式化
DATE_FORMAT ( , “%y %m”)第一个参数是原本的时间和日期,第二个参数规定提取的格式;
TIME_FORMAT( , “”)同上。
5.计算日期和时间
DATE_ADD( ,INTERNAL ...)增加日期,第一个参数表示日期,第二个参数表示增加的数值;
DATE_SUB( , INTERNAL...)减少日期,同上;
DATEDIFF( “”,“”)得出两个参数天数的差;
TIME_TO_SEC(“”)计算从0点到参数的秒数,可进行运算。
6.IFNULL和COALESCE函数
IFNULL( ,“”)第一个参数选中一个主体,第二个参数表示当出现NULL时显示的内容;
COALESCE( ,comments,“”)第一第三个参数同上,第二个参数表示如果有注释就返回注释,没有就返回第三个参数。
7.IF函数
IF(判断条件,“”,“”)第一个函数作为判断条件,第二个为“是”时返回的值,第三个是“否”时的值。多用于SELECT子句。
8.CASE函数
一般放在select语句或聚合函数中;
可利用CASE函数进行多段判断;
CASE WHEN ... THEN... “when”后跟的是判断条件,“then”后跟的是判断正确时返回的值,可进行多段判断;
ELSE... 表示如果都不满足,则返回该值;
最后要接一个END 表示结束语句(一般再加一个AS语句重命名)。