目录
1.INSERT :
介绍: 在数据中添加或者插入数据
语法:
INSERT INTO table [(column [, column...])] VALUES(value [, value...]); 默认情况下,一次插入操作只插入一行;如果为每列都指定值,则表名后不需列出插入的列名
一次性插入多条记录: INSERT INTO table [(column [, column...])] VALUES(value [, value...]),(value [, value...])
如果不想在表名后列出列名,可以为那些无法指定的值插入null 可以使用如下方式一次插入多行
insert into 表名[(列名,…)]
2.REPLACE语句:
介绍: 在数据中添加或者插入数据
语法:
语法格式1:
replace into 表名 [(字段列表)] values (值列表)
语法格式2:
replace [into] 目标表名[(字段列表1) select (字段列表2) from 源表 where 条件表达式
语法格式3:
replace [into] 表名 set 字段1=值1, 字段2=值2
replace语句的功能与insert语句的功能基本相同,不同之处在于:使用replace语句向表插入新记录时, 如果新记录的主键值或者唯一性约束的字段值与已有记录相同,则已有记录先被删除(注意:已有记录 删除时也不能违背外键约束条件),然后再插入新记录。
使用replace的最大好处就是可以将delete和insert合二为一(效果相当于更新),形成一个原子操作,这样 就无需将delete操作与insert操作置于事务中了
3.UPDATE语句:
介绍:修改数据
语法:
UPDATE table SET column = value [, column = value] [WHERE condition];
修改可以一次修改多行数据,修改的数据可用where子句限定,where子句里是一个条件表达式,只有 符合该 条件的行才会被修改。没有where子句意味着where字句的表达式值为true。也可以同时修改多列,多列的修改中间采用逗号(,)隔开
4.DELETE 和TRUNCAT语句:
介绍:
delete:删除数据,保留表结构,可以回滚,如果数据量大,很慢
truncate: 删除所有数据,保留表结构,不可以回滚,一次全部删除所有数据,速度相对很快
drop: 删除数据和表结构,删除速度最快
语法:
DELETE FROM table_name [where 条件];
TRUNCATE TABLE table_name
5.SELECT语句:
介绍:匹配表中数据 同时支持多种规则以及多种表匹配
语法:
SELECT {*, column [alias],...} FROM table; // *:表明匹配所有 from:提供数据源(表名或视图);默认选择所有行。
对数值型数据列、变量、常量可以使用算数操作符创建表达式(+ - * /) 对日期型数据列、变量、常量可以使用部分算数操作符创建表达式(+ -) 运算符不仅可以在列和常量之间进行运算,也可以在多列之间进行运算。
SELECT last_name, salary, salary*12 FROM employees;
MySQL的+默认只有一个功能:
运算符 SELECT 100+80; # 结果为180
SELECT '123'+80; # 只要其中一个为数值,则试图将字符型转换成数值,转换成功做预算,结果为203
SELECT 'abc'+80; # 转换不成功,则字符型数值为0,结果为80
SELECT 'This'+'is'; # 转换不成功,结果为0
SELECT NULL+80; # 只要其中一个为NULL,则结果为NULL
优先级
乘法和除法的优先级高于加法和减法
同级运算的顺序是从左到右
表达式中使用括号可强行改变优先级的运算顺序
SELECT last_name, salary, salary*12+100 FROM employees;
SELECT last_name, salary, salary*(12+100) FROM employees;
NULL值的使用:
空值是指不可用、未分配的值
空值不等于零或空格
任意类型都可以支持空值
包括空值的任何算术表达式都等于空
字符串和null进行连接运算,得到也是null.
安全等于<=>
1.可作为普通运算符的=
2.也可以用于判断是否是NULL
如:where salary is NULL/(is not NULL) ->where salary NULL
示例1:
查询emp表奖金为空的员工信息。 select * from emp where comm NULL;
示例2:
查询emp表奖金为50000的员工信息 select * from emp where comm 50000;
利用 as 定义字段的别名:
改变列的标题头
用于表示计算结果的含义
作为列的别名
如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都可以通过为别名添加加双引号实现。
SELECT last_name as “姓名”, salary “薪水” FROM employees;
SELECT last_name, salary*12 “年薪” FROM employees;
重复记录: