`
足至迹留
  • 浏览: 486710 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论

sql基础回顾-1 (top, join, select into, constraints)

 
阅读更多
轻轻拍打的回忆。

1.SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集, Result-Set)。
由 SQL 查询程序获得的结果被存放在一个结果集中。大多数数据库软件系统都允许使用编程函数在结果集中进行导航,比如:Move-To-First-Record、Get-Record-Content、Move-To-Next-Record 等等。

2. 选择top记录
Sqlserver
SELECT TOP number|percent column_name(s) FROM table_name
如:SELECT TOP 10 name FROM student;
SELECT TOP 10 percent * FROM student; // 前10%的记录

Mysql:
SELECT column_name(s) FROM table_name LIMIT number
如:SELECT * FROM Persons LIMIT 5;

Oracle:
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number
如:SELECT * FROM Persons WHERE ROWNUM <= 5

3.连接有内连接(inner join),外连接(left join, right join, full join)和交叉连接(cross join)
(1)inner join可以简写为join,只列出符合条件的结果
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
等价于
SELECT column_name(s)
FROM table_name1
JOIN table_name2
Using(column_name)

(2)外连接有三种,full join相当于是left join和right join的合集(union)
在外连接中把过滤条件放到on子句和where子句后的结果是不同的,内连接则一样。
http://www.jb51.net/article/39435.htm

(3)交叉连接相当于是表的笛卡尔积
如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积;如果有WHERE子句的话,往往会先生成两个表行数乘积的行的数据表然后才根据WHERE条件从中选择。 因此,如果两个需要求交际的表太大,将会非常非常慢,不建议使用。
SELECT * FROM table1 CROSS JOIN table2
等价于
SELECT * FROM table1,table2
注意:cross join后加条件只能用where,不能用on

在连接中的on和where还可以参考:http://www.cnblogs.com/hgwy/articles/1691689.html

join表顺序http://tech.it168.com/a2012/0620/1362/000001362718.shtml

4. 通配符


5. SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档
SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename

如:
下面的例子会制作 "Persons" 表的备份复件:
SELECT *
INTO Persons_backup
FROM Persons

IN 子句可用于向另一个数据库中拷贝表:
SELECT *
INTO Persons IN 'Backup.mdb'
FROM Persons

类似的拷贝还可以使用:create table back_table as select * from source_table;

6. SQL 约束
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
我们将主要探讨以下几种约束:
• NOT NULL
• UNIQUE
• PRIMARY KEY
• FOREIGN KEY
• CHECK
• DEFAULT

7. SQL NULL 值
如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。
NULL 值的处理方式与其他值不同。
NULL 用作未知的或不适用的值的占位符。
注释:无法比较 NULL 和 0;它们是不等价的。
无法使用比较运算符来测试 NULL 值,比如 =, <, 或者 <>。
我们必须使用 IS NULL 和 IS NOT NULL 操作符。
  • 大小: 10.2 KB
分享到:
评论

相关推荐

    SQL 语法 SQL 总结 SQL教程

    SQL Select Into SQL Create DB SQL Create Table SQL Constraints SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key SQL Check SQL Default SQL Create Index SQL Drop SQL Alter SQL ...

    Sql 语句详解

    全网最全的SQL 讲解,带实例描述 ...21. SQL SELECT INTO 语句 28 22. SQL CREATE DATABASE 语句 29 23. SQL CREATE TABLE 语句 29 24. SQL 约束 (Constraints) 30 25. SQL NOT NULL 约束 31 ……

    精髓Oralcle讲课笔记

    --(四舍五入后保留的小数位数 0 个位 -1 十位) 36、select to_char(sal, '$99,999.9999')from emp; --(加$符号加入千位分隔符,保留四位小数,没有的补零) 37、select to_char(sal, 'L99,999.9999')from emp; -...

    SSD7 选择题。Multiple-Choice

    (b) placing SQL keywords, such as select, under the column names they want to retrieve (c) typing a syntactically correct SQL query that uses column and table names similar to the correct column and...

    2009达内SQL学习笔记

    1、用法:SELECT columns,prod2,prod3&lt;列&gt; FROM Table1,table2&lt;表名&gt; 分号结束 如: select id from s_emp; select last_name,name from s_emp,s_dept where s_emp.dept_id=s_dept.id;--列表每人所在部门 SELECT...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    SQL&gt; select * from role_role_privs;//查询授予另一角色的角色 SQL&gt; select * from DBA_tab_privs;//查询直接授予用户的对象权限 SQL&gt; select * from dba_role_privs;//查询授予用户的角色 SQL&gt; select * from dba_...

    Sql for mysql

    CHAPTER 1 Introduction to MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Database, ...

    SSD7 EX1 答案

    In the file Rel-ops.txt, list which relational operations you used, from among the select/project/join operations, in order to perform this query. Explain the role of each operation in your query. 4...

    mysql数据库的基本操作语法

    insert into temp(name) select name from classes; 多行插入 insert into temp values(null, ‘jack’, 22), (null, ‘jackson’ 23); 2、 update 修改语句 update主要完成对数据的修改操作,可以修改一条或多...

    Absolute Database for D7

    user and multi-user mode Full transactions support with ReadCommited isolation level SQL Support SELECT with DISTINCT, INNER LEFT, RIGTH, FULL and OUTER JOIN, GROUP BY and ORDER BY clauses CREATE ...

Global site tag (gtag.js) - Google Analytics