DDL(数据定义语言)
Create、Drop、Alter
DML(数据操纵语言)
CRUD(增加(Create)、读取(Retrieve)(重新得到数据)、更新(Update)和删除(Delete))
DCL(数据控制语言)
增加数据
insert into 表 values ('值') --into可以省略,值可以写多个,用逗号隔开,不过要对应列
例:insert into fruit values ('k008','梨','3','莱阳','3','100','')
insert fruit(Ids,Name,Source,Price) values ('k008','梨','莱阳','3') --增加数据时,当说明了表的列名,那么后面的值必须与之对应
删除数据
delete from 表 --清空表内数据
truncate table 表 --截断表
以上两种方式都可以清空表内数据,不同之处在于,truncate不会产生日志,并且可以初始化自增长列。
删除指定数据:
delete from 表 where 条件表达式 --条件表达式一般是:列名 运算符 值。多个条件可以用and或or连接
例:delete from Fruit where Name='梨'
修改数据
update 表 set 列名=值,列名=值,…… where 条件表达式
例:update Fruit set Price=3,Stack=4 where Name='葡萄'
查询
查询表中多个列
select 列,列,…… from 表
用符号*查询全部列
select * from 表
查询结果中添加列
select Price as '价格',Price*Weight as '总价',…… from fruit --查询结果中修改列的显示名称,列名处可以写表达式,as可以省略;此处总价为添加列
where,根据条件查询
select 列名 from 表 where 条件表达式
例:select name from fruit where price between 2 and 5 --从表fruit(水果)中查找price(单价)在2跟5之间的name(名称)
上一行中 price between 2 and 5 相当于 price>=2 and price<=5
用dictinct消除重复部分
例:select distinct dept_id from employee where e_wage>7000 --列出工资大于7000的员工所属部门的编号
用in关键字
例:select name from fruit where price in (2,3) --查询价格为2或3的水果名称。如果值是字符串,那么要加单引号
上一行中 price in (2,3) 相当于 price=2 or price=3
使用通配符,在where子句中用like进行字符串匹配查询
% 表示零个或多个字符 ‘a%’,‘a’后面可接任意字符串
_ 代表一个字符 ‘a_b’,‘a’与‘b’中间可以有一个字符
[] 表示在某一范围的字符 [0-9],0到9之间的字符
[^ ] 表示不再某一范围的字符
例:select e_name,dept_id from employee where like '王_' --查找公司中姓王且全名为两个字的员工的姓名及所在部门的编号
用order子句对结果排序,默认排序为升序,如果要按降序排序,那么在列名后边添加desc(默认升序是asc)
例:select e_name from employee where job_level='2' order by e_wage --查询工作级别为2的员工的姓名,查询结果按工资排序
例:select p_id,p_name,cost,quantity from products where dept_id='1003' order by cost desc,quantity --查询有编号1003部门生产的产品编号、名称、成本、库存数量,结果按成本降序、库存数量升序排列
统计函数
AVG(),算术平均值,只适用于数值型的列
例:select AVG(price) as '平均价' from fruit --求各种水果单价的平均值
COUNT(),返回与选择表达式匹配的列中不为NULL 值的数据个数。COUNT(*)指定了与判别式匹配的所有行,COUNT(列名) 则指定了列值的个数。
例:select COUNT(name) from fruit
MAX(),返回最大值,适用于数值型、字符型、日期型的列
例:select MAX(price) from fruit
MIN(),返回最小值,适用于数值型、字符型、日期型的列
例:select MIN(price) from fruit
SUM(),求和,()里可以进行运算。只适用于数值型的列
例:select SUM(price) from fruit
查询结果分组
group子句
select后边只能跟统计函数或跟 group by 后边儿的列相同
例:select name,price from fruit group by price --按价格分组,并显示名字跟价格
having子句
例:select dept_id, count(*) from employee where e_wage >= 6000 group by dept_id having count(*) > 1 --查询有多个员工的工资不低于6000 的部门编号
where用于分组前筛选数据,having用于分组后筛选数据。
begin tran
(修改数据的语句)
rollback --修改数据出错时,rollback返回(begin tran)
附:
筛选列(投影)
筛选行(筛选)
行(记录,元组)
列(字段,属性)