mysql

来源:互联网 发布:清除注册表的软件 编辑:程序博客网 时间:2024/05/29 15:13

基础语法:

1.关键词 DISTINCT 用于返回唯一不同的值。

语法:SELECT DISTINCT 列名称 FROM 表名称

2.如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句

语法:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

注意:操作符描述
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。

3.AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

4.ORDER BY 语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照升序对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC(逆序)、ASC(顺序) 关键字。

5.UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

6.DELETE FROM 表名称 WHERE 列名称 = 值

高级语法:

1.TOP 子句用于规定要返回的记录的数目。

对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。

语法:SELECT column_name(s) FROM table_name LIMIT number

2.LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

语法:SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

注:"%" 可用于定义通配符(模式中缺少的字母)、还可以通过使用 NOT 关键字(NOT LIKE)

3.在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。

在 SQL 中,可使用以下通配符:

通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或者[!charlist]  不在字符列中的任何单一字符

4.IN 操作符允许我们在 WHERE 子句中规定多个值。

语法:SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)

5.

SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value26.可以为列名称和表名称指定别名(Alias):表:
SELECT column_name(s)FROM table_nameAS alias_name列:
SELECT column_name AS alias_nameFROM table_name

重要语法:
1.Inner Join
语法:
SELECT column_name(s)FROM table_name1INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
2.LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行
语法:
SELECT column_name(s)FROM table_name1LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
3.RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
语法:
SELECT column_name(s)FROM table_name1RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
3.FUll:注释:mysql没有,参见以下语法:
解决方法:采用左连接和右连接结合+ union all 方法来取得两表的合集select a.user_name , a.over , b.over <-这里是指所选择显示的项from user1 aleft join user2 b on a.user_name = b.user_name <-这里是指筛选条件union all <-连接反向查询语句select b.user_name , b.over, a.over <-这里是指所选择显示的项from user1 aright join user2 b on a.user_name = b.user_name <-这里是指筛选条件
以上方法并没有去重,可以使用union代替union all
4.UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
注意:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
语法:
SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2
5.UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。
语法:
SELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2
6.

SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。

SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

注意:
SELECT *INTO new_table_name [IN externaldatabase] FROM old_tablename
7.数据类型 描述
  • integer(size)
  • int(size)
  • smallint(size)
  • tinyint(size)
仅容纳整数。在括号内规定数字的最大位数。
  • decimal(size,d)
  • numeric(size,d)

容纳带有小数的数字。

"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。

char(size)

容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

在括号中规定字符串的长度。

varchar(size)

容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

在括号中规定字符串的最大长度。

date(yyyymmdd)容纳日期。
8.NOT NULL 约束强制列不接受 NULL 值。
9.

UNIQUE 约束唯一标识数据库表中的每条记录。

UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

10.

FOREIGN KEY 约束用于预防破坏表之间连接的动作。

FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

CREATE TABLE Orders(Id_O int NOT NULL,OrderNo int NOT NULL,Id_P int,PRIMARY KEY (Id_O),FOREIGN KEY (Id_P) REFERENCES Persons(Id_P))
11.

CHECK 约束用于限制列中的值的范围。

如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CHECK (Id_P>0))
12.

您可以在表中创建索引,以便更加快速高效地查询数据。

用户无法看到索引,它们只能被用来加速搜索/查询。

在表上创建一个简单的索引。允许使用重复的值:
CREATE INDEX index_nameON table_name (column_name)
在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值:
CREATE UNIQUE INDEX index_nameON table_name (column_name)如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC
CREATE INDEX PersonIndexON Person (LastName DESC) 
13.drop:通过使用 DROP 语句,可以轻松地删除索引、表和数据库。
14.

我们通常希望在每次插入新记录时,自动地创建主键字段的值。

我们可以在表中创建一个 auto-increment 字段。

15.

在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。

CREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition
16.

当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。

只要数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间,情况就有点复杂了。

在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。

17. 描述NOW()返回当前的日期和时间CURDATE()返回当前的日期CURTIME()返回当前的时间DATE()提取日期或日期/时间表达式的日期部分EXTRACT()返回日期/时间按的单独部分DATE_ADD()给日期添加指定的时间间隔DATE_SUB()从日期减去指定的时间间隔DATEDIFF()返回两个日期之间的天数DATE_FORMAT()用不同的格式显示日期/时间18.

NULL 值是遗漏的未知数据。

默认地,表的列可以存放 NULL 值。

本章讲解 IS NULL 和 IS NOT NULL 操作符。

19.

text 类型:

数据类型描述CHAR(size)保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。VARCHAR(size)

保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。

注释:如果值的长度大于 255,则被转换为 TEXT 类型。

TINYTEXT存放最大长度为 255 个字符的字符串。TEXT存放最大长度为 65,535 个字符的字符串。BLOB用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。MEDIUMTEXT存放最大长度为 16,777,215 个字符的字符串。MEDIUMBLOB用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。LONGTEXT存放最大长度为 4,294,967,295 个字符的字符串。LONGBLOB用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。ENUM(x,y,z,etc.)

允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。

注释:这些值是按照你输入的顺序存储的。

可以按照此格式输入可能的值:ENUM('X','Y','Z')

SET与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。

Number 类型:

数据类型描述TINYINT(size)-128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。SMALLINT(size)-32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。MEDIUMINT(size)-8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。INT(size)-2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。BIGINT(size)-9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。FLOAT(size,d)带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。DOUBLE(size,d)带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。DECIMAL(size,d)作为字符串存储的 DOUBLE 类型,允许固定的小数点。20.

Date 类型:

数据类型描述DATE()

日期。格式:YYYY-MM-DD

注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'

DATETIME()

*日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS

注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

TIMESTAMP()

*时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS

注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

TIME()时间。格式:HH:MM:SS注释:支持的范围是从 '-838:59:59' 到 '838:59:59'YEAR()

2 位或 4 位格式的年。

注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。



函数
1.function
 描述AVG(column)返回某列的平均值COUNT(column)返回某列的行数(不包括NULL值)COUNT(*)返回被选行数COUNT(DISTINCT column)返回相异结果的数目FIRST(column)返回在指定的域中第一个记录的值(SQLServer2000 不支持)LAST(column)返回在指定的域中最后一个记录的值(SQLServer2000 不支持)MAX(column)返回某列的最高值MIN(column)返回某列的最低值SUM(column)返回某列的总和
2.GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
3.在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
语法:
SELECT Customer,SUM(OrderPrice) FROM OrdersWHERE Customer='Bush' OR Customer='Adams'GROUP BY CustomerHAVING SUM(OrderPrice)>1500
4.UCASE 函数把字段的值转换为大写
语法:
SELECT UCASE(LastName) as LastName,FirstName FROM Persons
LCASE 函数把字段的值转换为小写。
语法:
SELECT LCASE(column_name) FROM table_name
5.MID 函数用于从文本字段中提取字符
语法:
SELECT MID(column_name,start[,length]) FROM table_name
6.LEN 函数返回文本字段中值的长度
语法:
SELECT LEN(column_name) FROM table_name
7.ROUND 函数用于把数值字段舍入为指定的小数位数
语法:
SELECT ROUND(column_name,decimals) FROM table_name
8.FORMAT 函数用于对字段的显示进行格式化。
语法:
SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDateFROM Products

0 0
原创粉丝点击