SQL思维导图

  • 基础指令

    • 数据操作语言DML
      • select
        • select 列名 from 表名
          • select * from 表名
        • select distinct 列名 from 表名(返回唯一不同的值)
        • select 列名 from 表名 where 列 运算符 值
          • =,!=,>,<,>=,<=,between,like
          • select 列名 from 表名 where (列1 运算符 值1)and/or (列2 运算符 值2)
        • select 列名1, 列名2 from 表名 order by 列名1 DESC, 列名2 ASC
      • update
        • update 表名 set 列名 = 新值 where 列名 = 某值
      • delete
        • delete from 表名 where 列名 = 值
      • insert into
        • insert into 表名 values (值1, 值2,......)
        • insert into 表名(列1, 列2,...)values (值1, 值2,...)
    • 数据定义语言DDL
      • create database
      • alter database
      • create table
      • alter table
      • drop table
      • create index
      • drop index
  • 高级指令

    • top,返回记录数目
      • sqlserver:select top 显示数目/percent 列名s from 表名
      • mysql: select 列名s from 表名 limit 显示数目
    • like,搜索列中的指定模式
      • select 列名s from 表名 where 列名 like 模式
    • 通配符
      • '%'代表零个或多个字符或数字
      • '_'代表一个字符或数字
      • '[charlist]'代表字符列中的任何单一字符
      • '[^charlist]'或者'[!charlist]'不在字符列中的任何单一字符
    • in,规定多个值
      • select 列名s from 表名 where 列名 in (值1, 值2, ...)
    • between,取数据范围
      • select 列名s from 表名 where 列名 between 值1 and 值2
      • select 列名s from 表名 where 列名 not between 值1 and 值2
    • as, 为列名和表名指定别称
      • select 列名s from 表名 as 表别名
      • select 列名 as 列别名 from 表名
    • join, 表连接
      • select 表1.列1,表2.列2 from 表1,表2 where 表1.列名 = 表2.列名等价于select 表1.列1,表2.列2 from 表1 inner join 表2 on 表1.列名 = 表2.列名
      • inner join,至少一个匹配,则返回行
        • select 列名s from 表1 inner join 表2 on 表1.列名=表2.列名
      • left join, 即使右表中没有匹配,也从左表中返回所有的行
      • right, 即使左表中没有匹配,也从右表中返回所有的行
      • full join, 只要其中一个表中存在匹配,就返回行
    • union, 合并两个或多个select的结果集
      • select 列名s from 表1 union select 列名s from 表2union只会选取不同的值
      • select 列名s from 表1 union all select 列名s from 表2union all会列出所有的值
    • select into,从一个表中选取数据,然后把数据插入到另一个表中
      • select 列名s/* into 新表名 [in 外部数据库] from 旧表名
    • create database 数据库名字
    • create table 表名(列名称 数据类型,列名称 数据类型,...)
      • integer(size), int(size), smallint(size), tinyint(size) 整数
      • decimal(size,d), numeric(size,d) 带小数的数字
      • char(size) 固定长度的字符串
      • varchar(size) 可变长度的字符串
      • date(yyyymmdd), 日期
    • SQL约束
      • NOT NULL 约束强制列不接受 NULL 值
        • Id_P int NOT NULL,
      • UNIQUE 约束唯一标识数据库表中的每条记录
        • CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
      • PRIMARY KEY 约束唯一标识数据库表中的每条记录
        • PRIMARY KEY (Id_P)
      • FOREIGN KEY 约束 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY
      • CHECK 约束用于限制列中的值的范围
        • 对单个列定义 CHECK 约束,那么该列只允许特定的值
          • CHECK (Id_P>0)
          • CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
          • ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
          • ALTER TABLE Persons DROP CHECK chk_Person
        • 对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制
      • DEFAULT 约束用于向列中插入默认值
        • City varchar(255) DEFAULT 'Sandnes'
        • OrderDate date DEFAULT GETDATE()
        • ALTER TABLE Persons ALTER City SET DEFAULT 'SANDNES'
        • ALTER TABLE Persons ALTER City DROP DEFAULT
    • CREATE INDEX 语句用于在表中创建索引
      • CREATE INDEX 索引名称 ON  表名称 (列名称)
      • CREATE UNIQUE INDEX 索引名称 ON  表名称 (列名称)
      • CREATE INDEX Index_Pers ON Person (LastName, FirstName)
      • CREATE INDEX Index_Pers ON Person (LastName DESC)
    • DROP 语句删除索引、表和数据库
      • DROP TABLE 表名称
      • DROP DATABASE 数据库名称
      • truncate table 表名称(仅仅删除表内容)
      • ALTER TABLE 表名称 DROP INDEX 索引名称 (MySql)
    • ALTER TABLE 语句用于在已有的表中添加、修改或删除列
      • ALTER TABLE 表名 ADD 列名 数据类型
      • alter table 表名 drop column 列名称
      • alter table 表名 alter column 列名 数据类型(修改数据类型)
    • Auto-increment 会在新记录插入表中时生成一个唯一的数字
      • P_Id int NOT NULL AUTO_INCREMENT,
    • view 视图 基于SQL语句的结果集的可视化的表
      • create view 视图名称 as select 列名s from 表名 where 条件
        • create view [Category Sales For 1997] as select distinct CategoryName, Sum(ProductSales) as CategorySales from [Product Sales for 1997] group by CategoryName
      • replace view 视图名称 as select 列名s from 表名 where 条件
      • drop view 视图名称
    • (MYSQL) Date函数
      • now() 返回当前的日期和时间
      • curdate() 返回当前的日期
      • curtime() 返回当前的时间
      • date() 提取日期或日期/时间表达式的日期部分
      • extract() 返回日期/时间按的单独部分
      • date_add() 给日期添加指定的时间间隔
      • date_sub 从日期减去指定的时间间隔
      • datediff() 返回两个日期之间的天数
      • date_format()  用不同的格式显示日期/时间
    • (MYSQL) Date数据类型
      • date - 格式 YYYY-MM-DD
      • datetime - 格式 YYYY-MM-DD HH:MM:SS
      • timestamp - 格式 YYYY-MM-DDHH:MM:SS
      • year - 格式 YYYY 或 YY
    • NULL值
      • SELECT LastName,FirstName,Address FROM PersonsWHERE Address IS NULL
      • SELECT LastName,FirstName,Address FROM PersonsWHERE Address IS NOT NULL
    • MySQL数据类型
      • Text类型
        • char(size) 保存固定长度的字符串,最多255个字符
        • varchar(size) 保存可变长度的字符串,最多255个字符
        • tinytext 存放最大长度为255个字符的字符串
        • text 存放最大长度为65535个字符的字符串
        • blob 用于BLOBs(Binary Large OBjects), 存放最多65535字节的数据
        • mediumtext 存放最大长度为16777215个字符的字符串
        • mediumblob 存放最大长度为16777215个字符的字符串
        • longtext 存放最大长度为4294967295个字符的字符串
        • longblob 存放最大长度为4294967295个字符的字符串
        • enum(x,y,z,etc.) 允许你输入可能值的列表
        • set 与enum类似,set最多只能包含64个列表项,不过set可存储一个以上的值
      • Number类型
        • tinyint(size) -128到127常规。0到255无符号*
        • smallint(size) -32768到32767常规。0到65535无符号*
        • mediumint(size) -8388608到8388607常规。0到16777215无符号*
  • SQL函数

    • Aggregate函数(合计函数)操作面向一系列的值,并返回一个单一的值。
      • avg()
        • select avg(列名) from 表名
        • select avg(OrderPrice) as OrderAverage from Orders
        • select Customer from Orders where OrderPrice > (select avg(OrderPrice)  from Orders)
      • count() 返回匹配指定条件的行数
        • select count(列名) from 表名
          • select count(Customer) as CustomerNilsen from Orders where Customer='Carter'
        • select count(*) from 表名
          • select count(*) as NumberOfOrders from Orders
        • select count(distinc 列名) from 表名
          • select count(distinct Customer) as NumberOfCustomers from Orders
      • first()返回指定的字段中第一个记录的值
        • select first(列名) from 表名
        • select first(OrderPrice) as FirstOrderPrice from Orders
      • last() 返回指定的字段中最后一个记录的值
        • select last(列名) from 表名
        • select last(OrderPrice) as LastOrderPrice from Orders
      • max() 返回一列中的最大值
        • select max(列名) from 表名
        • select max(OrderPrice) as LargestOrderPrice from Orders
        • 注:也可用于文本列,以获得按字母顺序排列的最高或最低值
      • min() 返回一列中的最小值
        • select min(列名) from 表名
        • select min(OrderPrice) as SmallestOrderPrice from Orders
      • sum() 返回数值列的总数(总额)
        • select sum(列名) from 表名
        • select sum(OrderPrice) as OrderTotal from Orders
      • 合计函数需要添加group by语句
        • select 列名, 合计函数(列名) from 表名 where 列的计算值 group by 列名
        • select Customer, sum(OrderPrice) from Orders group by Customer
      • having子句
        • where关键字无法与合计函数一起使用
        • select 列名,合计函数(列名) from 表名 where 列的计算值 group by 列名 having 合计函数(列名)的计算值
        • select Customer, sum(OrderPrice) from Orders group by Customer having sum(OrderPrice)<2000
        • select Customer, sum(OrderPrice) from Orders where Customer='Bush' or 'Adams' group by Customer having sum(OrderPrice)>1500
    • Scalar函数操作面向某个单一的值,并返回基于输入值的一个单一的值。
      • ucase()函数 把字段的值转换为大写
        • select ucase(列名) from 表名
        • select ucase(LastName) as LastName, FirstName from Persons
      • lcase()函数把字段的值转换为小写
        • select lcase(列名) from 表名
        • select lcase(LastName) as LastName, FirstName from Person
      • mid()函数用于从文本字段中提取字符
        • select mid(列名,start[,length]) from 表名
        • select mid(City, 1, 3) as SmallCity from Persons
      • len()函数返回文本字段中值的长度
        • select len(列名) from 表名
        • select len(City) as LengthOfCity from Persons
      • round()函数用于把数值字段舍入为指定的小数位数
        • select round(列名,小数位数) from 表名
        • select ProductName, round(UnitPrice, 0) as UnitPrice from Products
      • now()函数返回当前的日期和时间
        • select now() from 表名
        • select ProductName, UnitPrice, now() as PerDate from Products
      • format()函数用于对字段的显示进行格式化
        • select format(列名,规定格式) from 表名
        • select ProductName, UnitPrice, format(now(), 'YYYY-MM-DD') as PerDate from Products
  • 快速参考

    • AND/OR
      • SELECT column_name(s) FORM table_name WHERE condition AND|OR condition
    • ALTER TABLE(add column)
      • ALTER TABLE table_name ADD column_name datatype
    • ALTER TABLE(drop column)
      • ALTER TABLE table_name DROP COLUMN column_name
    • AS(alias for column)
      • SELECT column_name AS column_alias FORM table_name
    • BETWEEN
      • SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
    • CREATE DATABASE
      • CREATE DATABASE database_name
    • CREATE INDEX
      • CREATE INDEX  index_name ON table_name(column_name)
    • CREATE TABLE
      • CREATE TABLE table_name(column_name1 data_type, column_name2 datatype,......)
    • CREATE UNIQUE INDEX
      • CREATE UNIQUE INDEX index_name ON table_name(column_name)
    • CREATE VIEW
      • CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
    • DELETE FROM
      • DELETE FROM table_name
      • DELETE FROM table_name WHERE condition
    • DROP DARABASE
      • DROP DATABASE database_name
    • DROP INDEX
      • DROP INDEX table_name.index_name
    • DROP TABLE
      • DROP TABLE table_name
    • GROUP BY
      • SELECT column_name1, SUM(column_name2) FROM table_name GROUP BY column_name1
    • HAVING
      • SELECT column_name1, SUM(column_name2) FROM table_name GROUP BY column_name1 HAVING SUM(column_name2) condition value
    • IN
      • SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)
    • INSERT INTO
      • INSERT INTO table_name VALUES(value1, value2,...)
      • INSERT INTO table_name (column_name1, column_name2, column_name3,...) VALUES(value1,value2,...)
    • LIKE
      • SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
    • ORDER BY
      • SELECT column_name(s) FROM table_name ORDER BY column_name [ASC|DESC]
    • SELECT
      • SELECT column_name(s) FROM table_name
    • SELECT*
      • SELECT * FROM table_name
    • SELECT DISTINCT
      • SELECT DISTINCT column_name(s) FROM table_name
    • SELECT INTO
      • SELECT * INTO new_table_name FROM original_table_name
    • TRUNCATE TABLE
      • TRUNCATE TABLE table_name
    • UPDATE
      • UPDATE table_name SET column_name = new_value [,column_name = new_vale] WHERE column_name=some_value
    • WHERE
      • SELECT column_name(s) FROM table_name WHERE condition

 

posted @ 2022-06-17 20:35  格子叶  阅读(223)  评论(0编辑  收藏  举报