博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL学习笔记第3次
阅读量:5297 次
发布时间:2019-06-14

本文共 2514 字,大约阅读时间需要 8 分钟。

1、UNION:就是把两个select的结果合并,相同值只取一个。

但必须满足下面的条件:

两个select语句要有相同数量的列。

列要有相似的数据。

列的顺序必须相同。

SELECT * FROM person

UNION

SELECT * FROM person_old;

#报错,"The used SELECT statements have a different number of columns"列的数量不相同。

 

SELECT FirstName,LastName,City FROM person

UNION

SELECT FirstName,LastName,City FROM person_old;

#成功,同样的数据只显示了一个,用UNION ALL的话,就全部都显示出来了。

2、SQL创建表(Create Table)时的约束:

a、Not Null:非空。(PRIMARY KEY自身就有Not Null属性)

b、Unique:唯一。(PRIMARY KEY自身就有Unique属性)

c、PRIMARY KEY:主键,唯一的标识。(每个表只能有1个主键)

d、FOREIGN KEY:外键,另一个表的主键,可以多个。(用于预防非法数据插入,因为必须是另一个表中的值)

CREATE TABLE Orders

(

O_Id int NOT NULL,

OrderNo int NOT NULL,

Id_P int,

PRIMARY KEY (O_Id),

FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)

)

#MYSQL新建表

 

CREATE TABLE Orders

(

O_Id int NOT NULL PRIMARY KEY,

OrderNo int NOT NULL,

Id_P int FOREIGN KEY REFERENCES Persons(Id_P)

)

#SQL Server / Oracle / MS Access

如果表已经存在,那么可以:

ALTER TABLE person_order

ADD FOREIGN KEY (id_o)

REFERENCES person(order_number);

#第一次执行的时候,报错,检查了因为id_o里有个4,而person表中的order_number字段没有4,所以添加不成功,删除4那一行后,就成功了。

3、创建索引,说是用来加快查询了,一般索引常查询的列就可以了。

CREATE INDEX IndexPerson ON person(order_number,FirstName);

#看起来就是建立了一个简化的表,这样列数就少一些,查起来就快一些。。吧。。。

4、AUTO INCREMENT,这是一个字段属性,让主键自动从1开始,每次新增数据时,主键自动填写,每次+1.

这个属性在各个数据库中用法都不一样。

CREATE TABLE Persons

(

P_Id int NOT NULL AUTO_INCREMENT,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

PRIMARY KEY (P_Id)

)

#新建时的模板

 

ALTER TABLE person MODIFY order_number INT(2) NOT NULL AUTO_INCREMENT;

#实验一下,把order_number添加了自动写值的属性。

 

INSERT INTO person(LastName,FirstName,Address,City,age,alive) VALUE('wang','li','China','shanghai',25,'alive');

#自动填写了order_number值,虽然前面已经有1234,但不会报错,会继续从5开始自动填写。

 

ALTER TABLE person AUTO_INCREMENT=10;

#用这个语句,可以规定开始的序号。比如从10开始

5、view:视图,看起来像是一个虚拟的表,由一个或多个实际的表合成,对实际的表不影响。

CREATE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

#语法

 

CREATE VIEW personViews AS SELECT FirstName,LastName FROM person WHERE alive='alive';

#实验一下,创建了一个视图。

 

CREATE VIEW personOrders AS

SELECT * FROM person JOIN person_order ON person.order_number=person_order.id_o;

#用INNER JOIN联合了两张表做了一个视图。

 

DROP VIEW personOrders;

#删除视图

 

CREATE VIEW personOrders AS

SELECT person.FirstName,person.age,person_order.item

FROM person JOIN person_order

ON person.order_number=person_order.id_o;

#选择指定的列,看起来更方便

6、NULL值不等于0,MYSQL可以用 IFNULL(XXX,0)来判断,如果不是NULL,则返回XXX,如果为空,则返回0.

7、数据类型不想写了,用的时候baidu吧。。。

8、下次开始学SQL函数,学完应该就差不多了吧。。还有个触发器可能也要看看。

转载于:https://www.cnblogs.com/baigezhengliu321/archive/2013/04/15/3043960.html

你可能感兴趣的文章
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&语法
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
随机颜色值
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
目录相关的操作
查看>>
C++----练习--引用头文件
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>