SQL上门2
- MySQL的字符匹配和其他数据库不同,一下语句查找(第一个字符不是h,第三个字符是m)不能用“!”
select * from country
where countryname rlike '^[^h].[m]';^是开始的语法;[[^abc]表示非abc字符;. 号代表一个字符;[a-f]表示a到f任意字符
- IN 操作符,在集合种匹配,以下语句查找(“peoplecount”是可以为括号选项)
select * from country
where peoplecount in(1,3,5,7,10,13); - BETWEEN - AND -,(MySQL)在闭区间查找
- inner join:内链接,连接两个表,按照组合的方式输出(on关键子则表示条件 从组合种筛选出符合条件的返回)
select country.countryname,country.location,island.belong
from country
inner join island
on country.location=island.countrylocation;3种join inner/left/right + join 分别表示两个表的交集/左表/右表 ( MySQL不支持full out join)
这就是说,即使另外一个表没有匹配项,也要把这个表(左右所述的表)的行输出,不匹配的列则显示nullunion (all) 关键子,用于合并多个select查询的结果,all关键字允许重复的出现结果;
注意:union内部的select结果必须具有相同的 列数、列的类型和列顺序- SQL约束
- not null:非空,表示该列的值不能为空,否则无法插入数据;下表种 “myname” 列不能为 “null”
create table tests
(
id int primary key auto_increment,
myname char(255) not null,
age int
); - unique:唯一,表示该项必须是唯一的,null可以重复;下表种 “学号” 列必须是唯一的
create table tests
(
id int primary key auto_increment,
myname char(255) not null,
xuehao int,
age int,
unique(xuehao)
);撤销约束:下面的SQL,将撤销tests表种xuehao列的约束
alter table tests
drop index xuehao; - primary key:主键约束:表种必须只有一个主键,但是主键可以是多个列的组合;下面的SQL语句规定 id 和 xuehao 的组合为主键
- 第二句SQL用于删除主键约束,注意,MySQL删除主键之前必须先删除自增约束(使用modify改变类型或者change改名同时改掉类型)
create table tests
(
id int auto_increment,
myname char(255) not null,
xuehao int,
constraint prke primary key (id,xuehao)
); alter table tests
drop primary key; - foreign key :外键,与另外数据表的主键关联;第二SQL语句规定了amount和tests表中的id关联;关联之后列的数据必须存在于被关联的表中
create table tests(
id int primary key auto_increment,
myname char(50) not null,
score int
); create table tonji(
id int primary key auto_increment,
amount int,
foreign key(amount) references tests(id)
);如果尝试插入被关联表中不存在的主键:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`test`.`tonji`, CONSTRAINT `tonji_ibfk_1` FOREIGN KEY (`amount`) REFERENCES `tests` (`id`))
- check:MySQL中check不能起到强制的作用,对有限的量可以采用枚举的方式(enum);下句SQL规定score只能选枚举出来的这几个选项否则无法插入数
create table stu(
id int primary key auto_increment,
stuname char(50),
score enum('A','B','C','D')
);下句SQL试图插入意外的字符
insert into stu
values(null, 'tbhrv', 'X');报错:Error Code: 1265. Data truncated for column 'score' at row 1
- default:设置默认值;下面这句SQL规定了分数的默认值为‘D’
create table stu(
id int primary key auto_increment,
stuname char(50),
score enum('A','B','C','D') default 'D'
); - 索引:索引用来增加搜索的速度,但是自身也需要消耗时间,所以用在经常查询的表中;下句SQL为score列增加(唯一)索引
create index stuindex on stu(score);
- foreign key :外键,与另外数据表的主键关联;第二SQL语句规定了amount和tests表中的id关联;关联之后列的数据必须存在于被关联的表中
SQL上门2的更多相关文章
- SQL上门
学习这个 介绍:SQL 是用于访问和处理数据库的标准的计算机语言.结构化化查询语言! SQL可以分为两大部分:数据操作语言(DML)和数据定义语言(DDL) 数据操作语言:select.update. ...
- 面试官:不会sql优化?出门右转顺便带上门,谢谢
导读 作为一个后端程序员,数据库这个东西是绕不开的,特别是写sql的能力,如果您参加过多次面试,那么一定会从面试复盘中发现面试官总是会考察到sql优化这个东西. 我在之前的多次面试中最常遇到的一个问题 ...
- [翻译]通过使用正确的search arguments来提高SQL Server数据库的性能
原文地址:http://www.sqlpassion.at/archive/2014/04/08/improving-query-performance-by-using-correct-search ...
- SQL Server 2005的XML数据修改语言(XML DML)
转:http://www.microsoft.com/china/msdn/library/data/sqlserver/XMLDML.mspx?mfr=true 作为对XQuery语言的扩展,XML ...
- sql server常有的问题-实时错误'91' 对象变量或with块变量未设置
这样的问题,对于我们这样的初学者来说,无疑是一个接触sql server后第一个艰难的问题,“实时错误'91' 对象变量或with块变量未设置”这句话到底透露出什么信息?直至写此博文,我依然看不出什么 ...
- 转:攻击JavaWeb应用[4]-SQL注入[2]
转:http://static.hx99.net/static/drops/tips-288.html 攻击JavaWeb应用[4]-SQL注入[2] 园长 · 2013/07/18 17:23 注: ...
- 【监控笔记】【1.3】监控事件系列——SQL Trace(黑盒跟踪 BlackBox Trace)
[1]它跟踪了哪些事件? (1.1)存储过程执行(SP:Strating) (1.2)T-SQL执行(SQL:BatchString) (1.3)错误和警告(Exception,Attention) ...
- sql 模块sqllit
1.创建数据库表 面对 SQLite 数据库,我们之前熟悉的 SQL 指令都可以用: >>> create_table = "create table books (tit ...
- DDOS、CC、sql注入,跨站攻击防御方法
web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 ...
随机推荐
- 一款炫酷Loading动画--载入失败
简单介绍 上一篇文章一款炫酷Loading动画–载入成功.给大家介绍了成功动画的绘制过程,这篇文章将接着介绍载入失败特效的制作. 相比成功动画,有了前面的经验,失败动画的过程就显得比較简单了. 动画结 ...
- 解决 C++ 操作 MySQL 大量数据插入效率低下问题
往 Mysql 中,插入10000条简单数据.速度很缓慢,竟然要5分钟左右, 可是打开事务的话.一秒不到就搞定了 代码: #include <iostream> #include < ...
- Android自定义用户控件简单范例(一)
一款优秀的移动应用需要具有自己独特统一的风格,通常情况下UI设计师会根据产品需求和使用人群的特点,设计整体的风格,界面的元素和控件的互效果.而原生态的Android控件为开发人员提供的是最基本的积木元 ...
- jsp 中声明方法的使用
1.在"<%!"和"%>"之间声明方法,该方法在整个JSP页面有效.可是该方法内定义的变量仅仅在该方法内有效. 这些方法将在Java程序片中被调用, ...
- eclipse 自己主动为getter和setter加入中文凝视
在我们使用eclipse进行开发的时候经常会使用到eclipse自己主动生成getter和setter的功能,然后大多情况下eclipse为我们生成的getter和setter都是无法在项目中使用的. ...
- 【Aladdin Unity3D Shader编程】之四 贴图纹理
关于纹理贴图介绍 纹理坐标也叫UV坐标,UV坐标都是0~1,并不是我们所理解的像素坐标,相当于是一个百分比. 编写shader映射纹理 将纹理的颜色取代漫反射的颜色 Shader "Alad ...
- oc67--NSString1
// // main.m // NSString基本概念 // Foundation框架,苹果有80多个框架,Foundation有125个头文件. #import <Foundation/Fo ...
- touch事件的分发机制
作者:谢昆 一段伪代码反应整个touch事件的分发 public boolean dispatchTouchEvent(MotionEvent event) { boolean consume = f ...
- 编码格式(UTF-8 与 ANSI)各种编码解码(encode、decode)
Windows:默认为 ANSI,记事本程序另存为处,可以设置其他编码格式: Ubuntu:默认为 UTF-8 1. ANSI ANSI 编码表示英文字符时用一个字节,表示中文用两个或四个字节 -- ...
- IDEA maven不能下载源码:" can not download source"问题
用IDEA无法下载源码,可以在命令行项目根目录下,执行如下命令 :mvn dependency:resolve -Dclassifier=sources下载 也可以在idea设置中设置为自动下载源码