mysql常用语句及关键字

一、常用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;

--统计分组后各种情况的数量
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)

九、附录。 思考:

猜你喜欢

转载自www.cnblogs.com/expiator/p/8533956.html