SQL高级教程学习

  • 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)
    这就是说,即使另外一个表没有匹配项,也要把这个表(左右所述的表)的行输出,不匹配的列则显示null

  • union (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);

SQL上门2的更多相关文章

  1. SQL上门

    学习这个 介绍:SQL 是用于访问和处理数据库的标准的计算机语言.结构化化查询语言! SQL可以分为两大部分:数据操作语言(DML)和数据定义语言(DDL) 数据操作语言:select.update. ...

  2. 面试官:不会sql优化?出门右转顺便带上门,谢谢

    导读 作为一个后端程序员,数据库这个东西是绕不开的,特别是写sql的能力,如果您参加过多次面试,那么一定会从面试复盘中发现面试官总是会考察到sql优化这个东西. 我在之前的多次面试中最常遇到的一个问题 ...

  3. [翻译]通过使用正确的search arguments来提高SQL Server数据库的性能

    原文地址:http://www.sqlpassion.at/archive/2014/04/08/improving-query-performance-by-using-correct-search ...

  4. SQL Server 2005的XML数据修改语言(XML DML)

    转:http://www.microsoft.com/china/msdn/library/data/sqlserver/XMLDML.mspx?mfr=true 作为对XQuery语言的扩展,XML ...

  5. sql server常有的问题-实时错误'91' 对象变量或with块变量未设置

    这样的问题,对于我们这样的初学者来说,无疑是一个接触sql server后第一个艰难的问题,“实时错误'91' 对象变量或with块变量未设置”这句话到底透露出什么信息?直至写此博文,我依然看不出什么 ...

  6. 转:攻击JavaWeb应用[4]-SQL注入[2]

    转:http://static.hx99.net/static/drops/tips-288.html 攻击JavaWeb应用[4]-SQL注入[2] 园长 · 2013/07/18 17:23 注: ...

  7. 【监控笔记】【1.3】监控事件系列——SQL Trace(黑盒跟踪 BlackBox Trace)

    [1]它跟踪了哪些事件? (1.1)存储过程执行(SP:Strating) (1.2)T-SQL执行(SQL:BatchString) (1.3)错误和警告(Exception,Attention) ...

  8. sql 模块sqllit

    1.创建数据库表 面对 SQLite 数据库,我们之前熟悉的 SQL 指令都可以用: >>> create_table = "create table books (tit ...

  9. DDOS、CC、sql注入,跨站攻击防御方法

    web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 ...

随机推荐

  1. ITK Configuring and Building in VisualStudio及hello world程序编译

    1. ITK Configuring and Building in VisualStudio With Visual Studio 2010 on Windows 7 (32-bit): Launc ...

  2. 设计模式之五:工厂方法模式(Factory Method)

    工厂方法模式:定义了一个创建对象的接口,由子类来决定详细实例化那个对象.工厂方法模式让类的实例化转移到子类中来推断. Define an interface for creating an objec ...

  3. 我的Android进阶之旅------>Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.【转】

    本文转载自:http://blog.csdn.net/ouyang_peng/article/details/48048975 今天在调用MediaRecorder.stop(),报错了,java.l ...

  4. 01-S3C2440学习入门概念+环境搭建【转】

    本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/54754812 一.心得: 这两年学过很多东西,有点杂,总感觉不够踏实,于是准备写 ...

  5. Python三次登陆

    题目:Python实现三次登陆 不要急于马上把三次登陆写出来,一定要将复杂的程序简单化,必须一步一步地去扩展,这样才保证不会出错. 步骤一:实现简单的一次登陆 # 事先定义 user = 'dark_ ...

  6. bzoj4821

    线段树 这题真是无聊 把式子拆开,然后可知维护xi,yi,xi^2,xi*yi,重点在于标记下传,当我们进行2号操作时,直接累加进答案和标记即可,进行3号操作时,update时先把自己这层赋值成要改变 ...

  7. PCB SQL SERVER 正则应用实例

    我们用过SQL SERVER的都知道,SQL SERVER它本身是不自带正则表达式的,因为没有,所以基本都没用过啊, 但我们在C#中对文本匹配用正则的方式处理非常好用,省得你写一堆代码实现匹配,多简洁 ...

  8. PCB MongoDB 索引

    在索引在数据库中非常重要,当然在MongoDB也是一样啦. 一.获取索引 db.ppeflow.getIndexes() 初始化,每个集都默认_id字段为主键objectid,索引名为_id_ 二.创 ...

  9. 图练习-BFS-从起点到目标点的最短步数

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2830 简单bfs #include <s ...

  10. github fork项目更改后与原作者同步更新

    1.进入你的GitHub发起Pull request 2.选择compare across forks 3.反向操作.base fork改为自己的,head fork改为原作者的 4.点击 creat ...