MySQL语句和selete语句

DQL语句:

创建语句:CREATE TABLE      表名

查询语句:SHOW 表名

修改语句:ALTER TABLE<旧表名>RENAME[TO]<新表名>

          ALTER TABLE 表名 CHANGE 原字段名  新字段名 数据类型[属性]

添加语句:ALTER TABLE表名ADD字段名 数据类型 约束

删除语句:DROP TABLE [IF  EXISTS] 表名

ALTER TABLE 表名  DROP  字段名


DML语句:

插入语句 INSERT INTO 表名[字段名] VALUES (值列表    ) 

更新语句 UPDATE 表名 SET  列名=更新值[WHERE 更新条件]

删除语句 DELETE [FROM] 表名[WHERE <删除条件>]


DQL语句:

SELECT `no`,`name`,`num` FROM mx;

#取别名
SELECT `no` AS 号码,`name` AS 姓名,`num` AS 分数 FROM mx;
UPDATE mx SET `name`='杨幂' WHERE `no`=6;


#为查询的结果取别名
SELECT CONCAT('姓名:',`name`) AS 姓名 FROM mx;


#DISTINCT是去掉查询的重复项


#select查询中可以使用表达式
#查询自增的步长
SELECT @@auto_increment_increment
#查询MySQL的版本号 
SELECT VERSION();
#计算数据
SELECT 100*3-1 AS 计算结果;


#成绩集体提高一分
SELECT `no`,`num`+1 AS 提分后 FROM mx;


#满足条件的查询(where)
SELECT `no`,`num`
FROM mx
WHERE num>=95 AND num<=100;




#精确查询
SELECT `no`,`num`
FROM mx
WHERE `no`=1;


#比较运算符
#除了1号同学
SELECT `no`,`num`
FROM mx
WHERE `no`!=1;
#第二种方法
SELECT `no`,`num`
FROM mx
WHERE NOT `no`=1;


#模糊查询 between and /like /in /null
#查询某个姓的姓名
#like结合使用的:%(0到任意个字符) _(一个字符)
#查询姓刘的
SELECT `no`,`name` 
FROM mx
WHERE `name` LIKE '宋%';


#查询带“亦”的
SELECT `no`,`name` 
FROM mx
WHERE `name` LIKE '%儿%';


#模糊查询
SELECT `no`,`num`
FROM mx
WHERE num BETWEEN 95 AND 100;


INSERT INTO`mx`
(`no`,`name`,`num`) VALUES(7,'胖迪%',89.0);


#查询带%的姓名  需要用转移符
SELECT `no`,`name` FROM mx
WHERE `name` LIKE '%\%%';


#转移符  自定义转移符
SELECT `no`,`name` FROM mx
WHERE `name` LIKE '%/%%' ESCAPE '/';


#模糊查询 in   null
SELECT `no`,`name` FROM mx
WHERE `no`=2 OR `no`=4 OR `no`=6;


SELECT `no`,`name` FROM mx
WHERE `no`  IN(3,5,7);


SELECT `no`,`name` FROM mx
WHERE address IN('乌鲁木齐','武汉');


#null  空
#查询某一项没有填写为空时,不能写=null  要写is null
#查询某一项填写时,写 is not  null
#区别空字符串与null  当某一项没有写时为null  查询用is null
#当某一项填写后删除为空字符串是  要=' '




#连接查询
#内连接  inner join   查询两个表中的结果集中的交集
#外连接  outer join
#1.左外连接  left join   以左表为基准,右边表来一一匹配,匹配不上的,返回左表的记录,右表以null填充
#  2.右外连接  right join   以右表为基准,左边表来一一匹配,匹配不上的,返回右表的记录,左表以null填充
#自连接
#等值连接  非等值连接
#查询参加了考试的同学信息(学号、学生姓名、科目编号、分数)
SELECT * FROM student;
SELECT * FROM result;
#思路:(1)分析需求,确定查询的列来源于哪里,连接查询
#(2)确定使用哪一种连接查询? ---内连接
SELECT s.studentNo,studentName,subjectno,studentresult
FROM student AS s
INNER JOIN result AS r
ON r.`StudentNo`=s.`StudentNo`






#左外连接  student为左表   result为右表
SELECT s.studentNo,studentName,subjectno,studentresult
FROM student AS s
LEFT JOIN result AS r
ON r.`StudentNo`=s.`StudentNo`




