--插入记录的操作--不指定具体字段名的插入INSERT[INTO]tbl_name VALUES|VALUE(...);--列出制定字段INSERT[INTO] tbl_name(字段名称,...)VALUES|VALUE(...);--同时插入多条记录INSERT[INTO] tbl_name [(字段名称,...)]VALUES|VALUE(...)()(...)...;--通过SET形式插入记录INSERT[INTO] tbl_name 字段名称=值
--将查询结果插入到表中INSERT[INTO]tbl_name[(字段名称,...)]SELECT 字段名称 tbl_name[WHERE 条件]--插入所有的数据的一条记录INSERT[INTO]user1 VALUES|VALUE(1,'king',20);--插入具体字段的值的一条记录INSERT[INTO] user1(username,password)VALUES|VALUE('a','aaa');--插入多条记录INSERTuserVALUES(6,'D',45),(233,'FASF',45),(54,'AF',84);--通过set的形式插入记录INSERTINTOuserSET id =98,username ='test',password ='fjie';--将查询结果插入到表中,字段数目必须匹配,格式也必须相同。INSERT test1 SELECT id ,username FROM user1;--更新和删除记录--有限制条件的更新记录UPDATE tbl_name SET 字段名称 = 值,...[WHERE 条件][ORDERBY 字段名称][LIMIT 限制条数]--有限值条件的删除记录DELETEFROM tbl_name [WHERE 条件][ORDERBY 字段名称][LIMIT 限制条数]--清空列鬼所有的记录TRUNCATE[TABLE]tbl_name
--示例--表单的年龄更新UPDATE user1 SET age =5;--表单的多个记录更新UPDATE user1 SET age =20,email ='123@qq.com';--表单的多个有限制条件的记录更新UPDATE user1 SET password ='king123',email ='123@qq.com',age =99WHERE id =1;--用表达式表示记录的限制条件和更新的内容UPDATE user1 SET age = age -5WHERE id >=3;--删除多个记录,但是不会清空AUTO_increment的值DELETEFROMuser;--有条件的删除记录DELETEFROM test1 WHERE id =1;--truncate彻底清空数据表,包括所有的配置TRUNCATETABLE test1;
六 表达式与查询
查询表达式
带条件的查询
范围查询
模糊查询
逻辑运算符查询
--SELECT 之后表示要查询的字段--FROM 之后表示要查询的数据库和表的名称--WHERE 之后表示要查询的记录的描述比较运算符<>=NULL、范围查询的两个关键字BETWEEN/IN、模糊查询LIKE、多条件查询AND /OR--查询表达式完整形式SELECT select_expr [,selext_expr...][FROM table_refereces
[WHERE 条件][GROUPBY {col_name|position}[ASC|DESC],...分组][HAVING 条件 对分组结果进行二次筛选][ORDERBY {col_name|position}[ASC|DESC],...排序][LIMIT 限制显示条数]]--查询表达式完整形式--每一个表达式表示想要的一列,必须至少有一列,多个列之间用逗号分隔--*通配符,表示所有列,tbl_name.*可以表示某个表的所有列--从特定表中选取特定的不同的字段值进行显示SELECT*FROM cms_admin;SELECT cms_admin.*FROM cms_admin;SELECT id,username FROM cms_admin;--表来自以哪个数据库中的表。--从特定的数据库中选取特定的表的特定的字段db_name.tbl_nameSELECT id ,username,role FROM cms.cms_admin;--字段来源于那张表SELECT cms_admin.id,cms_admin.username,cms_admin.role FROM cms.cms_admin;--给表别名来访问会更简单一些 AS可以省略SELECT a.username,a.id FROM cms_admin AS a;--给字段起别名SELECT id AS'编号',username AS'用户名', role '角色'FROM cms_admin;--当时别名是,显示的名称是别名SELECT a.id AS id1,a.username AS u FROM cms_admin;--带条件的查询,where条件的使用,比较运算符的使用SELECT id ,uername,email FROM cms_user WHERE id =1;--使用<=>检测值是否为NULL,除此之外,与=用法相同SELECT*FROM cms_admin WHERE age <=>NULL;--使用is null或者IS NOT NULLSELECT*FROM cms_admin WHERE age ISNULL;--范围查询 BETWEEN NOT BETWEEN IN NOT IN--查询编号在3-10之间的用户SELECT*FROM cms_user WHERE id BETWEEN3AND10;--查询编号为1,3,5,7,9的数SELECT*FROM cms_user WHERE id IN(1,3,5,7,9)--查询ProID为1和3的用户SELECT*FROM cms_user WHERE proID IN(1,3)--查询用户名为king,queen,张三的记录,忽略英文的大小写SELECT*FROM cms_user WHERE id IN('king','queen','张三')--模糊查询LINKE/NOT LINKE --%:代表另个一个或多个任意字符--_:代表一个人任意字符--查询姓张的用户SELECT*FROM cms_user WHERE username LIKE'%张%';--查询用户命中包含in的用户SELECT*FROM cms_user WHERE username LIKE'%in%';--查询用户名为三位的用户SELECT*FROM cms_user WHERE username LIKE'____';--_and%同时使用SELECT*FROM cms_user WHERE username LIKE'_I%';--逻辑运算符与查询AND OR--查询用户名为king,密码也为kingSELECT*FROM cms_user WHERE username ='king'AND password ='king';--查询编号不大于三的变量年龄部位null的用户SELECT*FROM cms_user WHERE id >=3AND age ISNOTNULL;--查询编号在5~10之间的用户或用户名为4位的SELECT* FROME cms_user WHERE id BETWEEN5AND10OR username LIKE'____';
七 高级的查询功能
分组查询group by
聚合函数avg
分组筛选having
结果排序order by
限制数量limit
--分组查询GROUP BY--按照用户所属省分进行分组SELECT*FROM cms_user GROUPBY proId;--按照字段位置进行分组SELECT*FROM cms_user GROUPBY7;--按照多个字段进行分组SELECT F FROM cms_user GROUPBY sex,proId;--先写条件,后对满足条件的记录进行分组SELECT*FROM cms_user WHERE id >5GROUPBY sex;--分组查询配合聚合函数--配合GROUP_CONCAT()函数进行使用--查询id,sex,username的详情 按照性别分组--通过性别分组,分组后得到username的分组详情SELECT id, sex, GROUP_CONCAT(username)FROM cms_user GROUPBY sex;--查询ProID,性别详情,注册时间详情,用户名详情 按照ProID进行分组SELECT proId ,GROUP_CONCAT(username),GROUP_CONCAT(sex),GROUP_CONCAT(regTime)FROM cms_user GROUPBY proId;--常见的聚合函数COUNT()MAX()MIN()AVG()SUM()--查询编号,sex,用户名详情以及组中总人数按照sex分组SELECT id,sex,GROUP_CONCAT(username)ASuser,COUNT(*)AS totalUsers FROM cms_user GROUPBY sex;--COUNT(字段)不统计NULL值SELECTCOUNT(id)AS totalUsers FROM cms_user;--查询编号,sex,用户名详情以及组中总人数,组中最大年龄,最小年龄,平均年龄,年龄总和按照sex分组SELECT id,sex,GROUP_CONCAT(username),COUNT(*)AS totalUsers,MAX(age)AS max_age,MIN(age)AS min_age,AVG(age)AS avg_age,SUM(age)AS sum_age
FROM cms_user GROUPBY sex;--配合WITH ROLLUP记录上面所有记录的总和--在末尾加上WITH ROLLUP 属于聚合统计次字段的总的内容SELECT id,sex,COUNT(*)AS totalUsers,MAX(age)AS max_age,MIN(age)AS min_age,AVG(age)AS avg_age,SUM(age)AS sum_age
FROM cms_user GROUPBY sex WITH ROLLUP;--having语句对分组结果进行二次筛选SELECT id,sex,GROUP_CONCAT(username),COUNT(*)AS totalUsers,MAX(age)AS max_age,MIN(age)AS min_age,AVG(age)AS avg_age,SUM(age)AS sum_age
FROM cms_user GROUPBY sex
HAVINGCOUNT(*)>2ANDMAX(age)>60;--ORDER BY 对查询结果进行排序;--查询按照id降序进行排列DESC /ASCSELECT*FROM cms_user ORDERBY id ASC;--按照多个字段进行排序SELECT*FROM cms_user ORDERBY age ASC,id DESC;--实现随机提取记录ORDERBY RAND();--通过limit限制显示条数--LIMIT 显示条数--LIMIT偏移量,显示条数--查询表中前三条记录SELECT*FROM cms_user LIMIT3;SELECT*FROM cms_user ORDERBY id DESCLIMIT5;SELECT*FROM cms_user LIMTI 10,5;