SQL语句的详细操作(二)

SQL进阶语句

  • select limit

select * from person limit 5;

在这里插入图片描述

  • select like

-- %可以替换多个字母
select * from person where lastname like '%b';
-- 可以两端同时匹配%
select * from person where lastname like '%o%';
-- 一个_只能匹配一个字母
select * from person where lastname like 'T_m';
-- 可以使用多个_
select * from person where lastname like 'G__es';

在这里插入图片描述
这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • select charlist

-- regexp支持正则表达式
select * from person where lastname regexp '^[TB]';

在这里插入图片描述

  • select in

select * from person where lastname in ('Bob', 'Dell');

在这里插入图片描述

  • select between

select * from person where id between 1 and 5;

在这里插入图片描述

  • select alias

select firstname one, lastname two from person;

在这里插入图片描述

  • select join

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. inner join

在这里插入图片描述

select Websites.name, access_log.count, access_log.date
from Websites
inner join access_log
on Websites.id=access_log.site_id
order by access_log.count;

在这里插入图片描述

  1. left join

在这里插入图片描述

select Websites.name, access_log.count, access_log.date
from Websites
left join access_log
on Websites.id=access_log.site_id
order by access_log.count desc;

在这里插入图片描述

  1. right join

在这里插入图片描述

select websites.name, access_log.count, access_log.date
from websites
right join access_log
on access_log.site_id=websites.id
order by access_log.count desc;

在这里插入图片描述

  1. full join

在这里插入图片描述

-- MySQL中不支持 full outer join,你可以在 SQL Server 测试以下实例。
select Websites.name, access_log.count, access_log.date
from Websites
full outer join access_log
on Websites.id=access_log.site_id
order by access_log.count desc;
  • select union

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

    请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
    在这里插入图片描述
    在这里插入图片描述

select country from Websites
union
select country from apps
order by country;

select country from Websites
union all
select country from apps
order by country;

在这里插入图片描述
在这里插入图片描述

  • select into
    select into 语句从一个表复制数据,然后把数据插入到另一个新表中。
-- MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 。
select *
into newtable [in externaldb]
from table1;

select column_name(s)
into newtable [in externaldb]
from table1;
  • insert into select
    insert into select 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
insert into Websites (name, country)
select app_name, country from apps;

insert into Websites (name, country)
select app_name, country from apps
where id=1;
  • create constraint
    在这里插入图片描述
create tablePersons (
    ID int not null,
    LastName varchar(255) not null,
    FirstName varchar(255) not null,
    Age int
);

create table Persons
(
P_Id int not null,
LastName varchar(255) not null,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
unique (P_Id)
);

create table Persons
(
P_Id int not null,
LastName varchar(255) not null,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
primary key (P_Id)
);

create table Persons
(
P_Id int not null,
LastName varchar(255) not null,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
check (P_Id>0)
);

create table Persons
(
    P_Id int not null,
    LastName varchar(255) not null,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255) DEFAULT 'Sandnes'
);
  • auto increment
create table Persons
(
ID int not null auto_increment,
LastName varchar(255) not null,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
primary key (ID)
);
  • null
-- 无法使用比较运算符来测试 NULL 值,比如 =、< 或 <>。
-- 我们必须使用 IS NULL 和 IS NOT NULL 操作符。
select LastName,FirstName,Address from Persons
where Address is null;
  • ifnull()
select lastname, ifnull(city, '123') from person;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42647711/article/details/109233108
今日推荐