使用DQL查询数据 ~ ~刚需

#该表类型(存储引擎)InnoDB
CREATE TABLE test(
id INT(4) PRIMARY KEY AUTO_INCREMENT,
coll VARCHAR(20) NOT NULL
);

#往表里插入数据
INSERT INTO test(coll) VALUES(‘row1’),(‘row2’),(‘row3’);

#删除表数据(不带where条件的delete)
#自增当前值依然从原来基础上进行
DELETE FROM test;

#删除表全部数据(truncate)
#自增值恢复到初始值重新开始
TRUNCATE TABLE test;

#创建俩个表,分比为innoDB类型,MyISAM类型

CREATE TABLE tab1(
id INT(4) PRIMARY KEY AUTO_INCREMENT,
coll VARCHAR(20) NOT NULL

)ENGINE=INNODB;

INSERT INTO tab1(coll) VALUES(‘row1’),(‘row2’),(‘row3’);

CREATE TABLE tab2(
id INT(4) PRIMARY KEY AUTO_INCREMENT,
coll VARCHAR(20) NOT NULL

)ENGINE=MYISAM;

INSERT INTO tab2(coll) VALUES(‘row1’),(‘row2’),(‘row3’);

#清空表数据
DELETE FROM tab1;
DELETE FROM tab2;

#表数据清空之后 id在插入就是从4开始

#重启数据库服务后tab1:id是从1开始
#重启数据库服务后tab2:id是从4开始

#同样适用detale from 清空表数据,重启数据库服务后,对于INNODB的表,自增列从初始值重新开始
#而MYISAM类型的表,自增列依然从上一个自增数据基础开始

#启动数据库服务 net start mysql
#停止数据库服务 net stop mysql

#查询表( * 所有列,效率低)
SELECT * FROM tab1;
SELECT * FROM student;

查询 指定列(学号 姓名)

#(不影响原表原数据 ,只是给顾客方便看 )
SELECT studentno,studentname FROM student;

#为列取别名( AS 是可以省略 )
SELECT studentno AS 学号,studentname AS 姓名 FROM student;

SELECT studentno 学号,studentname 姓名 FROM student;

#使用AS也可以为 表 取别名( AS 是可以省略 )
SELECT studentno AS 学号,studentname AS 姓名 FROM student AS s;

SELECT studentno 学号,studentname 姓名 FROM student s; #连接时用处比较大

#使用AS ,微查询结果取一个新名字
SELECT CONCAT(‘姓名:’,studentname) AS 新姓名 FROM student;

#查询所有学号—加了 去除重复项 (DISTINCT ,默认all all和DISTINCT相反)
SELECT DISTINCT studentno FROM student;

#select 查询中可以使用表达式
SELECT @@auto_increment_increment; #自增的步长
SELECT VERSION(); # mysql版本号
SELECT 1003-1 AS 计算结果; #查询 1003-1的 计算结果 是多少

#地址集体加1
SELECT studentno,address+1 AS ‘加完之后的地址’ FROM student;

#满足条件的查询(where)
#模糊查询 ( AND 和 && 作用一样 )
SELECT studentno,gradeid FROM student
WHERE gradeid BETWEEN 1 AND 3;

#精确查询
SELECT studentno,gradeid FROM student
WHERE studentno=1001;

#除了1001之外的
SELECT studentno,gradeid FROM student
WHERE studentno!=1001;

#也可以这样写
SELECT studentno,gradeid FROM student
WHERE NOT studentno=1001;

#模糊查询 between and\ like \in \ null
#查询姓李的同学的学号及姓名
#like 结合使用的% (0到任意个字符) _ (代表一个字符)
SELECT studentno,studentname
FROM student
WHERE studentname LIKE ‘姓%’;

#名字中只有一个字比如 : 马武
#一个 _ 代表一个字 也可以两个 __
SELECT studentno,studentname
FROM student
WHERE studentname LIKE ‘姓_’;

#按有 姓 字 查询
SELECT studentno,studentname
FROM student
WHERE studentname LIKE ‘%姓%’;

#模糊查询
SELECT studentno,studentname FROM student;
#like & _

#转义符号 %
SELECT studentno,studentname
FROM student
WHERE studentname LIKE ‘%%%’;

#转义符号\ 能不能使用我自己定义的转义符(:)呢?
#可以 但是要加上 ESCAPE ‘:’
SELECT studentno,studentname
FROM student
WHERE studentname LIKE ‘%:%%’ ESCAPE ‘:’;

#模糊查询 in
SELECT studentno,studentname
FROM student
WHERE studentno IN (1001,1002,1000);

#连接查询 : 利用表和表之间的关系,可以查到多个不同表中的数据

#内连接用的是 inner join 查询两个表中的结果中的交集
#内连接用的是 outer join

#左外连接 left join 以左表作为基准,右边表来一一匹配,匹配不上的,返回左表的记录,右表以null填充

#右外连接 right join 以右表作为基准,左边表来一一匹配,匹配不上的,返回右表的记录,左表以null填充
#自连接

#等值连接 非等值连接

#思路 1先要知道用那几个表 2在确定用哪一种连接查询方式
#内连接语法
SELECT student.studentno,studentname
FROM student
INNER JOIN grade
ON grade.gradeid=student.studentno;

#左外连接 left join
SELECT student.studentno,studentname
FROM student
LEFT JOIN grade
ON grade.gradeid=student.studentno;

#右外连接
SELECT student.studentno,studentname
FROM student
RIGHT JOIN grade
ON grade.gradeid=student.studentno;

#等值连接
SELECT student.studentno,studentname
FROM student student,grade
WHERE grade.gradeid=student.studentno;

#非等值连接 返回的是左边表里的行数乘以右边表里的行数

#返回两个日期的天数
SELECT DATEDIFF(NOW(),‘1997-10-31’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值