接着上一章的内容,上一章安装好了Mysql和对应的编译器workbench,并且简单的创造了一个数据库college,这一章我们学习SQL语言的一些基础。
首先了解一下基础。
Sql语言组成
sql 的一些基本定义语句的的用法。
操作对象 | 语句 | 功能 |
表 | CREATE TABLE | 新建数据表 |
ALTER TABLE | 修改数据表 | |
DROP TABLE | 删除数据表 | |
视图 | CREATE VIEW | 新建视图 |
DROP VIEW | 删除视图 | |
索引 | CREATE INDEX | 新建索引 |
DROP INDEX | 删除索引 | |
模式 | CREATE SCHEMA | 新建模式 |
DROP SCHEMA | 删除模式 | |
域 | CREATE DOMAIN | 新建数据值域 |
ALTER DOMAIN | 修改域定义 | |
DROP DOMAIN | 删除域 | |
存储过程 | CREATE PROCEDURE | 新建存储过程 |
DROP PROCEDURE | 删除存储过程 | |
触发器 | CREATE TRIGGER | 新建触发器 |
DROP TRIGGER | 删除触发器 |
其核心动词只有9个,除了上面的定义语句用法,还有查询等:
SQL功能 | 动词 |
数据定义DDL | CREATE、DROP、ALTER |
数据查询DQL | SELECT |
数据更新DML | INSERT、UPDATE、DELETE |
数据控制DCL | GRANT、REVOKE |
MySql数据类型
数值类型
1.TINYINT类型:可以存放-128~127之间的所有正负整数。该类型的数据,在内存中占用1个字节的空间,即使用8位二进制数表示,其中的1 位二进制数表示整数值的正负号,其他7位表示整数值的长度和大小。
2.TINYINT UNSIGNED类型:无符号的TINYINT类型,可以存放0~255之间的所有整数。该类型的数据也只占用内存中的1个字节。
3.SMALLINT类型:用于保存-32768~32767之间的所有正负整数。该类型的数据,在内存中占用2个字节的空间
4.SMALLINT UNSIGNED类型:无符号的SMALLINT类型,可以存放从0~65535之间的所有整数。该类型的数据,在内存中占用2个字节的空间
5.MEDIUMINT类型:用于存储-8388608~8388607之间的所有正负整数。该类型的数据,在内存中占用3个字节的空间。
6.MEDIUMINT UNSIGNED类型:无符号的MEDIUMINT类型,用于存放0~16777215之间的所有整数。该类型的数据,在内存中占用3个字节的空间。
7.INT 或 INTEGER类型:用于存放-2147483648~2147483647之间的所有正负整数。该类型的数据,在内存中占用4个字节的空间。
8.INT UNSIGNED 或 INTEGER UNSIGNED类型:无符号的INT 或 INTEGER类型,用于存放0~4294967295之间的所有整数。该类型的数据,在内存中占用4个字节的空间。
9.BIGINT类型:用于存放-9223372036854775808~9223372036854775807之间的所有正负整数。该类型的数据,在内存中占用8个字节的空间。
10.BIGINT UNSIGNED类型:无符号的BIGINT,可以存放0~18446744073709551615之间的所有整数。该类型的数据,在内存中占用8个字节的空间。。
11.FLOAT类型:用于存放数据范围为-3.402823466E+38 ~ -1.175494351E-38,0,1.175494351E-38~3.402823466E+38之间的浮点数。该类型的数据,在内存中占用4个字节的空间。
12.DOUBLE或DOUBLE PRECISION或REAL类型:用于存放数据范围为-1.7976931348623157E+308~-2.2250738585072014E-308,0,2.2250738585072014E-308~1.7976931348623157E+308之间的浮点数。该类型的数据,在内存中占用8个字节的空间。
13.DECIMAL[(M,[D])] 或 NUMERIC(M,D)类型:由M(整个数字的长度,包括小数点,小数点左边的位数,小数点右边的位数,但不包括负号)和D(小数点右边的位数)决定的数字数据类型,M默认为10,D默认为0。
字符串类型
1.CHAR(M) [BINARY] 或 NCHAR(M) [BINARY]类型:用于保存定长的字符串,其中,M表示字符串的最大长度,其范围为1~255,字符串中的每个字符占用1个字节的存储空间。默认BINARY项,则表示不分大小写字母。NCHAR表示使用默认的字符集。当输入的字符串个数小于M,则数据库系统将以空格补足,但在取出来时末尾的空格将自动去掉。
2.[NATIONAL] VARCHAR(M) [BINARY]类型:用于存放变长的字符串,占用的存储空间范围为0~255字节,M的取值范围为1 – 255。如果没有BINARY项,默认BINARY项,则表示不分大小写字母。当输入的字符串个数小于M,则数据库系统将以空格补足,但在取出来时末尾的空格将自动去掉。
3.TINYBLOB 类型:用于保存不超过255个字符的二进制字符串,所占用的存储空间范围为0~255字节。
4.TINYTEXT类型:用于存储短文字符串,所占用的存储空间范围为0~255字节。
5.BLOB类型:用于存储二进制的长文本数据,所占用的存储空间范围为0~65535字节。
6.TEXT类型:用于存储长文本数据,所占用的存储空间范围为0~65535字节。
7.MEDIUMBLOB类型:用于存储二进制形式的中等长度的长文本数据,所占用的存储空间范围为0~16777215字节。
8.MEDIUMTEXT类型:用于存储中等长度的长文本数据,所占用的存储空间范围为0~16777215字节。
9.LONGBLOB类型:用于保存二进制形式的极大长度的长文本数据,所占用的存储空间范围为0~4294967295字节。
10.LONGTEXT类型:用于保存极大长度的长文本数据,所占用的存储空间范围为0~4294967295字节。
日期与时间类型
1.DATE类型:用于存储日期数据,日期数据的范围为1000-01-01至9999-12-31。每个DATE类型的数据占用3字节的存储空间,其输入格式为“年-月-日(YYYY-MM-DD)”。
2.DATETIME类型:用于存储混合日期和时间数据,日期和时间数据的范围为1000-01-01 00:00:00至9999-12-31 23:59:59。每个DATETIME类型的数据占用8字节的存储空间,其输入格式为“年-月-日 时-分-秒(YYYY-MM-DD HH:MM:SS)”。
3.TIME类型:用于存储时间数据或持续时间的数据,时间数据的范围为-838:59:59′至 838:59:59′。每个TIME类型的数据占用3字节的存储空间,其输入格式为“时-分-秒(HH:MM:SS)”。
4.YEAR类型:用于存储年份数据,年份的取值范围为1901至2155。每个YEAR类型的数据占用1字节的存储空间,其输入格式为“年(YYYY)”。
5.TIMESTAMP类型:用于存储混合日期和时间值、时间戳,混合日期和时间数据、时间戳的范围为1970-01-01 00:00:00 - 2037年的某个时候。每个TIMESTAMP类型的数据占用8字节的存储空间,其输入格式为“年-月-日 时-分-秒(YYYY-MM-DD HH:MM:SS)”。
复合类型
ENUM('value1','value2',…)类型:用于存储从预先定义的字符集合中选取互斥的数据值,可以有65535个不同的值。
SET('value1','value2',…)类型:用于存储从预先定义的字符集合中选取任意数目的值,最多有64个成员。
SQL数据库层次结构