#右外连接
SELECT s.studentNo,studentName,subjectno,studentresult
FROM student AS s
RIGHT JOIN result AS r
ON r.`StudentNo`=s.`StudentNo`


#等值连接
SELECT s.studentNo,studentName,subjectno,studentresult
FROM student AS s,result AS r
WHERE r.`StudentNo`=s.`StudentNo`


#非等值连接  左边表里m行  右边表里n行  返回总共m*n行
SELECT s.studentNo,studentName,subjectno,studentresult
FROM student AS s,result AS r


#查询参加过考试的同学信息(学号、姓名、科目名称、成绩)按降序排列
SELECT s.studentNo,studentName,subjectname,studentresult
FROM student AS s
INNER JOIN result AS r
ON r.`StudentNo`=s.`StudentNo`
INNER JOIN `subject` AS sub
ON r.`SubjectNo`=sub.`subjectno`
WHERE subjectname='语文'  AND StudentResult>=80 n
ORDER BY studentresult DESC,studentno DESC;      #默认 asc 升序


#每页显示5条记录
#(当前页码-1)*页容量   页容量
SELECT s.studentNo,studentName,subjectname,studentresult
FROM student AS s
INNER JOIN result AS r
ON r.`StudentNo`=s.`StudentNo`
INNER JOIN `subject` AS sub
ON r.`SubjectNo`=sub.`subjectno`
WHERE subjectname='语文'
ORDER BY studentresult   DESC
LIMIT 0,5    #从哪条记录开始(起始行,从0开始)  要显示几条




#子查询
#查询考试结果(学号、科目编号、成绩),并按成绩降序排列
#方法一:使用连接查询
SELECT studentno,r.`StudentNo`,studentresult
FROM result AS r 
INNER JOIN `subject` AS sub
ON r.`StudentNo` = sub.`SubjectNo`
WHERE subjectname='数学'
ORDER BY StudentResult DESC;
#方法二:使用子查询   子查询执行顺序:由里到外
SELECT studentno,subjectno,studentresult
FROM result WHERE subjectno=(SELECT subjectno FROM `subject`WHERE subjectname='数学')
ORDER BY StudentResult DESC;


#查询某课程并且分数不小于80分(学号和姓名)
SELECT r.studentno,studentname
FROM student AS s
INNER JOIN result AS r
ON s.`StudentNo`=r.`StudentNo`
WHERE StudentResult>=80
AND subjectno=(SELECT subjectno FROM `sbject` WHERE subjectname='数学')


#方法二:
#分布写简单SQL语句,然后将其嵌套起来
SELECT studentno,studentname FROM student WHERE studentno IN(
SELECT studentno FROM result WHERE studentresult>=80 AND subjectno=(
SELECT subjectno FROM `subject` WHERE subjectname='数学'))





 #自连接
 CREATE TABLE IF NOT EXISTS category(
`categoryid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`Did`INT(10) NOT NULL COMMENT '父id',
`categoryName` VARCHAR(50) NOT NULL,
PRIMARY KEY(`categoryid`)
 );
 
 INSERT INTO `category`
 VALUES('2','1','美术设计'),
 ('3','1','软件开发'),
 ('4','3','数据库基础'),
 ('5','2','ps基础'),
 ('6','2','色彩搭配'),
 ('7','3','PHP基础'),
 ('8','3','Java基础');
 
 SELECT categoryid AS 子栏目,Did AS 父栏目,categoryName AS 名字 FROM category;
 
 #编写SQL语句,将栏目的父子关系呈现出来(父栏目名称,子栏目名称)
 #把category表看做两张一模一样的表,然后将这两张表连接查询
 SELECT a.categoryName AS '父栏目',b.categoryName AS '子栏目'
 FROM category AS a,category AS b
 WHERE a.`categoryid`=b.`Did`;
 
阅读更多
想对作者说点什么? 我来说一句

mysql建表语句

2017年10月23日 1KB 下载

mysql基础语句mysql基础语句

2009年04月09日 32KB 下载

MYSQL语句大全MYSQL语句大全

2011年07月28日 45KB 下载

mySQL 常用语句

2010年08月09日 33KB 下载

Mysql常用操作语句.

2011年03月15日 88KB 下载

没有更多推荐了,返回首页

不良信息举报

MySQL语句和selete语句

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