云服务器网站搭建,新颖的公司名字大全,建设网站需要注意的事项,wordpress4.911. CRUD
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写,就是数据库基本操作中针对表的一系列操作.
2. 新增(create) --insert
语法: insert into 表名 [列名1,列名2…] values (val1,val2…) [注意]
列名可以没有,如果没有列名…1. CRUD
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写,就是数据库基本操作中针对表的一系列操作.
2. 新增(create) --insert
语法: insert into 表名 [列名1,列名2…] values (val1,val2…) [注意]
列名可以没有,如果没有列名,所有的列都应该插入,即val包含所有列的值.后面的val必须和前面的列名对应.各个数据之间用,隔开.
2.1 单行数据全列插入
insert into emp values (null,张十一,java程序员,16000); 在这里我们看到,salary一列原生是decimal类型的数据,但是我们这里在插入的时候salary一列输入的是int类型的数据,也插入成功了,这是因为sql对int类型进行了隐式类型转换这里我们就提到了sql语言的特性: sql语言是一种弱类型的语言,在一种语言中越支持隐式类型转换,类型越弱.
2.2 多行插入指定列插入
insert into emp (id,name,role) values(8,李十二,测试工程师); 3. 查询(retrieve) --select
语法: select 列名1,列名2(或是表达式) from 表名
3.1 全列查询 --*
select * from emp 查询该表中所有数据 [注意] 这是一个危险的操作,虽然这个操作在现在看来没有什么异样,但是如果数据非常多,这个操作很容易造成损失,这种查询引起服务器的响应之后,返回的数据量非常大,会把网络带宽吃满,导致别的客户端出现异常.
3.2 指定列查询
select id,name from emp; 查询id和name两列数据
3.3 查询字段为表达式 select id ,name,role,salary100 from emp; 查询的时候返回的结果集为所有人的工资加100 [注意]
查询的所有操作都不会对原生存在硬盘上的数据进行改变,这里虽然是在原来的薪水加上了100,但是只是返回的结果加上了100,返回的结果是一张临时表.
3.4 别名 --as
语法: select 列名 as 别名 from 表名; select id ,name , chinesemathenglish as total from student; 返回所有学生的总成绩,并设置为total 3.5 去重 --distinct
语法: select distinct 列名 from 表名; select distinct chinese from student; 上述结果我们看到返回的值把周八那一行的语文成绩去重. 当然我们也可以对多列进行去重: select distinct chinese,math from student; 3.6 排序 --order by
语法: asc为升序,desc为降序,默认为asc select 列名 from 表明 order by 列名 [升降序] select * from student order by math desc; 我们看到,学生们的顺序按数学成绩的降序排列了起来.
[注意]
没有order by的句子返回的查询,返回的顺序都是未定义的,永远不要依赖这个顺序.NULL数据排序的时候,视为比任何数据都小.升序在上面,降序在下面.可以使用表达式或者别名进行排序. select id,name,chinesemathenglish as total from student order by total ; 把学生的成绩按照总分升序排序. 可以对多个字段进行排序,优先级随书写顺序. select * from student order by chinese,math; 这里我们看到田七和周八的语文成绩是一样的,最后按math排序.田七在周八的后面.
3.7 条件查询 --where
比较运算符:
运算符说明, , , 大于大于等于小于小于等于等于NULL 不安全例如 NULL NULL 的结果是 NULL等于NULL 安全例如 NULL NULL 的结果是 TRUE(1)!, 不等于BETWEEN a0 AND a1范围匹配[a0, a1]如果 a0 value a1返回 TRUE(1)IN (option, …)如果是 option 中的任意一个返回 TRUE(1)IS NULL是 NULLIS NOT NULL不是 NULLLIKE模糊匹配。% 表示任意多个包括 0 个任意字符_ 表示任意一个字符
逻辑运算符:
运算符说明AND多个条件必须都为 TRUE(1)结果才是 TRUE(1)OR任意一个条件为 TRUE(1), 结果为 TRUE(1)NOT条件为 TRUE(1)结果为 FALSE(0)
[注意]
where可以使用表达式,但是不可以使用别名. 原因: 是执行顺序的缘故,遍历表–带入条件–计算列名中的表达式,定义别名–排序,聚合, 定义别名在带入条件的后面,所以无法识别.AND的优先级高于OR在同时使用时需要使用小括号()包裹优先执行的部分.
案例:
基本查询 select * from student where english 100; 查询英语成绩小于100的同学. select * from student where chinesemathenglish320; 查询总分小于320的同学 and 和 or select * from student where chinesemathenglish320 and math120; 查询总分小于320但数学成绩大于等于120的同学 select * from student where chinesemathenglish320 or math120; 查询总分小于320和数学成绩大于等于120的同学 范围查询 between…and… select * from student where math between 100 and 110; 查询数学成绩在100~110之间的同学in 针对每个记录,带入到条件中,看当前这个数值是否在( )描述的集合中存在. select * from student where math in (120,133); 模糊查询 --like select name from student where name like 周%; %代表的是一个或者多个字符,找到所有姓周的人. select name from student where name like 周_; 找到姓周但是是两个字的名字.
3.8 分页查询–limit
这个语法限制了最多返回多少条记录. 语法: select 列名 from 表名 limit n 限制返回的记录为n select 列名 from 表名 limit n offset s 从s开始查询,返回n条记录
案例: select name,mathchineseenglish as total from student order by total desc limit 3; 查询班级前三名 select name,mathchineseenglish as total from student order by total desc limit 3 offset 1; 查询班级总成绩2~4名
4. 修改 --update
语法: update 表名 set 列名表达式 限制条件
案例:
update student set english92 where name周八; 把周八的英语成绩改成92update student set english english10; 将所有人的英语成绩加10分
5. 删除 --delete
语法: delete from 表名 限制条件
案例: delete from student where name 周八; 删除周八的成绩