-- 计算math和english之和SELECT NAME, ENGLISH, MATH, MATH + ENGLISH FROM STUDENT;-- 将null设置为0,然后计算math和english之和SELECT NAME, ENGLISH, MATH, MATH + IFNULL(ENGLISH,0)FROM STUDENT;
4、起别名
语法
SELECT NAME AS name FROM TBALE_NAME;
注意事项
1、AS也可以省略
实例
-- english和math之和起别名SELECT NAME, ENGLISH, MATH, MATH + IFNULL(ENGLISH,0)AS all_score FROM STUDENT;-- english,math起别名,english和math之和起别名SELECT NAME, ENGLISH AS 英语, MATH AS 数学, MATH + IFNULL(ENGLISH,0)AS 总分 FROM STUDENT;
-- 大于20岁的人SELECT*FROM STUDENT WHERE AGE >20;-- 20岁的人SELECT*FROM student WHERE age =20;-- 年龄不是20岁的人SELECT*FROM student WHERE age !=20;SELECT*FROM student WHERE age <>20;-- 20-30岁之间的人SELECT*FROM STUDENT WHERE AGE BETWEEN20AND30;SELECT*FROM STUDENT WHERE AGE >=20&& AGE <=30;SELECT*FROM STUDENT WHERE AGE >=20AND AGE <=30;-- 年龄22,18,25的人SELECT*FROM STUDENT WHERE AGE =22OR AGE =18OR AGE =25;SELECT*FROM STUDENT WHERE AGE IN(22,18,25);-- 查询英语为nullSELECT*FROM student WHERE english ISNULL;-- 查询英语不为nullSELECT*FROM student WHERE english ISNOTNULL;
2、模糊条件查询
语法
SELECT * FROM STUDENT WHERE NAME LIKE 'EXPRESSION';
注意事项
占位符:
1、'_':单个任意字符
2、'%':零或多个任意字符
实例
-- 姓马的人有哪些SELECT*FROM student WHERE NAME LIKE'马%';-- 名字当中第二个字符是化的人SELECT*FROM student WHERE NAME LIKE'_化%';-- 姓名是三个字的人SELECT*FROM student WHERE NAME LIKE'___';-- 姓名中包含马的人SELECT*FROM student WHERE NAME LIKE'%马%';
-- 按照性别分组,分别查询平均分SELECT sex,AVG(math)FROM student GROUPBY sex;-- 按照性别分组,分别查询平均分,平均分降序排列SELECT sex,AVG(math)AS average FROM student GROUPBY sex ORDERBY average DESC;-- 分数低于七十分不参与分组SELECT sex,AVG(math)FROM student WHERE math >=70GROUPBY sex;SELECT sex,AVG(math),COUNT(id)AS SUM FROM student WHERE math >=70GROUPBY sex HAVING SUM >2;
-- 创建表的时候添加主键CREATETABLE stu (
id INTPRIMARYKEY,-- 给id添加主键约束
NAME VARCHAR(20));-- 添加主键并且完成主键的自增长CREATETABLE stu (
id INTPRIMARYKEYAUTO_INCREMENT,-- 给id添加主键约束
NAME VARCHAR(20));-- 创建完表后添加主键ALTERTABLE stu MODIFY id INTPRIMARYKEY;-- 创建完表之后添加主键自增长ALTERTABLE stu MODIFY id INTAUTO_INCREMENT;-- 删除主键ALTERTABLE stu DROPPRIMARYKEY;-- 删除主键的自增长ALTERTABLE stu MODIFY id INT;
2、非空约束
实例
-- 创建表stu使得name列不能为空CREATETABLE stu (
id INT,
NAME VARCHAR(20)NOTNULL-- name为非空);-- 删除name的非空约束ALTERTABLE stu CHANGE NAME NAME VARCHAR(20);ALTERTABLE stu MODIFY NAME VARCHAR(20);-- 创建完比之后,添加约束ALTERTABLE stu MODIFY NAME VARCHAR(20)NOTNULL;-- 添加自增长,使用auto_increment可以完成自增长-- 添加主键并且完成主键的自增长CREATETABLE stu (
id INTPRIMARYKEYAUTO_INCREMENT,-- 给id添加主键约束
NAME VARCHAR(20));
3、唯一约束
实例
-- 创建表的时候添加唯一约束 CREATETABLE stu (
id INT,
phone_numb VARCHAR(20)UNIQUE);-- 创建表之后添加唯一约束ALTERTABLE stu MODIFY phone_numb VARCHAR(20)UNIQUE;-- 注意MySQL当中的唯一约束限定的列的值可以有多个null-- 删除唯一约束ALTERTABLE stu DROPINDEX phone_number;
4、外键约束
概念:让表之间产生关系,从而保证数据的正确性
创建实例SQL语句
CREATETABLE department (
id INTPRIMARYKEYAUTO_INCREMENT,
dep_name VARCHAR(30),
dep_location VARCHAR(30));CREATETABLE employee (
id INTPRIMARYKEYAUTO_INCREMENT,
NAME VARCHAR(20),
age INT,
dep_id INT-- 外键对应的主表主键);INSERTINTO department VALUES(NULL,'研发部','广州'),(NULL,'销售部','深圳');INSERTINTO employee (NAME, age, dep_id)VALUES('张三',20,1),('李四',21,1),('王五',20,1),('老王',20,2),('大王',22,2),('小王',18,2);-- select * from employee;-- SELECT * FROM department;