与上一篇的《SQL简单使用-基础篇》相连续的篇章,《SQL简单使用-基础篇》以下简称《基础篇》。在《基础篇》中,主要简单的带大家了解一下SQL命令中最主要的增删改查命令的使用,增INSERT INTO、删DETELE/DROP/TRUNCATE、改UPDATE、查SELECTE。因为增删改查是SQL命令的核心也是最基础的部分,所以本篇张还是围绕增删改查的使用进行进阶性的介绍与使用。先从《基础篇》中提到的where子句里面的通配符讲起。1.like 用于在where子句中搜索列中的指定模式
示例:select * from websites where name like '%oo%';
注:(%分号表示任意数据,_表示任意一个数据,动手练两边就能熟悉)
‘G%’ 搜索以G开头的数据
‘%G’ 搜索以G结尾的数据
‘%g%’ 搜索包含g的数据
‘G’ 搜索以G开头的两位数据
‘G’ 搜索以G结尾的两位数据
‘G’ 搜索包含G的三位数据1.1 通配符还有一种(%、_和[charlist])
示例:[charlist]使用select * from websites where name REGEXP '^[A-H]';
2.between 用于选取介于两个值之间的数据范围内的值
示例:select * from websites where alexa between 1 and 20;
示例:添加not使用select * from websites where alexa not between 1 and 20;
示例:结合IN使用select * from websites where ( alexa BETWEEN 1 and 20) and country in ('USA','CN');
示例:文本select * from websites where name between 'A' and 'H'; 不包含H
3.top 用于规定返回记录的数据,实用
示例:SQL server (SELECT TOP number|percent column_name(s) FROM table_name;)select top 50 percent * from websites;
示例:Oracle(SELECT column_name(s) FROM table_name WHERE ROWNUM select * from websites where ROWNUM <5;
示例:MYSQL (SELECT column_name(s) FROM table_name LIMIT number;)select * from websites limit 3;
4.IN 操作符允许在where子句中规定多个值
示例:查看表websites中name列的多条数据select * from websites where name in('baidu','Google');
5.别名 可以为表名称或列名称指定别名。
语法:列名称语法
SELECT column_name AS alias_name FROM table_name;
示例:select name AS n,country AS c from websites;
语法:表名称语法
SELECT column_name(s) FROM table_name AS alias_name;
示例: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 join7.union 用于合并两个或多个select语句的结果集
语法:
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
示例: union 去重示例:union all 显示所有包括重复部分示例:带有where的union all8.1 insert into select
示例:复制 “apps” 中的数据插入到 “Websites” 中:INSERT INTO websites (name,country) select app_name,country from apps;
示例:创建名称为runoob的数据库create database runoob;
示例:创一个student_informaton表,包含五列:student_id,student_name,student_class,student_tele,student_add前面是列名,后面跟的是对于列名的数据类型10.约束 用于规定表中的数据规则
约束可以在创建表的时候通过create table语句规定,或者在表创建之后通过alter table语句规定
语法:crate table + constraint在SQL中,我们有如下约束:
NOT NULL 指示某列不能存储 NULL 值,强制字段始终包含值,否则就无法插入新记录或者更新记录。
UNIQUE 保证某列的每行必须有唯一的值。
PRIMARY KEY – NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK 保证列中的值符合指定的条件。
DEFAULT 规定没有给列赋值时的默认值。10.1 not null约束 约束强制不接受到任何null值
示例: student_tele不能为空10.2 UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
示例:MYSQL示例:SQL server/oracle示例:SQL mysql/server/oracle 定义过个列的unique约束。alter table时的unique约束
示例:示例:添加多个unique,撤销unique约束
示例:mysql示例:SQL10.3 primary key 主键必须包含唯一的值,主键不能为null,每个表都应该有一个主键,并且是唯一的。
示例:参照unique,将其中的unique替换为 primary key即可。 上述有添加多个unique示例,如果改为primary 可以意思就是主键由添加的几个列组成。10.4 foreign key 约束
a.可以用来预防破坏表之间连接的行为
b.防止非法数据插入外键列,因为它必须是指向的那个表中的值之一示例:MYSQL示例:SQL server/oracle示例:MySQL/SQL Server/Oraclealter table 使用foreign key约束
示例:示例:如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束撤销FOREIGN KEY约束
示例:mysql示例:SQL10.5 CHECK 约束
用于限制列中的值的范围
示例:MYSQLalter table 使用check约束alter table websites add check (id>0);
撤销check约束(参照unique约束中的alter table)alter table websites drop check constraint_name;
10.6 DEFAULT 约束
1.用于向列中插入默认值
2.如果没有规定其它值,那么将默认值添加到所有的记录
示例:MYSQLalter table 使用 default
示例:MYSQL示例:SQL serveralter table websites add co开发云主机域名nstraint ad_c default 'CN' for country;
示例:oraclealter table websites modify country default 'CN';
撤销default约束
示例:MYSQL示例:SQL server/oracle示例:将websites表中name列中创建名为web_index的索引。create index web_index ON websites (name);
12.drop 可以删除表,索引和数据库
DROP INDEX 语句用于删除表中的索引。
用于 SQL Server 的 DROP INDEX 语法:DROP INDEX table_name.index_name
用于 DB2/Oracle 的 DROP INDEX 语法:DROP INDEX index_name
用于 MySQL 的 DROP INDEX 语法:ALTER TABLE table_name DROP INDEX index_name
DROP TABLE 语句用于删除表。
DROP DATABASE 语句用于删除数据库。
仅仅需要删除表内的数据,但并不删除表本身TRUNCATE TABLE table_name
13.ALTER TABLE 用于在已有的表中添加、删除或修改列。
添加列的语法:ALTER TABLE table_name ADD column_name datatype;
删除表中的列语法:ALTER TABLE table_name DROP COLUMN column_name datatype;
改变表中数据类型语法:ALTER TABLE table_name MODIFY COLUMN column_name datatype;
示例: 在website表中添加名为column_date的列,然后修改列的数据类型,删除添加的列参考菜鸟教程请添加链接描述整理的笔记
相关推荐: 解决MySql无法连接本地地址localhost的方法
这篇文章将为大家详细讲解有关解决MySql无法连接本地地址localhost的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql连不上l开发云主机域名ocalhost的解决办法:1、检查IP地址是否能ping通;2…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。