SQL学习笔记
来源:互联网 发布:合并报表连续编制知乎 编辑:程序博客网 时间:2024/06/06 18:34
heidiSQL
DBeaver
数据类型
一个中文3个length
1. SELECT DISTINCT country FROM Websites 用于返回唯一不同的值
2. SELECT * FROM Websites WHERE country=’CN’ SQL使用单引号来环绕文本值,大部分数据库系统也接受双引号
3. SELECT * FROM Websites WHERE alexa > 15 AND (country=’CN’ OR country=’USA’) 使用圆括号来组成复杂的表达式
4. SELECT * FROM Websites RDER BY alexa DESC ORDER BY 关键字用于对结果按照一个列或者多个列进行排序
5. SELECT * FROM Websites ORDER BY country,alexa ORDER BY 多列
6. UPDATE Websites SET alexa=’5000’, country=’USA’ WHERE name=’菜鸟教程’ WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!
7. DELETE FROM Websites WHERE name=’百度’ AND country=’CN’ 删除记录
8. DELETE FROM table_name 或 DELETE * FROM table_name 在不删除表的情况下删除表中所有行,表结构、属性、索引将保持不变
9. 通配符 %
用来替代0个或多个字符 _
用来代替一个字符LIKE _OOGLE
[charlist]
字符列中的任意一个字符WHERE name REGEXP '^[GFs]'用来选取name以G/F/S开始的所有网站
[^charlist]或者[!charlist]
不在字符列中的任意单一字符WHERE name REGEXP '^[^A-H]'
10. SELECT * FROM Websites WHERE name IN (‘Google’,’菜鸟教程’) 选取name为Google或菜鸟教程的所有网站
11. SELECT * FROM Websites WHERE alexa NOT BETWEEN 1 AND 20 选取 alexa 介于 1 和 20 之间的所有网站
12. SELECT * FROM Websites WHERE (alexa BETWEEN 1 AND 20) AND NOT country IN (‘USA’, ‘IND’) 选取alexa介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站
SELECT * FROM Websites WHERE name BETWEEN ‘A’ AND ‘H’ 选取 name 以介于 'A' 和 'H' 之间字母开始的所有网站
SELECT * FROM access_log WHERE date BETWEEN ‘2016-05-10’ AND ‘2016-05-14’ 选取 date 介于 '2016-05-10' 和 '2016-05-14' 之间的所有访问记录
13. SELECT name AS n, country AS c FROM Websites
SELECT name, CONCAT(url, ‘, ‘, alexa, ‘, ‘, country) AS site_info FROM Websites 把三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名
14. SELECT w.name, w.url, a.count, a.date FROM Websites AS w, access_log AS a WHERE a.site_id=w.id and w.name=”菜鸟教程” 表的别名实例
在下面的情况下,使用别名很有用:
- 在查询中涉及超过一个表
- 在查询中使用了函数
- 列名称很长或者可读性差
- 需要把两个列或者多个列结合在一起
15. INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL
RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL
FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
16. UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
SELECT country, name FROM Websites WHERE country='CN' UNION ALL SELECT country, app_name FROM apps WHERE country='CN' ORDER BY country;
- INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。
INSERT INTO Websites (name, country) SELECT app_name, country FROM apps;
- CREATE DATABASE dbname;
用于创建数据库
CREATE TABLE tablename;
CREATE TABLE Persons( PersonID int, LastName varchar(255) NOT NULL, # 不接收NULL值 FirstName varchar(255), Address varchar(255), City varchar(255), UNIQUE (LastName) # 在Lastname上面添加UNIQUE约束 CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName) # 命令unique约束,并定义多个列的unique约束);
如果表已经被创建,再需要约束,可以使用下面的约束
ALTER TABLE PersonsADD UNIQUE (PersonID)ALTER TABLE PersonsADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
撤销UNIQUE约束
ALTER TABLE PersonsDROP INDEX uc_PersonID
- PRIMARY KEY 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。
CREATE TABLE Persons( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id))ALTER TABLE PersonsADD PRIMARY KEY (P_Id)
- 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
添加一个外键CREATE TABLE Orders( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, PRIMARY KEY (O_Id), FOREIGN KEY (P_Id) REFERENCES Persons(P_Id))命名并添加多个外键CREATE TABLE Orders( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, PRIMARY KEY (O_Id), CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id))
- CHECK 约束用于限制列中的值的范围。
CREATE TABLE Persons( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CHECK (P_Id>0))ALTER TABLE PersonsADD CHECK (P_Id>0)ALTER TABLE PersonsADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
- DEFAULT 约束用于向列中插入默认值,如果没有规定其他的值,那么会将默认值添加到所有的新记录。
CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,P_Id int,OrderDate date DEFAULT GETDATE()/'test')ALTER TABLE PersonsALTER City SET DEFAULT 'SANDNES'
- CREATE INDEX 语句用于在表中创建索引。
//CREATE INDEX 语法,允许使用重复的值CREATE INDEX index_nameON table_name (column_name)// CREATE UNIQUE INDEX 语法在表上创建一个唯一的索引,不允许使用重复的值,CREATE UNIQUE INDEX index_nameON table_name (column_name)//CREATE INDEX 实例1. 在Person表的LastName列上创建一个名为“Pindex”的索引CREATE INDEX PIndexON Persons (Lastname)2. 如果要建立多个索引,可以在括号中列出这些列的名称,用逗号隔开CREATE INDEX PIndexON Persons (LastName,FirstNme)
- 删除各种
1. // DROP INDEX 语句 用于删除表中的索引 ALTER TABLE table_name DROP INDEX index_name2. // DROP TABLE 语句 DROP TABLE table_name3. //DROP DATABASE 语句 DROP DATABASE database_name4. //TRUNCATE TABLE 语句 用于删除表内的数据,但并不删除表本身 TRUNCATE TABLE table_name
- AUTO INCREEMENT
Auto-increment 会在新记录插入表中时生成一个唯一的数字。
ID int NOT NULL AUTO_INCREMENT
- SQL视图
SQL日期
NOW()
返回当时的日期和时间2017-07-27 20:53:22
CURDATE()
返回当前的日期2017-07-27
CURTIME()
返回当前的时间20:53:22
DATA()
提取日期或日期/时间表达式的日期部分date(now()) -> 2017-07-27
EXTRACT()
返回日期/时间的单独部分->EXTRACT()函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。unit的值 :
MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR SECOND_MICROSECOND MINUTE_MICROSECOND MINUTE_SECOND HOUR_MICROSECOND HOUR_SECOND HOUR_MINUTE DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR YEAR_MONTH
select extract(hour from now())
DATE_ADD()
向日期添加指定的时间间隔DATA_SUB()
从日期减去指定的时间间隔DATEDIFF()
返回两个日期之间的天数DATE_FORMAT()
用不同的格式显示日期/时间- MYSQL
DATE - 格式:YYYY-MM-DDDATETIME - 格式:YYYY-MM-DD HH:MM:SSTIMESTAMP - 格式:YYYY-MM-DD HH:MM:SSYEAR - 格式:YYYY 或 YYTIME - 格式: HH:MM:SS
- MYSQL
- SQL NULL
NULL 用作未知的或不适用的值的占位符。IS NULL 和 IS NOT NULL// IFNULL() = COALESCE()SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
- SQL 通用数据类型
函数
length()
用于获取长度,一个汉字长度为3AVG()
返回平均值COUNT()
返回行数
COUNT(*)是所有行数
COUNT(column_name)是不包括NULL的行数
COUNT(DISTINCT column_name)是独一性的MAX()
返回最大值MIN()
返回最小值SUM()
返回总和UCASE()
将某个字段转换为大写LCASE()
将某个字段转换为小写MID()
从某个文本字段提取字符MID(name,1,4)
第一个是位置,从1开始,第二个是个数LEN()
返回某个文本字段的长度ROUND()
对某个数值字段进行指定小数位数的四舍五入round(1.5) -> 2
== round(1.5,0)第二位是几就是保留几位小小数
NOW()
返回当前的系统日期和时间FORMAT()
格式化某个字段的显示方式GROUP BY
GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。HAVING
- SQL、PL/SQL学习笔记
- SQL、PL/SQL学习笔记
- SQL、PL/SQL学习笔记
- 学习sql语言笔记
- PL/SQL学习笔记
- 学习sql server笔记。
- SQL学习笔记!
- sql学习笔记
- PL/SQL学习笔记
- PL/SQL学习笔记
- SQL学习笔记
- PL/SQL学习笔记
- PL/SQL学习笔记
- PL/SQL学习笔记
- 学习sql语言笔记
- sql学习笔记
- sql学习笔记
- sql学习笔记
- Android设计原则
- Python3爬虫之突破天涯防盗链
- RecyclerView的简单使用
- MongoDB学习笔记
- android studio使用Bmob来实现登录注册的功能
- SQL学习笔记
- database中的函数及查询方法
- windows安装anaconda 报错failed to create anacoda menu ?
- 通过js为html动态创建表格
- TCP之Nagle算法&&延迟ACK
- MAC OS 伪分布式Apache Hadoop及HBase Hive Zookeeper Flume Mahout Spark2 配置
- 如果让我重新读一次研究生——王汎森院士(台湾)
- Oracle之通过命令提示符(cmd.exe)连接 Oracle 数据库-yellowcong
- MYSQL: Parameter index out of range