SQL相关指令整理

   日期:2020-10-17     浏览:78    评论:0    
核心提示:SQL相关指令整理1 表1.1 数据类型数值型字符串型日期时间类型1.2表的创建1.3 表的删除2 数据的处理2.1 插入数据直接插入向表2中根据表1选出的内容进行插入2.2SQL是用于数据库查询,删改等的一种语言,方便对数据库进行操作。本文主要讲述MySQL下的SQL相关指令。每一行指令结束记得写分号;1 表数据库管理着表以及表和表之间的关系,表中存储着数据,我们绝大多数的操作也都是针对于表。数据表由行(row)和列(column)组成,是一个二维的网格结构。每个列都是一个字段,每一行是一个记录。

SQL相关指令整理

    • 1 表
      • 1.1 数据类型
        • 数值型
        • 字符串型
        • 日期时间类型
      • 1.2表的创建
      • 1.3 表的删除
      • 1.4 表的修改
    • 2 数据的处理
      • 2.1 插入数据
      • 2.2 更新记录
      • 2.3 删除记录
    • 3 其他指令语言
      • 3.1 SELECt
      • 3.2 WHERe
      • 3.3 AS
      • 3.4 ORDER BY
      • 3.5 GROUP BY
      • 3.6 HAVINg
    • 4 多表操作
      • 4.1 多表的JOIN连接
      • 4.2 自连接
      • 4.3 UNIOn

SQL是用于数据库查询,删改等的一种语言,方便对数据库进行操作。本文主要讲述MySQL下的SQL相关指令。 每一行指令结束记得写分号;

DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

1 表

数据库管理着表以及表和表之间的关系,表中存储着数据,我们绝大多数的操作也都是针对于表。

数据表由行(row)和列(column)组成,是一个二维的网格结构。每个列都是一个字段,每一行是一个记录。字段由字段名称和字段的数据类型以及一些约束条件组成。

常见的约束条件:
NOT NULL:该字段的值不能为空
PRIMARY KEY: 主键,有唯一约束,不能为空,
FOREIGN KEY:外键,数据表2中索引数据表1中主键的键
NOT NULL: 非空约束
UNIQUE : 唯一约束
DEFAULT :如果插入数据时没有给该字段赋值,则使用默认值

1.1 数据类型

常见的数据类型有数值型,字符串类型和日期时间类型:

数值型

  • 整数型
    - TINYINT 非常小的整数
    - SMALLINT 小整数
    - MEDIUMINT 中等大小的整数
    - INT 正常大小的整数
    - BIGINT 大整数
  • 浮点型(近似值)
    - FLOAT 一个小的(单精度)浮点数
    - DOUBLE 正常大小(双精度)浮点数
  • 定点型(精确值)
    - DECIMAL 定点数

字符串型

  • CHAR
  • VARCHAR
    CHAr(X)的长度确定,VARCHAr(X)的长度可变,当X=5时,对于CHAR若输入一个字符,会用空格补齐
  • BINARY
  • VARBINARY
  • BLOB
  • TEXT
  • ENUM
  • SET

日期时间类型

  • TIME
  • DATE
  • DATETIME
  • TIMESTAMP
  • YEAR

1.2表的创建

对于postgresSQL,创表的时候必须显示定义主键。对于MySQL,当创建表时没有显示定义主键时。首先判断表中是否有非空的整形唯一索引,如果有,则该列为主键(这时候可以使用 select _rowid from table 查询到主键列);如果没有符合条件的则会自动创建一个6字节的主键(该主键是查不到的).

所以创表的时候还是应该显示定义主键。

CREATE TABLE <table_name> (
column_name1 type1,
column_name2 type2,
...
column_nameN typeN
); 
#例:
CREATE TABLE IF NOT EXISTS user(
id INT,
account VARCHAR(50) NOT NULL,
name VARCHAR(20) NOT NULL,
age INT,
gender ENUM('male','female','unknown') DEFAULT 'unknown',
PRIMARY KEY(id)#如果多个字段组合成一个主键,用逗号隔开。
#也可以在定义id时直接写成 id INT PRIMARY KEY
);

1.3 表的删除

DROp TABLE <table_name>;
);
#例
DROP TABLE user;

1.4 表的修改

使用ALTER TABLE。
1)加入column

ALTER TABLE <table_name>
ADD <definition_of_column>;
#例:
ALTER TABLE user
ADD married BINARY;

2)删除column

ALTER TABLE <table_name>
DROP COLUMN <column_name>;
#例:
ALTER TABLE user
DROP COLUMN married;

3)修改字段类型

ALTER TABLE <table_name>
MODIFY COLUMN <definition_of_column>;
#例:
ALTER TABLE user
MODIFY COLUMN married VARCHAR(5);

2 数据的处理

2.1 插入数据

直接插入
未经赋值的字段为NULL,当不指明要赋值的字段列表时,自动依次对应录入

INSERT INTO <table_name> (<要赋值的字段的有序列表>) VALUES (
<要赋值的列表,逗号隔开>
); 
#例:
INSERT INTO user (id,account,name,age,gender) VALUES (
1,"橘子鸭血粉丝汤","clemence",18,"male"
); 

