A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

与上一篇的《SQL简单使用-基础篇》相连续的篇章,《SQL简单使用-基础篇》以下简称《基础篇》。在《基础篇》中,主要简单的带大家了解一下SQL命令中最主要的增删改查命令的使用,增INSERT INTO、删DETELE/DROP/TRUNCATE、改UPDATE、查SELECTE。因为增删改查是SQL命令的核心也是最基础的部分,所以本篇张还是围绕增删改查的使用进行进阶性的介绍与使用。
先从《基础篇》中提到的where子句里面的通配符讲起。
1.like 用于在where子句中搜索列中的指定模式
示例:
[AppleScript] 纯文本查看 复制代码
select * from websites where name like '%oo%';

注:(%分号表示任意数据,_表示任意一个数据,动手练两边就能熟悉)
'G%' 搜索以G开头的数据
'%G' 搜索以G结尾的数据
'%g%' 搜索包含g的数据
'G' 搜索以G开头的两位数据
'G' 搜索以G结尾的两位数据
'G' 搜索包含G的三位数据
1.1 通配符还有一种(%、_和[charlist])
示例:[charlist]使用
[AppleScript] 纯文本查看 复制代码
select * from websites where name REGEXP '^[A-H]';
2.between 用于选取介于两个值之间的数据范围内的值
示例:
[AppleScript] 纯文本查看 复制代码
select * from websites where alexa between 1 and 20;

示例:添加not使用
[AppleScript] 纯文本查看 复制代码
select * from websites where alexa not between 1 and 20;

示例:结合IN使用
[AppleScript] 纯文本查看 复制代码
select * from websites where ( alexa BETWEEN 1 and 20) and country in ('USA','CN');

示例:文本
[AppleScript] 纯文本查看 复制代码
select * from websites where name between 'A' and 'H'; 不包含H
3.top 用于规定返回记录的数据,实用
示例:SQL server (SELECT TOP number|percent column_name(s) FROM table_name;)
[AppleScript] 纯文本查看 复制代码
select top 50 percent * from websites;

示例:Oracle(SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;)
[AppleScript] 纯文本查看 复制代码
select * from websites where ROWNUM <5;

示例:MYSQL (SELECT column_name(s) FROM table_name LIMIT number;)
[AppleScript] 纯文本查看 复制代码
select * from websites limit 3;
4.IN 操作符允许在where子句中规定多个值
示例:查看表websites中name列的多条数据
[AppleScript] 纯文本查看 复制代码
select * from websites where name in('baidu','Google');
5.别名 可以为表名称或列名称指定别名。
语法:列名称语法
SELECT column_name AS alias_name FROM table_name;
示例:
[AppleScript] 纯文本查看 复制代码
select name AS n,country AS c from websites;

语法:表名称语法
SELECT column_name(s) FROM table_name AS alias_name;
示例:
[AppleScript] 纯文本查看 复制代码
select w.name,w.url,a.count,a.date from websites AS w ,access_log AS a where w.id=a.site_id and w.name='菜鸟教程';

注:
1.在查询中涉及超过一个表
2.在查询中都是用了函数
3.列名称很长或者可读性差 都需要把两个列或者多个列结合在一起。
6.join 子句用于把来自两个表或者多个表的行结合起来,基于这些表之间的共同字段
join类型有一下几种:
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行(MYSQL不支持
首先,连接的结果可以在逻辑上看作是由SELECT语句指定的列组成的新表。
左连接与右连接的左右指的是以两张表中的哪一张为基准,它们都是外连接。
外连接就好像是为非基准表添加了一行全为空值的万能行,用来与基准表中找不到匹配的行进行匹配。假设两个没有空值的表进行左连接,左表是基准表,左表的所有行都出现在结果中,右表则可能因为无法与基准表匹配而出现是空值的字段。
来源:《数据库系统原理教程》,王珊,陈红编著,P86
示例: inner join
[AppleScript] 纯文本查看 复制代码
SELECT
    websites.id,
    websites.NAME,
    access_log.count,
    access_log.date
FROM
    websites
INNER JOIN access_log ON websites.id = access_log.site_id;
7.union 用于合并两个或多个select语句的结果集
语法:
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
示例: union 去重
[AppleScript] 纯文本查看 复制代码
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country; 
示例:union all 显示所有包括重复部分
[AppleScript] 纯文本查看 复制代码
select country from websites
union all
select country from apps;
示例:带有where的union all
[AppleScript] 纯文本查看 复制代码
select country,name from websites where country='CN'
union all
select country,app_name from apps where country='CN' order by country;
  • into 从一个表复制数据,把数据插入到另一个新表中
    注:MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 。
    语法: 复制所有的列插入新表中
    [AppleScript] 纯文本查看 复制代码
    SELECT * INTO newtable [IN externaldb] FROM table1;

    语法:只复制希望的列插入到新表中
    [AppleScript] 纯文本查看 复制代码
    SELECT column_name(s) INTO newtable [IN externaldb] FROM table1;

8.1 insert into select
示例:复制 "apps" 中的数据插入到 "Websites" 中:
[AppleScript] 纯文本查看 复制代码
INSERT INTO websites (name,country) select app_name,country from apps;
  • create 用于创建数据库或者数据表
    语法:创建数据库
    [AppleScript] 纯文本查看 复制代码
    create database db_name;

    语法:创建数据表
    [AppleScript] 纯文本查看 复制代码
    create table table_name
    (
    column_name1 data_type(size),
    column_name2 data_type(size),
    column_name3 data_type(size),
    ... ...
    );    date_type 数据类型,size参数规定表中列的最大长度

示例:创建名称为runoob的数据库
[AppleScript] 纯文本查看 复制代码
create database runoob;

示例:创一个student_informaton表,包含五列:student_id,student_name,student_class,student_tele,student_add
[AppleScript] 纯文本查看 复制代码
create table student_infomation 
(
student_id int(10),
student_name char(4),
student_class char(10),
student_tele int(11),
student_add varchar(255)
);
前面是列名,后面跟的是对于列名的数据类型
10.约束 用于规定表中的数据规则
约束可以在创建表的时候通过create table语句规定,或者在表创建之后通过alter table语句规定
语法:crate table + constraint
[AppleScript] 纯文本查看 复制代码
create table table_name
(
column_name1 type_data(size) constraint,
column_name2 type_data(size) constraint,
column_name3 type_data(size) constraint,
... ...
);

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马