mysql的基础用法,增删查改。

数据库知识回顾
1,mysql的安装
2,通过工具:建库、建表、操作表(增删改查)
3,SQL语句(重点)
(1)插入语句

语法:insert into 表(列1,列2,...)values(值1,列2,...)
-- 标准的插入语句
INSERT INTO user_info(id,birthday,address,NAME)VALUES(3,'1992-1-1',6,'沙僧')
-- 使用自增列的插入语句
INSERT INTO user_info(NAME,birthday,address)VALUES('bajie','1998-3-5',7)
-- 省略列名的插入语句
INSERT INTO user_info VALUES(4,'白晶晶','1993-2-1',10)
-- 使用系统当前时间来插入日期
INSERT INTO user_info VALUES(5,'铁扇公主',NOW(),11)
-- 插入多行的插入语句
INSERT INTO user_info(NAME,birthday,address) VALUES('王五',NOW(),12),('哪吒',NOW(),68),('唐僧',NOW(),111)
-- 备份数据的插入语句
INSERT INTO user_bak(NAME,birthday) SELECT NAME,birthday FROM user_info

(2)修改语句

语法:update 表名 set 列1=值1,列2=值2 where 条件
UPDATE user_info SET NAME='齐天大圣',birthday=NOW(),address=6 WHERE id=1

(3)删除语句

语法:delete from 表名 where 条件
DELETE FROM user_info WHERE id IN(1,2,6)

4,SQL查询(重点掌握)
(1)基础查询
语法:select * from 表 where 条件 order by 排序列 limit 限制行数
– 查询表中所有数据

SELECT * FROM user_info;
-- 重命名查询 : as
SELECT NAME AS '姓名',birthday AS '生日',address AS '城市' FROM user_info;
-- 排序查询:order by
SELECT * FROM user_info ORDER BY birthday,address DESC
-- 限制行查询:limit m,n (m表示开始行,n表示查询的行数)
SELECT * FROM student_score ORDER BY score DESC LIMIT 3
查询的时候快一点(百度网页的例子)
-- 分页查询(page表示当前页,size表示每页显示的行数)
SELECT * FROM user_info LIMIT 5;
SELECT * FROM user_info LIMIT 5,9;
-- 分页SQL语句
SELECT * FROM user_info LIMIT size*(page-1),size
-- page=2,size=3
SELECT * FROM user_info LIMIT 3,3
3.
-- 模糊查询(like配合通配符:% 表示任意个字符  _ 表示任意一个字符)
-- 查询姓张的人
SELECT * FROM user_info WHERE NAME LIKE '张%';
-- 查询名字中含三的人
SELECT * FROM user_info WHERE NAME LIKE '%三%';
-- 查询姓张并且名是一个字的人
SELECT * FROM user_info WHERE NAME LIKE '张_';

(2)聚合函数查询

统计个数:count(*)
-- 用户表的总人数
SELECT COUNT(*) FROM user_bak;
SELECT COUNT(NAME) FROM user_bak; -- 不统计name为null的行
SELECT COUNT(NAME) FROM user_bak; -- 不统计name为null的行
-- 去重后统计:统计用户表中的人来自于多少个不同的城市
SELECT COUNT(DISTINCT address) FROM user_info;
求和统计:sum(数值列)
-- 求总分数
SELECT SUM(score) FROM student_score;
均值统计:avg(数值列)
-- 求平均分
SELECT AVG(score) FROM student_score;
求最大值:max(数值列)
SELECT MAX(score) FROM student_score;
求最小值:min(数值列
SELECT MIN(score) FROM student_score;
-- 求总分数
SELECT SUM(score) FROM student_score;
-- 求平均分
SELECT AVG(score) FROM student_score;
-- 求最值
SELECT MAX(score) FROM student_score;
SELECT MIN(score) FROM student_score;

(3)分组查询

select 聚合函数 from 表 group by 列名
-- 求每个城市的人数
SELECT address,COUNT(*) FROM user_info GROUP BY address;
-- 求每个城市的最大年龄
SELECT address,MAX(age) FROM user_info GROUP BY address;
-- 求男生和女生的人数
SELECT COUNT(*) FROM user_info WHERE sex='男'
SELECT COUNT(*) FROM user_info WHERE sex='女'
SELECT sex,COUNT(*) FROM user_info GROUP BY sex

(4)表连接查询
前提:表与表之间存在“主外键关系”

a,内连接
	select * from A inner join B on A.主键=B.外键
	select * from A,B where A.主键=B.外键
	-------------------------------------------------------------------------------------------
	-- 高效
	SELECT * FROM user_info INNER JOIN city_info ON user_info.address=city_info.cid;
	SELECT u.name,c.name FROM user_info u INNER JOIN city_info c ON u.address=c.cid;
	-- 语法简单
	SELECT NAME,cname FROM user_info u,city_info c WHERE u.address=c.cid;
b,外连接
  		SELECT NAME cname FROM user_info LEFT(RIGHT) JOIN city_info ON  uesr_info.address=city_info.cid;
  		左外连接看左表,以左表为主表。
  		右外连接看右表,以右表为主表,(这两个用聚合函数是,尤其是COUNT(根据情况加列),COUNT不统计NULL的个数。)

(5)子查询
–子查询的列和条件需要对应,一般情况下子查询的结果需要唯一。除非i IN 子查询
概念:一个查询语句嵌套在另一个查询语句中的查询。

SELECT * FROM user_info WHERE age=(SELECT age FROM user_info WHERE NAME = '张三');
SELECT * FROM user_info WHERE age IN (SELECT age FROM user_info WHERE NAME LIKE '张%');
SELECT pname AS '姓名',cname AS '球队', body AS '身体',shoot AS '投篮' FROM clubs c INNER JOIN (SELECT pname,body,shoot,control,cid FROM player p INNER JOIN abiilities a ON p.PID=a.PID  ) b ON c.cid=b.cid

以上是一些简单的mysql语句,希望可以帮到大家一点。

猜你喜欢

转载自blog.csdn.net/qq_40184713/article/details/85015312