1. like运算符
在where子句中使用like运算符来搜索列中的指定模式,有两个通配符与like一起使用。
- %:表示0个,1个或多个
- -:下划线表示单个字符
SELECT * from Album a WHERE a.Title LIKE 'B%'; — 查找title字段中以B字母开头的数据
SELECT * from Album a WHERE a.Title LIKE '%B'; — 以B字母结尾的数据
SELECT * FROM Album a WHERE a.Title LIKE '%B%'; — 包含了B字母的数据
SELECT * FROM Album a WHERE a.Title LIKE '_B%'; — 第二个字符是B字母的数据
SELECT * FROM Album a WHERE a.Title LIKE 'B_%_%'; — 以B字母开头,且长度至少为3个字符
SELECT * FROM Album a WHERE a.Title LIKE 'B%l'; — 以B字母开头,以l字母结尾的数据
SELECT * FROM Album a WHERE a.Title NOT LIKE 'B%'; — 不以B字母开头的数据
SELECT * FROM Album a WHERE a.Title LIKE 'C__a'; — 以C字母开头,a字母结尾的四位字符的所有数据
2. in运算符
in运算符允许在where子句中指定多个值,in运算符是多个or条件的简写
SELECT * FROM Album a WHERE a.AlbumId IN (1, 2, 3, 10); — AlbumId字段数据为1, 2, 3, 10的数据
SELECT * FROM Album a WHERE a.AlbumId NOT IN (1, 2, 3); — 不为1, 2, 3的数据
SELECT * FROM Album a WHERE a.AlbumId IN (SELECT DISTINCT ArtistId FROM Album ); — AlbumId字段值为ArtistId字段值的数据
3. between运算符
在where子句中指定列的范围,可用来指定数字、文本和时间,开始值需小于结束值。
SELECT * FROM Album a WHERE a.AlbumId BETWEEN 1 AND 3; — AlbumId字段值以1开始3结尾的数据
SELECT * FROM Employee e WHERE e.BirthDate BETWEEN '1965-01-01 00:00:00' and '1972-01-01 00:00:00'; — BirthDate字段值查时间
SELECT * FROM Employee e WHERE (e.BirthDate BETWEEN '1965-01-01 00:00:00' and '1972-01-01 00:00:00') AND e.EmployeeId NOT IN (5);
4. join连接
- inner join … on …:合并两表相同值的数据,并返回
- left join … on …:即使右表中没有匹配,也从左表返回所有的行
- right join … on …:即使左表中没有匹配,也从右表返回所有的行
- full join … on …:只要其中一个表中存在匹配,则返回行
SELECT * FROM Artist a inner JOIN Album a2 ON a.ArtistId = a2.ArtistId ; — ArtistId值相同时,合并两个表ArtistId值相同的数据并返回
SELECT * FROM Artist a LEFT JOIN Album a2 ON a.ArtistId = a2.ArtistId; — 即使右表中没有匹配,也从左表返回所有的行
SELECT * FROM Artist a RIGHT JOIN Album a2 ON a.ArtistId = a2.ArtistId; — 即使左表中没有匹配,也从右表返回所有的行
SELECT * FROM Artist a FULL JOIN Album a2 ON a.ArtistId = a2.ArtistId; — 只要其中一个表中存在匹配,则返回行
5. select into 语句
将一个表复制到另一个表中
select * into table_copy from table;
6. insert into select语句
也是将一个表信息复制到另一个表中
insert into table_copy select * from table;
7. create database语句
创建一个数据库
create database my_db; — 创建数据库
show databases; — 查看数据库列表
8. create table语句
创建数据库中的表
create table my_db.table1 (
id int,
name: varchar(255)
); — 为my_db数据库创建表table1
9. alter table语句
用于在现有表中添加、删除或修改列
alter table Persons add DateOfBirth date ; — 为Persons表新增DateOfBirth的列
alter table Persons modify DateOfBirth year; — 改变DateOfBirth列的类型为year,可以存放2位或4位格式的年份
alter table Persons drop column DateOfBirth; — 删除DateOfBirth列
10. auto increment语句
自动递增,会在新纪录插入表中时生成一个唯一的数字。
create table my_db.table1 (
id int not null auto_increment, — 可递增,不为空
lastName varchar(255) not null , — 不为空
firstName varchar(255),
primary key (id) — 设置id为主键
); — 新增一个table1表,设置id为主键,可递增,不为空
11. create view、replace view、drop view语句
视图是可视化的表,创建、更新和删除视图
create view my_db.table1_view as select lastName from my_db.table1 where id > 4; — 创建一个id大于4的,只有lastName列的表,表名为table1_view,表的数据是从table1表中通过筛选条件的数据
select * from my_db.table1_view tv ; — 查询table1_view视图
create or replace view my_db.table1_view as select lastName,firstName from my_db.table1 where id > 4; — 更新视图,在table1_view中添加来了firstName列
drop view my_db.table1_view ; — 撤销视图