向表2中根据表1选出的内容进行插入

INSERT INTO <table_name> (<要赋值的字段的有序列表>) 
SELECT column1,..column2
FROM <table_name2>
(WHERe <限制条件>); 
#例:
INSERT INTO user (id,account,name)
SELECt id,account
FROM user2
WHERe id=1; 

2.2 更新记录

UPDATe <table_name>
SET <column1=value1,..,columnN=valueN>
(WHERe <限制条件>); 
#例:
UPDATE user
SET name='clementine'
WHERe id=1; 

2.3 删除记录

当仅有DELETE FROM时,删除所有column里的值

DELETe FROM <table_name>
(WHERe <限制条件>); 
#例:
DELETe FROM user
WHERe id=1; 

3 其他指令语言

3.1 SELECt

想要删除重复项时,使用SELECT DISTINCT

SELECT <name_of_columns>
FROM <table_name>
(WHERe <restriction>#---选择所有字段内数据---
SELECt *
FROM <table_name>
(WHERe <restriction>#例
SELECt id,name
FROM user
WHERe id=1

3.2 WHERe

以下的运算符可以在WHERe中使用:

运算符 描述 举例
= 等于 WHERe id=1
<> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != WHERe id<>1
> 大于 WHERe id>1
< 小于 WHERe id<1
>= 大于等于 WHERe id>=1
<= 小于等于 WHERe id<=1
BETWEEN 在某个范围内 WHERe id BETWEEN 1 AND 5
IN 某个列的多个可能值 WHERe id IN (1,3,4)
LIKE 模糊查询搜索某种模式 WHERe id LIKE ‘M%’

M 为要查询内容中的模糊信息:

  • % 表示多个字值,_ 下划线表示一个字符;
  • M% : 正则表达式,查询以 M 开头的所有内容。
  • %M% : 查询只包含M的所有内容。
  • %M_ : 查询以M在倒数第二位的所有内容

多个查询条件可以使用AND,OR来连接。

3.3 AS

重命名column。

SELECt <column1> AS <a1>, <column2> AS <a2>
FROM <table_name>
(WHERe <restriction>);
#例
SELECt id AS identifiant, account AS account_name
FROM user;

3.4 ORDER BY

对选择出的记录进行排序,DESC为从大到小排序,ASC为从小到大排序,默认为ASC。DESC 或者 ASC 只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的从小到达排序。

ORDER BY 多列的时候,先按照第一个column name排序,再对第一次排序好的各同属部分分别按照第二个column name排序

SELECt <column1>, <column2>
FROM <table_name>
(WHERe <restriction>)
ORDER BY <column_names>;
#例
SELECt id, account, name
FROM user
ORDER BY id,name DESC #先按id从小到大排序,再按照name从大到小排序
#或
ORDER BY id DESC,name #先按id从大到小排序,再按照name从小到大排序
ORDER BY id DESC, name DESC 等价于 ORDER BY CONCAT(code,name) DESC #先按id从大到小排序,再按照name从大到小排序

3.5 GROUP BY

使用GROUP BY一定要遵循single value rule:

  1. 跟在SELECt后的column,要么出现在了GROUP BY后面, 要么在聚合函数里
  2. 如果GROUP BY的column是键,则SELECT后别的column可以不遵循上述原则(但最好不要这样)
SELECT <column1,...,聚合函数(columnN)>
FROM <table_name>
(WHERe <restriction>)
GROUP BY <column1>

可以使用的聚合函数有:

  • COUNT()
  • AVG()
  • SUM()
  • MIN()
  • MAX()

3.6 HAVINg

用于筛选成组后的各种数据,可以在HAVINg中使用聚合函数,但不能在WHERe中使用聚合函数。

SELECt <column1,...,聚合函数(columnN)>
FROM <table_name>
(WHERe <restriction>)
GROUP BY <column1>
HAVINg <condition>
#例
SELECt Company.name,AVG(Person.age)
FROM Company, Person
WHERe Company.name=Person.ComName
GROUP BY Company.name
HAVINg Company.type IN ('technologie','environment')

SQL中指令调用的顺序为:
FROM->WHERe->GROUP BY->HAVINg->SELECt->ORDER BY

4 多表操作

4.1 多表的JOIN连接

INNER JOIN 可以简写为JOIN,LEFT OUTR JOIN 可以简写为LEFT JOIN,RIGHT OUTER JOIN 可以简写为RIGHT JOIN。

SELECT * 
FROM T1,T2
WHERe T1.C=T2.X;
#等价于
SELECt * 
FROM T1 INNER JOIN T2
ON T1.C=T2.X;

4.2 自连接

SELECt * 
FROM T T1, T T2
WHERe T1.X=T2.X;

4.3 UNIOn

UNIOn:R1和R2的被选出的columns的数量要一致,最后的结果会删除重复值。如果不想删除重复值可以使用UNIOn ALL

SELECt * FROM T1
UNIOn
SELECt * FROM T2
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服