# 创建表,并且设置主键CREATETABLE person(
pid INTPRIMARYKEY,
first_name VARCHAR(100),
last_name VARCHAR(100),
city VARCHAR(100),
address VARCHAR(100));USE test_db;SHOWTABLES;DESC person;# 主键(唯一 非空)# 主键不能插入null值,也不能不传值INSERTINTO person VALUES(NULL,'zhang','san','北京','昌平');INSERTINTO person(first_name, last_name)VALUES('zhang','san');# 主键数据唯一,已经存在后不能插入相同主键记录INSERTINTO person VALUES(1,'zhang','san','北京','昌平');INSERTINTO person VALUES(1,'li','si','北京','昌平');# 不要轻易修改主键# 主键不包括对用户有意义的任何数据
删除主键
# 删除主键约束ALTERTABLE person DROPPRIMARYKEY;# 查看表结构DESC person;# 主键删除后,非空约束依然存在,不能插入null值或者不传值INSERTINTO person VALUES(NULL,'zhang','san','北京','昌平');INSERTINTO person(first_name, last_name)VALUES('zhang','san');# 主键删除之后,唯一约束随之消失,可以插入重复值INSERTINTO person VALUES(1,'zhang','san','北京','昌平');INSERTINTO person VALUES(1,'li','si','北京','昌平');
# 比较查询SELECT*FROM product WHERE pname='花花公子';# 查询价格大于60的所有商品SELECT*FROM product WHERE price >60;# 查询价格大于等于800的所有商品SELECT*FROM product WHERE price >=800;# 查询价格小于2000的所有商品SELECT*FROM
product
WHERE
price <2000;# 查询价格不等于800的所有商品SELECT*FROM product WHERE price !=800;SELECT*FROM product WHERE price <>800;# 查询价格大于2000的所有商品的名称SELECT pname FROM product WHERE price >2000;
范围查询
对一个区间或集合的数据进行对比,对比结果成立则返回记录,不成立则不返回
范围查询的两个关键字 between and (连续区间) 、 in(不连续区间)
# 范围查询# between and 查询连续范围数据# 查询商品价格在800-2000之间的所有商品# between and 包含范围的边界值,是一个闭区间 --- []SELECT*FROM product WHERE price BETWEEN800AND2000;# in 查询非连续区间的数据# 查询价格为60 和800及3000的所有记录SELECT*FROM product WHERE price IN(60,800,3000);# 如果查询范围内无记录则不会输出任何内容但是不会报错SELECT*FROM product WHERE price IN(21,39,50008);# 如果查询集仅为一个数据,也要用括号包裹起来,否则会报错.SELECT*FROM product WHERE price IN(800);
# like 模糊查询# 通配符:% 代表0到多个任意字符 _ 代表一个任意字符# 查询名字中带香的所有商品SELECT*FROM product WHERE pname LIKE'%香%';# 查询名字中以香开头的所有商品SELECT*FROM product WHERE pname LIKE'香%';# 查询以'霸'结尾的所有商品SELECT*FROM product WHERE pname LIKE'%霸';# 查询名字最后一个字为斯,且是四个字的产品名称的商品SELECT*FROM product WHERE pname LIKE'___斯';SELECT*FROM product WHERE pname LIKE'__斯';
非空查询
is null 判断是否为空
is not null 判断是否不为空
# 非空查询# is null(判断是否为空) 或者 is not null(判断是否不为空)INSERTINTO product(pid,pname,price,category_id)VALUES(14,'蒂花之秀',NULL,NULL);# 查询所有价格为null的商品SELECT*FROM product WHERE price ISNULL;# 能否使用字段名=null的形式进行筛选 不能这样去筛选,因为null与int数据类型不同没有办法正常对比# SELECT * FROM product WHERE price = NULL;# 查询所有价格不为null的商品SELECT*FROM product WHERE price ISNOTNULL;