MySQL学习笔记2
标签(空格分隔): 笔记 MySQL
sql命令
新增表数据
INSERT INTO table_name [(field1,field2...fieldn)] VALUES (value1,value2...valuen);
#属性名称可以省略,但不建议
#若主键重复,则会报错:ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
删除表数据
DELETE FROM table_name WHERE CONDITION;
#不加删除条件则会删除整张数据表!
#若未找到数据表则会报错:ERROR 1146 (42S02): Table 'test_day1.commonditytype' doesn't exist
#若条件所指的主键不存在,不会报错,但不会影响表
改变表数据
UPDATE table_name SET field1=value1,field2=value2,...fieldn=valuen WHERE CONDITION;
#同样注意,不加修改条件则会改变整张表的数据!
查询表数据
SELECT * from table_name;//查询表中所有数据
SELECT field1,field2,...,field3 from table_name;//查询表中特定的数据
SELECT DISTINCT field1 AS name1,field2 AS name2, ... FROM table_name;//DISTINC:去除重复 AS:起名
SELECT fiedld1+field2 from table_name;//查询时可以使用四则运算
#注意,若有一个值为NULL那么四则运算结果也为NULL
如果distinct修饰多个属性,则判断时考虑多个属性
带有限制条件的select语句
使用限制条件,数据库可以包含如下功能:
• 1.带关系运算符和逻辑运算符的条件数据查询;
• 2.带BETWEEN AND关键字的条件查询语句;
• 3.带IS NULL关键字的条件查询语句;
• 4.带IN关键字的条件查询语句;
• 5.带LIKE关键字的条件查询语句;
• 6.带关系运算符和逻辑运算符的条件数据查询;
算数运算符 | 描述 | 逻辑运算符 | 描述 |
---|---|---|---|
> | 大于 | AND(&&) | 逻辑与 |
< | 小于 | OR( | |
= | 等于 | XOR | 逻辑异或 |
!=(<>) | 不等于 | NOT(!) | 逻辑非 |
<= | 小于等于 | ||
(>=) | 大于等于 |
示例
select * from commodity where c_inprice > 50;
select c_name,c_inprice from commodity where c_inprice between 10 and 100 and c_type = 2;
select c_name,c_inprice from commodity where (c_inprice not between 10 and 100) and c_type = 2;
#between包括两边的值,而not between不包括两边的值
select * from commodity where c_outprice is null;
select * from commodity where c_type in (1,2);
select * from commodity where c_name like '变形金刚%';
AND关键字的使用
当你要同时给出两个或以上的条件时,就可以使用AND关键字连接查询条件了
示例
select field1 from tabel_name where field2='value2' and field3>value3;
BETWEEN关键字的使用
需要查询取值范围区间请使用BETWEEN AND
示例
SELECT field1 FROM table_name WHERE field2 [not] BETWEEN valuea AND valueb;
IS NULL关键字的使用
判断值是否为空
示例
SELECT field1 FROM table_name WHERE field2 IS [not] NULL;
IN关键字的使用
IN关键字可以用来匹配括号内任一值得查询的条件
示例
SELECT field1 FROM table_name WHERE field2 [not] IN (value1,value2...valuen);
LIKE关键字的使用
LIKE要和通配符一起用,不然没有用通配符的LIKE效果等同于
“=” ,常用的通配符有“_” 和“%” ;
前者是匹配单个字符的意思,后者是匹配任意字符
示例
select name from table where name like '%小米%';
ORDER BY关键字的使用
后面跟ASC(升序,可以默认不写)DESC(降序)
示例
SELECT field1,field2,... FROM table_name
WHERE CONDITION
ORDER BY fieldn [ASC|DESC];
//每个带关键字的语句书写时占一行更利于编写和查看
LIMIT关键字的使用
选取一定范围的值
示例
select * from table limit 2; //只输出前2行;
select * from table limit 0,5;//从第0行开始,输出5行;
select * from table order by sal limit 1;//按照sal列升序排序,只输出第一行,那么就得到sal最小的那条数据!
统计函数
-COUNT()函数:统计记录数;
-AVG()函数:求平均值;
-SUM()函数:求和;
-MAX()函数:求最大值;
-MIN()函数:求最小数;
其中, COUNT()函数可以通过以下两种方法来实现统计:
count(*)使用方式,实现对表中记录进行统计,不管是否包含 NULL还是NOT NULL
count(field)使用方法对指定字段进行统计,将忽略NULL值!
还有,如果表中无数据, count()函数返回的是0,其它函数返回 null;可以用来判断登陆是否成功
示例
select c_type,count(c_inprice),avg(c_id),max(c_outprice) from commodity;
###GROUP BY关键字
实现分组功能,一般和统计函数一起出现
示例
select count(*) from table group by type;
若要对分组查询结构进行条件限制查询,不能使用WHERE关键字,需要使用HAVING关键字
示例
select avg(c_inprice) ,c_type from commodity group by c_type having avg(c_inprice) >1;