限制返回结果集中的记录条数
SELECT TOP n <列表名> FROM <表名>[查询条件]
查询结果集中的指定百分比的记录数
SELECT TOP n PERCENT <列名表> FROM <表名> [查询条件]
LIKE操作符用于再WHERE子句中搜索列中的指定模式
SELECTcolumn_name(s) FROM table_name WHERE column_name LIKE pattern
%替代一个或多个字符_仅替代一个字符
[charlist]字符列中的任何单一字符
[^charlist] 或者 [!charlist] 不在字符列中的任何(单一字符)
现在,我们希望从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:
select * from person where city like“[ALN]%”
在where字句中规定多个值
selectcolumn_name(s) from table_name where colume_name in (val1,val2,…)
操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
SELETECOLUMN_NAME(S) FROM TABLE_NAME WHERE COLUMN_NAME BETWEEN VALUE1 AND VALUE2
表的用法
SELECTCOLUMN_NAME(S) FROM TABLE_NAME AS ALIAS_NAME
列的用法
SELECTCOLUMN_NAME AS ALIAS_NAME FROM TABLE_NAME
用于根据两个或多个表中的列之间的关系,从这些表中获取数据
SELECTPersons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders
WHEREPersons.Id_P = Orders.Id_P
表中存在至少一个关键字时,inner join关键字返回行。
从左表中返回所有的行,即使在右表中没有匹配的行。
从右表中返回所有的行,即使在左表中没有匹配的行。
只要是某一个表中存在匹配,FULL JOIN 关键字就会返回行
UNION用于合并两个或多个SELECT语句的结果集
UNION会列出结果中所有的值
从一个表中选取数据,然后把数据插入到另一个表中。
创建数据库
创建数据表
可以在创建表的时候规定约束,或者在表创建之后ALTER TABLE
强制列不接受NULL值
强制列值唯一
主键,PRIMARY KEY 约束唯一标识数据库表中的每条记录。必须唯一,不能为NULL,每个表都应该有一个主键,并且每个表只能有一个主键。
ALTERTABLE Persons ADD PRIMARY KEY(id_p)
外键,一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY
创建foreign key
FOREIGNKEY (ID_P) REFERENCES PERSONS(ID_P)
ALTERTABLE TABLE_NAME ADD FOREIGNKEY (ID_P) REFERENCES TABLE2_NAME(ID_P)
撤销foreignkey
ALTERDROP FOREIGN KEY ID_P
限制列中的值的取值范围 CHECK (Id_P>0)
列中插入默认值,如果没有规定新的值,默认值将会添加到所有的记录
在表中创建索引,在不遍历整个数据库的情况下,索引让数据库应用程序更加快速的查询数据,高效快速的查询数据。用户无法看见索引,只能被用来加速搜索和查询。CREATE INDEX INDEX_NAME ON TABLE_NAME (COLUMN_NAME)
创建唯一的索引,两个行不能有唯一的索引值
CREATEINDEX PersonIndex ON PERSON(LASTNAME DESC)降序索引
删除索引 ALTER TABLE TABLE_NAME DROP INDEX INDEX_NAME
删除数据库DROP DATABASE DB_NAME
删除数据表DROP TABLE TABLE_NAME
删除表中数据,不删除表结构TRUNCATE TABLE 表名称
添加字段 ALTER TABLE TABLE_NAMEADD COLUMN_NAME DATATYPE
删除字段 ALTER TABLE TABLE_NAMEDROP COLUMN COLUMN_NAME
修改数据类型 ALTER TABLE TABLE_NAMEALTER COLUMN_NAME DATATYPE
自增数据段,若要使开始值为其他值,则ALTER TABLE TABLE_NAME AUTO_INCREMENT=100
视图:包含行和列,类似于一个真实的表,视图就是来自于一个或多个数据库中的真实的表中的字段。
我们可以向视图中添加SQL函数,where以及join语句,也可以提交数据,就像这些来自于某一个单一的表
CREATEVIEW VIEW_NAME AS SELECT COLUMN_NAME(S)FROM TABLE_NAME WHERE CONDITION
删除视图
DROPVIEW VIEW_NAME
NOW() 返回当前的日期和时间
CURDATE() 返回当前的日期
CURTIME() 返回当前的时间
DATE() 提交日期或日期/时间表达式的日期部分
EXTRACT() 返回日期/时间表达式的日期部分
DATE_ADD() 给日期添加指定的时间间隔
DATE_SUB() 给日期减去指定的时间间隔
DATEDIFF() 返回两个日期之间的天数
DATE_FORMAT() 用不同的格式显示日期/时间
NULL值的处理方式与其他值不同。NULL 用作未知的或不适用的值的占位符。
搜索数据库表中某个为空的值IS NULL
MySQL数据类型
TEXT类型
CHAR(size) 保存固定长度的字符串(可包含字母,数字,特殊字符)。在括号中指定字符串的长度,最多是255个字符。
VARCHAR(size) 保存可变长度的字符串(包含数字,字母,特殊字符)。在括号中指定字符串的最大长度,最多255个字符。如果长度超过255,将会被转换为TEXT类型。
TINYTEXT 保存最大长度为255个字符的字符串
TEXT 保存最大长度为65535个字符的字符串
BLOB 用于存放BLOBs(Binary Large Objects)。最多位数为65535
MEDIUMTEXT 存放最大长度为16,777,215个字符的字符串
LONGTEXT 存放最大长度为4,294,967,295个字符的字符串
LONGBLOB 用于存放BLOBs(Binary Large Objects),最大长度为4,294,967,295 字节的数据。
ENUM(x,y,z,…) 用于存放可能输入值的列表。可以在ENUM中列出最大的65535个值。
SET 和ENUM类似,SET最多可以包含64个列表项,SET可以存放一个以上的值
NUMBER类型
TINYINT(size) -128到127常规,0到255无符号。在括号中规定最大的位数。
SMALLINT(size) -32768到32767常规,0-65535无符号。在括号中规定最大位数。
MEDIUMINT(size) -8388608到8388607普通,0到166777215无符号。在括号中规定最大位数。
INT(size) -2147483648到2147483648常规,0- 4294967295无符号,括号中规定最大位数。
BIGINT(size) -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。
FLOAT(size,d) 带有浮动小数点小数字。在括号中规定最大的位数。在d参数中规定小数点右侧的位数。
DOUBLE(size,d) 带有浮动小数点大数字。在括号中规定最大的位数。在d参数中规定小数点右侧的位数。
DECIMAL(size,d) 作为字符串存储的DOUBLE类型的小数,允许固定的小数点
DATE类型
DATE() 日期。格式:YYYY-MM-DD 注释:支持的范围是从'1000-01-01' 到 '9999-12-31'
DATETIME() 日期和时间的组合。格式:YYYY-MM-DDHH:MM:SS
注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-3123:59:59'
TIMESTAPE() 时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。
格式:YYYY-MM-DD HH:MM:SS
注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-0903:14:07' UTC
TIME() 时间,格式:HH:MM:SS 注释:支持的范围是从 '-838:59:59'到 '838:59:59'
YEAR() 2或4位的年。注释:4 位格式所允许的值:1901 到2155。
2 位格式所允许的值:70 到 69,表示从 1970 到 2069。
DBMS - 数据库管理系统(Database Management System)
数据库管理系统是一种可以访问数据库中数据的计算机程序。
DBMS 使我们有能力在数据库中提取、修改或者存贮信息。
不同的 DBMS 提供不同的函数供查询、提交以及修改数据。
RDBMS- 关系数据库管理系统(Relational Database Management System)
关系数据库管理系统 (RDBMS) 也是一种数据库管理系统,其数据库是根据数据间的关系来组织和访问数据的。
20 世纪 70 年代初,IBM 公司发明了 RDBMS。
RDBMS 是 SQL 的基础,也是所有现代数据库系统诸如 Oracle、SQL Server、IBMDB2、Sybase、MySQL 以及 Microsoft Access 的基础。
SELECTFUNCTION(列) FROM 表
函数的类型 : Aggregate函数
Scalar函数
Aggregatefunctions函数的操作是面向一系列的值,并返回一个单一的值
SQLAVG() 返回列的平均值,NULL值不计算在其中。
SQL COUNT() 返回匹配指定条件的行数 COUNT(*)或者COUNT(1) 后者的效率稍高
SQLFIRST() 获取返回字段中第一个记录的值
SQLLAST() 获取返回字段中最后一个记录的值
SQLMAX() 返回一列中的最大值。NULL值不包含在其中。
SQLMIN() 返回一列中的最小值,NULL值不包括在计算中。
SQLSUM() 返回数值列的总值。
SQLGROUP BY 用于结合合计函数,根据一个或者多个列对结果及分组
SQLHAVING WHERE关键词不能在聚合函数中使用,只能用HAVING
SQLUCASE() 把结果中的字段的值变成大写。
SQLLCASE() 把结果中的字段变成小写。
SQLMID() 从文本字段中提取字段。
SELECTMID(City,1,3) as SmallCity FROM Persons 获取所有city的1-3个字母
SQLLEN() 返回文本字段中的值的长度。
SQLROUND() 把数值字段舍入未指定的小数位数。
SQLNOW() 返回当前的日期和时间
SQLFORMAT() 对当前的显示字段进行格式化
FORMAT(column_name,format) column_name 列名 FORMAT规定格式