数据库(二)

64 阅读3分钟

数据库(二)

数据库操作:

管理表:

-- 添加列 ALTER TABLE t_student ADD s_edu VARCHAR(20);

-- 修改列 ALTER TABLE t_student CHANGE s_edu s_eduInfo VARCHAR(20);

-- 删除列 ALTER TABLE t_student DROP COLUMN s_eduInfo;

删除:

-- 删除表中所有的记录 DROP TABLE t_student; TRUNCATE TABLE t_student;

区别:

1、TRUNCATE TABLE 会清空表中所有的记录,而DROP TABLE 可以按条件删除记录

2、DELETE记录日志,意味着删除后的数据还可以恢复,但效率低。TRUNCATE 不会记录日志,删除后的数据不能恢复,但效率高。

-- 添加s_grade列,id<5的学生为80,id>=5的学生为50 ALTER TABLE t_student ADD s_grade INT; UPDATE t_student SET s_grade=80 WHERE pk_studentId<5; UPDATE t_student SET s_grade=50 WHERE pk_studentId>=5;

查询列:(条件,条件满足结果,条件不满足结果) -- 查询满足条件:成绩大于60的学生等级为合格,不满足的等级为不合格 SELECT s.*,IF(s_grade>60,'合格','不合格') grade FROM t_student s;

查询:

-- distinct:去除重复记录 SELECT DISTINCT s_sex FROM t_student;

-- 返回限定行(只对mysql有效):第个参数为起始记录(第一条为0),第个参数为显示记录数 SELECT * FROM t_student LIMIT 0,3;

"="含义:

=放在where后面,表示比较;放在set后后面,表示赋值。

-- 查询所有的男生 SELECT * FROM t_student WHERE s_sex**=**'男';

-- 将编号为2的学生,金额上涨500 UPDATE t_student SET s_money**=**s_money+500 WHERE pk_studentId=2;

多条件查询

当查询条件有多个时,连续多个条件的运算符有:and(并且,两个条件都为真结果为真;有一个为假,结果都为假)和or(或者,两个条件有一个为真,结果都为真;只有两个条件都为假,结果才是假)

-- 查询90后的男生 SELECT * FROM t_student WHERE s_birthday>='1990-01-01' AND s_birthday<'2000-01-01' AND s_sex='男';

-- 查询张三和李五的信息 SELECT * FROM t_student WHERE s_name='张三' OR s_name='李五';

定义集合范围innot in

-- 查询张三和李五的信息

SELECT * FROM t_student WHERE s_name IN('张三','李五');

-- 查询除张三和李五外的信息

SELECT * FROM t_student WHERE s_name NOT IN('张三','李五');

查询null值

不能用=、!=,只能用is null 或者 is not null

-- 将张三和王五设置为缺考人员 UPDATE t_student SET s_grade=NULL WHERE s_name IN('张三','王五');

-- 查询缺考人员 SELECT * FROM t_student WHERE s_grade IS NULL; -- 查询参考人员 SELECT * FROM t_student WHERE s_grade IS NOT NULL;

模糊查询

用于比较相似的值,利用通配符来实现模糊查询。

通配符:%、_

“_“ 通配符:匹配任何单个字符

”%“ 通配符:匹配0个或多个任意字符

-- 查询姓张的学生 SELECT * FROM t_student WHERE s_name LIKE '张%' ; -- 查询名字带张的学生 SELECT * FROM t_student WHERE s_name LIKE '%张%' ;

-- 查询姓张且名字为两个字的学生 SELECT * FROM t_student WHERE s_name LIKE '张_' ;

排序

将表中的记录按某个列进行顺序的排列,可以指定升序(ASC) 或者降序(DESC) ,如果不做指定,默认为升序。

-- 查询所有学生,并且按成绩升序排列(默认,ASC可不写) SELECT * FROM t_student ORDER BY s_grade ASC;

多列排序

先按某个列进行排序,如果两条记录中,该列的值相同,再按第二个列进行排序。

-- 查询所有学生,并且按成绩升序排列,如果两个学生成绩相同,按金额降序(DESC) 排列 SELECT * FROM t_student ORDER BY s_grade ASC,s_money DESC;

-- 查询成绩最高的学生 SELECT * FROM t_student ORDER BY s_grade DESC LIMIT 0,1;