1、语法:select from 表名; as:将某个字段取个别名
2、语法:select distinct from 表名; 去掉重复项,对应的字段前加符号表达:
找出名字当中含有O的?(在模糊查询当中,必须掌握两个特殊的符号,一个是%,一个是_)。%代表任意多个字符,_代表任意1个字符。
select ename from emp where ename like '%O%';
”*“通配符:匹配任意列名 “_"通配符:匹配单个字符 “%”通配符:匹配任意字符
可以使用order by子句对查询结果安装一个或多个属性列(多个属性逗号隔开)的升序(ASC)或降序(DESC)排列,默认为升序。
--查询结果按照bookPrice列值的降序排列 select * from books order by bookPrice desc;
对某一组数据进行操作(在where操作之后):(又名多行处理函数)自动忽略null
例:
#查询book表中年龄最大的
select max(age) from book;
将查询结果按某一列或多列的值分组,值相等的为一组。
规则:当一条语句中有group by的话,select后面只能跟分组函数和参与分组的字段。也就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。
select count(*),pressName from books group by pressName;
如:下列表中,叫 “人民邮电出版社” 名字的有1个,叫 ”清华大学出版社“ 的有6个。
ifnull(可能为null的数据被当作什么处理):属于单行处理函数分组。
distinct 关键字去除重复记录(只能出现在所有字段的最前面)。
select 5
..
from 1
..
where 2
..
group by 3
..
having 4
..
order by 6
...
limit {[offset,]row_count | row_count OFFSET offset} 7
## 查询
根据两个表或多个表的列之间的关系来查询数据,即连接查询。
连接查询实际是通过表与表之间相互关联的列进行数据的查询,对于关系数据库来说,连接是查询最主要的特征。 简单连接使用逗号将两个或多个表进行连接,也是最常用的多表查询形式。
例:
select b.reader_id,br.book_name from books b,borrow_record br where b.ISBN=br.ISBN;
除了使用逗号连接外,也可使用JOIN连接。
1)等值连接
select * from books b inner join borrow_record br where b.ISBN=br.ISBN;
2)不等连接
select * from books b inner join borrow_record br where b.ISBN<>br.ISBN;
1)左连接 on后面也可使用 where执行条件判断
select * from books b left join borrow_record br on b.ISBN=br.ISBN;
2)右连接 on后面也可使用 where执行条件判断
select * from books b right join borrow_record br on b.ISBN=br.ISBN;
SQL语言中,一个select-from-where语句被称为一个查询块。将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询被称为嵌套查询。 语法:select from where [表达式] (select from where [表达式] )
select * from books where isbn in (select * isbn from brrowrecord where reader_id='201801');
指父查询与子查询之间用比较运算符连接。可以用 >、=、 等比较运算符。
select * from books where isbn=(select * isbn from brrowrecord where reader_id='201801');
子查询返回值单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL谓语,使用ANY或ALL谓语时必须同时使用比较运算符。
谓语释义:
例:
#查询读者编号为"201801"的学生未借阅的所有图书的详细信息;
select * from books where isbn <> all(select isbn from brrowwrecord where reader_id="201801");
EXISTS谓语的子查询不返回任何数据,是一个布尔值(true或false)逻辑判断。使用存在量词EXISTS后,若内层查询结果为空,则外层的WHERE子句返回ture,否则取反。 例:
#查询读者编号为201801的读者没有借阅过的图书信息
select * from books where not exists (
select * from borrowrecord where isbn=books.isbn and reader_id="201801"
);
#两个表字段合并显示,两个表相同字段合并后显示一次
select * from t_major1 union select * from t_major;
(取出结果集中的部分数据)
limit startindex length
语法:insert [into] 表名 [字段1,字段n] values(值1,值n);
insert into test values(123,'tt');
insert into test(pid) values(124);
insert into test values(125,'ttww'),(126,'ttwwe'),(127,'ttqqq');
使用select查询出来的内容字段,插入到inert对应的字段
语法:insert [into] 表名1 [字段1,字段n] select [字段1,字段n] from 表名2 [where语句];
insert into test-1 select * from test-2;
insert into test-1(pid,name) select pid,name from test-2;
语法:delete from 表名 [where ];
delete from test; ## 删除所有记录
delete from test where pid==123; #删除id为123的这条记录。
语法:update 表名 set 列名1 = 值1,列名2 = 值2,…[where 条件];
【数据库】 mysql的四种安装方式_mysql安装-CSDN博客