一、常用sql语句
1.创建数据库
create database test;
2.删除数据库
drop database test;
3.使用数据库
use test;
4.创建数据表
create table sys_role(
id int(4) not null primary key ,
available char(20) not null,
description char(20) not null,
role char(20) not null
) engine=InnoDB default charset=utf8;
5.删除数据表
drop table if exists sys_role;
6.插入数据
insert into sys_role values(1,‘0‘,‘管理员‘,‘admin‘);
7.查询数据
select * from sys_role;
8.修改数据
update sys_role set role=‘user‘ where id=1;
9.删除数据
delete from sys_role where id=1;
二、关键字及符号
0. Constraints :SQL 约束
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
比如,not null,unique,primary key,foreign key,default都属于约束
可以用CONSTRAINT 命名约束。如下,命名外键约束为fk_PerOrders。
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)
1.primary key 主键
主键表示该列值在表中是唯一的,不可以有重复。
主键必须包含唯一的值。主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
2.auto_increment 自增
auto_increment 就是对主键自动增加编号的。
3.unsigned 无符号
unsigned是无符号的意思,代表该字段没有正负。
4.字段数据类型中,varchar和char的区别是什么?
varchar长度是可变的,能够节省空间。比如说存储"abc",CHAR(10)需要10个字符的空间来储存,而VARCHAR(10)只需要3个字符的空间。
5.FOREIGN KEY 外键约束
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
如下示,Id_P是Orders表的外键,也是Persons表的主键。可以用CONSTRAINT 命名约束。命名外键约束为fk_PerOrders。
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)
6. % 通配符,表示一个或多个字符
如下示,查询170开头的电话号码。
select * from phone_info where phoneNumber like "170%"
7. JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。通过Inner Join ... On 实现。
如下示,查找Persons中Id_P和Orders表中Id_P相同的数据。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
各种join的区别:
JOIN: 如果表中有至少一个匹配,则返回行
INNER JOIN 与 JOIN 是相同的。
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
8. UNION 联表查询
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 联合的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。
同时,每条 SELECT 语句中的列的顺序必须相同。
如下示:
SELECT Employee_Name FROM Employees_China
UNION SELECT Employee_Name FROM Employees_USA
另外,UNION和UNION ALL区别:
默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
9.UNIQUE 约束, 使数据库表中的某一列或某几列的里面的内容不重复
10.SELECT INTO 查询并插入
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
SELECT LastName,FirstName
INTO Persons_backup
FROM Persons
11.Group By 分组
将查询结果按某一列或多列的值分组
如下示:
select Cno,count(sno)
from course
group by Cno;
一张表,一旦分组完成后,查询后只能得到组相关的信息。可以通过count,sum,max,min,avg统计。
--统计分组后各种情况的数量
select count(*),age,sex from staff where 1=1
and create_date>=‘2018-05-07 00:00:00‘
group by age,sex
order by age asc
12.Having
对由sum()或其它集合函数运算结果的输出进行限制。如下示:
SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
13.COUNT(column_name) 函数返回指定列的值的数目
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
14.Case ... When 可以作为COUNT的条件
比如,count( CASE WHEN ERRSTR is not null THEN 1 ELSE NULL END )表示如果ERRSTR不是空那么就计数1,用于计算ERRSTR不为空的数量
类似于编程语言中的if else。是判断语句
比如:
select MOND_ID,INTERFACE_CODE,count(*) as REQUEST_COUNT, count( CASE WHEN ERRSTR is not null THEN 1 ELSE NULL END ) as FAILURE_COUNT
from vbase.ESB_TRACE_20180428 where 1=1
and CREATE_DATE>=‘2018-04-28 09:00:00‘
and CREATE_DATE<‘2018-04-28 09:30:00‘
and INTERFACE_CODE=‘Svc_ProvisionRet‘
group by MOND_ID,INTERFACE_CODE
order by MOND_ID asc
四、Index 索引
索引对于操作者,仅仅提供创建、删除和修改的功能。操作者在增删改查过程中,系统会自动调用索引。
可以在表中创建索引,以便更加快速高效地查询数据。通过Create Index ... On实现。
创建一个简单的索引,名为 "PersonIndex",在 Person 表的 LastName 列,如下示:
CREATE INDEX PersonIndex
ON Person (LastName)
九、附录。 思考:
原文地址:https://www.cnblogs.com/expiator/p/8533956.html