Copyright©Stonee
众所周知,SQL(structure query lauguage)中具有四种和数据库有关的语言:DDL(data define lauguage),DML(data manipulation lauguage),DCL(data coutrol lauguage) and TCL(transaction control lauage),DML主要是在操作数据库。
当我们一个table建好以后,就需要往里面插入数据,而这就会用到insert语句。
基础用法是:
insert into (table)(x,x,x,,,) values (x,x,x,x,,,);
有时候会报错,如:ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (
me.
sc, CONSTRAINT ‘sc_ibfk_2’ FOREIGN KEY (‘SNo’) REFERENCES ‘students’ (‘SNo’))
这是因为当设置外键之后,子键必须需要在外键已经改的基础上再改,并且和外键一致才行。
可以在查询结果上进行插入,如:
insert into instructor select ID from student where dept_name = music
即把符合条件的学生的ID插入到instructor的ID中。
查询在SQL中占了很大的比重,SQL注入也是从查询开始的
`select */column,cloumn,,, from table,table,,, where + 条件`
理解select操作的顺序应当先是from,接着是where,最后是select;
`select name, course_id from instructor, teaches where instructor.ID = teaches.ID;`
可以把上面通过自然连接换为:
select name, course_id from instructor natural join teaches;
不过join in 是把所有的相等的参数进行笛卡尔积(就像instructor和teaches不仅ID相等,name也相同),但有时后我们只需要一种相同的参数,这就需要用到
select name, course_id from (instructor natural join teaches) join course using (course_id);
`select column from table where building like '% Watson%'`
即查找包含Watson的building , '_ _ _'匹配只含三个字符的字符串,这两种可以自由组合,加入转义字符的形式和c语言类似。
`select name, course_id from instructor, teaches where instructor.ID = teaches.ID order by name,course_id;`
默认升序,后面坠入desc表示降序。
select avg(salary) as avg_salary from instructor where dept_name = Comp.Sci;
但是这样只能作用在单个元组,即dept_name = COmp.Sci 这一组中,如果还需要输出别的组呢?就需要通过group by 来实现:
select dept_name avg(salary) as avg_salary from instructor group by dept_name;
可以比较一下上例不要group by的区别!
需要注意的是,group by 必须包括select中的所有非聚集函数!
需要用到in 或者 not in 关键字,如:
select course_id from section where semester = fall and year = 2009 and course_id in (select course_id from section where semster = spring and year =2000);
select course_id
from section where semester = fall and year = 2009 and course_id
> some (select course_id from section where semster = spring and year =2000);
some 指的是比最小的大,>all 指的是比最大的大
基本语法
delete from table where + 条件
语法和查询类似
基本语法
update table set column = column *n(*也可以是别的*) where + 条件