MySQL巩固学习记录(一) (2)

可同时插入多条数据 , values 后用英文逗号隔开 .

-- 使用语句如何增加语句? -- 语法 : INSERT INTO 表名[(字段1,字段2,字段3,...)] VALUES('值1','值2','值3') INSERT INTO grade(gradename) VALUES ('大一'); -- 主键自增,那能否省略呢? INSERT INTO grade VALUES ('大二'); -- 查询:INSERT INTO grade VALUE ('大二')错误代码:1136 Column count doesn`t match value count at row 1 -- 结论:'字段1,字段2...'该部分可省略 , 但添加的值务必与表结构,数据列,顺序相对应,且数量一致. -- 一次插入多条数据 INSERT INTO grade(gradename) VALUES ('大三'),('大四'); 二、修改数据 update 命令

语法:

UPDATE 表名 SET column_name=value [,column_name2=value2,...] [WHEREcondition];

注意 :

column_name 为要更改的数据列

value 为修改后的数据 , 可以为变量 , 具体指 , 表达式或者嵌套的 SELECT 结果

condition 为筛选条件 , 如不指定则修改该表的所有列数据

三、删除数据 DELETE 命令

语法:

DELETE FROM 表名 [WHERE condition];

注意:condition 为筛选条件 , 如不指定则删除该表的所有列数据

-- 删除最后一个数据 DELETE FROM grade WHERE gradeid = 5 TRUNCATE 命令

作用:用于完全清空表数据 , 但表结构 , 索引 , 约束等不变 ;

语法:

TRUNCATE [TABLE] table_name; -- 清空年级表 TRUNCATE grade

注意:区别于 DELETE 命令

相同 : 都能删除数据 , 不删除表结构 , 但 TRUNCATE 速度更快

不同 :

使用 TRUNCATE TABLE 重新设置 AUTO_INCREMENT 计数器

使用 TRUNCATE TABLE 不会对事务有影响

-- 创建一个测试表 CREATE TABLE `test` ( `id` INT(4) NOT NULL AUTO_INCREMENT, `coll` VARCHAR(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 -- 插入几个测试数据 INSERT INTO test(coll) VALUES('row1'),('row2'),('row3'); -- 删除表数据(不带where条件的delete) DELETE FROM test; -- 结论:如不指定Where则删除该表的所有列数据,自增当前值依然从原来基础上进行,会记录日志. -- 删除表数据(truncate) TRUNCATE TABLE test; -- 结论:truncate删除数据,自增当前值会恢复到初始值重新开始;不会记录日志. -- 同样使用DELETE清空不同引擎的数据库表数据.重启数据库服务后 -- InnoDB : 自增列从初始值重新开始 (因为是存储在内存中,断电即失) -- MyISAM : 自增列依然从上一个自增数据基础上开始 (存在文件中,不会丢失)`

DQL(数据库查询语言)

SELECT 语法

SELECT [ALL | DISTINCT] {* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]} FROM table_name [as table_alias] [left | right | inner join table_name2] -- 联合查询 [WHERE ...] -- 指定结果需满足的条件 [GROUP BY ...] -- 指定结果按照哪几个字段来分组 [HAVING] -- 过滤分组的记录必须满足的次要条件 [ORDER BY ...] -- 指定查询记录按一个或多个条件排序 [LIMIT {[offset,]row_count | row_countOFFSET offset}]; -- 指定查询的记录从哪条至哪条

注意 : [] 括号代表可选的 , {} 括号代表必选得

指定查询字段 -- 查询表中所有的数据列结果 , 采用 **" \* "** 符号; 但是效率低,不推荐 . -- 查询所有学生信息 SELECT * FROM student; -- 查询指定列(学号 , 姓名) SELECT studentno,studentname FROM student; AS 子句作为别名

作用:

可给数据列取一个新别名

可给表取一个新别名

可把经计算或总结的结果用另一个新名称来代替

-- 这里是为列取别名(当然as关键词可以省略) SELECT studentno AS 学号,studentname AS 姓名 FROM student; -- 使用as也可以为表取别名 SELECT studentno AS 学号,studentname AS 姓名 FROM student AS s; -- 使用as,为查询结果取一个新名字 -- CONCAT()函数拼接字符串 SELECT CONCAT('姓名:',studentname) AS 新姓名 FROM student; DISTINCT 关键字的使用

作用 : 去掉 SELECT 查询返回的记录结果中重复的记录 (返回所有列的值都相同) , 只返回一条

-- # 查看哪些同学参加了考试(学号) 去除重复项 SELECT * FROM result; -- 查看考试成绩 SELECT studentno FROM result; -- 查看哪些同学参加了考试 SELECT DISTINCT studentno FROM result; -- 了解:DISTINCT 去除重复项 , (默认是ALL)

使用表达式的列

数据库中的表达式 : 一般由文本值 , 列值 , NULL , 函数和操作符等组成

应用场景 :

SELECT 语句返回结果列中使用

SELECT 语句中的 ORDER BY , HAVING 等子句中使用

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwsww.html