mysql里面是用--做注释呀。
这里说的是:删除记录,DELETE FROM 关键字 然后的话 WHERE 关键字
就是知道了很多的关键字,然后的话知道怎么去使用它们。
改变一个表的列:
ALTER TABLE 表名 CHANGE COLUMN 列名1 列名2 新的字段名 +是否not null的规定
ALTER TABLE 表名 ADD COLUMN 列名+ 类型(VARCHAR(20)之类的)+NOT NULL
ALTER TABLE 表名 DROP COLUMN +column的名字
一般应该是DESC 列出了表的结构再去看是否改变这个表的吧。
实用的sql语句:
1. 如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。此时,可以使用REPLACE
语句,这样就不必先查询,再决定是否先删除再插入:
REPLACE INTO students (id,class_id,gender,name) VALUES(1,1,‘M‘,‘小明‘)
如果记录存在,就删除再插入,如果记录不存在,就直接插入
2.如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就更新该记录,此时,可以使用
INSERT INTO 表名(字段的列举)VALUES(值的列举) ON DUPLICATE KEY UPDATE‘字段1‘=,‘字段2‘=
其实1和2达到的效果是一样的。
3.如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就啥事也不干直接忽略,此时,可以使用
INSERT IGNORE INTO students (id,class_id,gender) VALUES(1,2,‘M‘)
4.如果想要对一个表进行快照,即复制一份当前表的数据到一个新表,可以结合CREATE TABLE
和SELECT
:
CREATE TABLE 表名 SELECT * FROM students WHERE class_id=1;
复制了查询之后的数据到另外一张表里面去
5.
如果查询结果集需要写入到表中,可以结合INSERT
和SELECT
,将SELECT
语句的结果集直接插入到指定表中。
CREATE TABLE 表名
(
id BIGINT NOT NULL,
字段2名字 字段2类型 是否能够为空,
PRIMARY KEY (指定的主键是谁)
)
表里面说的是:id 班级id 平均成绩
例如,创建一个统计成绩的表statistics
,记录各班的平均成绩:
然后,我们就可以用一条语句写入各班的平均成绩:
确保INSERT
语句的列和SELECT
语句的列能一一对应,就可以在statistics
表中直接保存查询的结果:
需要在A表算了每个班的平均成绩之后放到B表里面去,B表已经存在
INSERT INTO B(列名1,列名2) SELECT (class_id,AVG(score)) FROM A GROUP BY (class_id)
这两个位置标红的地方,都是一定要加括号的吧。
因为记得吗? INSERT INTO 就是要加括号的 那么你给它 分配出来的位置也是写成两边的括号对应
6.在查询的时候,数据库系统会自动分析查询语句,并选择一个最合适的索引。但是很多时候,数据库系统的查询优化器并不一定总是能使用最优索引。如果我们知道如何选择索引,可以使用FORCE INDEX
强制查询使用指定的索引。例如:
SELECT * FROM 表名 FROCE INDEX() WHERE ..
这里FORCE INDEX force的是谁要标明在此处的。
FORCE INDEX 是放在FROM后面的吧。
7.也就是现在知道了一些新的用法,包括replace into等等,以及说一个表的数据如何复制到另外一个表等等,两个表的相互操作等等。