网络安全-学习数据库-Mysql-2
复制

sql
-- 复制一张表
CREATE table t_student2
AS
select * from t_student;
复制出来的表是t_student2,用的t_studen作为复制的意思
复制后,要表不要数据
sql
CREATE TABLE t_student3
AS
SELECT * FROM t_student WHERE 1=2;

意思是,用1=2这个不存在的条件去骗"SQL"这个搞不定
然后直接复制一个表格就完了
删除一个表格
delete
truncate table
这两个都是删除表格的意思
sql
delete from t_student;
truncate table t_student;
出来的效果是一样的
区别:
DELETE
DML(数据操作语言)
就像拿橡皮擦,一行一行地把字擦掉(适合擦一部分)。
TRUNCATE
DDL(数据定义语言)
就像直接把这一页纸撕了重新拿一张(只能全部撕毁,速度极快)。
delete可以带条件,可以针对某个数据删
truncate是直接rm -rf/* 直接全部干掉
delete可以撤销,只要没commit
但是truncate是立刻执行,属于ddl语言,没得救的一旦敲下去。
速度上
delete每删一次,就会触发一次触发器,比如告诉你受影响的行数=6
但是truncate直接all in 杀
查询某一列
sql
SELECT sno,sname from t_student;
查询sno,sname,在这个叫t_student的表里面
然后记得最后的查询词不要加入进去逗号
看看对比
sql
SELECT sno,sname from t_student; 查询某个东西
SELECT * from t_student; 查询这个表的全部

查询某个条件
正常全量查询
sql
select * from t_student;

sql
select * from t_stuuent sno > 25 ;

在这个条件里面也可以加减乘除,比如
我要找sno+10
可以同时写
sql
select * from t_student sno,sno+10;
去重操作
sql
select distinct sno,sex from t_student;
意思是,在sno,和sex里面,有重复的,就不会重复出现了

where语句
搞个抽象的
sql
SELECT * FROM t_student WHERE sno = 10;
SELECT * FROM t_student WHERE sno > 10;
SELECT * FROM t_student WHERE sno < 10;
SELECT * FROM t_student WHERE sno >= 10;
SELECT * FROM t_student WHERE sno <=10;
SELECT * FROM t_student WHERE sno <>10;上面应该都很好理解,主要是这个,这个的意思不等于10
SELECT * FROM t_student WHERE sno !=10;同上
意思是查询这个表单里面的sno的查询条件,根据条件查找你要的东西。
上面的是数字的,当然还有文本的
sql
SELECT * FROM t_student WHERE snname = '张三';
如果是英文,不区分大小写

模糊查询
sql
SELECT * FROM t_student WHERE sname like '%张%';
意思是 查询在sname这一列里面查询条件为有张字的数据
