SHOW DATABASES
n 语法:
u SHOW DATABASES[LIKE wild] ;
l 如果使用LIKE wild部分,wild字符串可以是一个使用SQL的"%" 和"_" 通配符的字符串
n 功能:列出在MySQL服务器主机上的数据库
n MySQL自带的数据库:
u information_schema:主要存储了系统中的一些数据库对象信息:
l 如用户表信息、列信息、权限信息、字符集信息、分区信息等。(数据字典表)
u mysql:存储了系统的用户权限信息及帮助信息。
u test:系统自动创建的测试数据库,任何用户都可以使用。
SQL语句语法
n SQL语句可单行或多行书写,以";"结尾。
n 用空格和缩进来提高语句的可读性。
n 关键词不能跨多行或简写,大小写不敏感(建议用大写)。
n 子句通常位于独立行,便于编辑,提高可读性。
SELECT* FROM EMPLOYEES;
注释:
SQL标准
从/*序列到后面的*/序列。多行注释。
从' _ _ '序列到行尾。注意:第2个破折号后面至少更一个空格符(例如空格、tab、换行符等等)。该语法与标准SQL注释语法稍有不同
MySQL
从'#'字符到行尾
CREATE DATABASE
n 语法
u CREATE DATABASE [IF NOT EXISTS] 数据库名;
n 功能:用给定的名字创建一个数据库。
n 前提:需要获得数据库的CREATE权限。
n 如果数据库已经存在,发生一个错误。
DROP DATABASE
n 语法:
u DROP DATABASE [IF EXISTS] 数据库名;
n 功能:删除数据库中的所有表和数据库。
n 前提:需要获得数据库DROP权限。
n 要小心使用这个命令
用USE选用数据库
n 语法:
u USE数据库名;
n 功能:把指定数据库作为默认(当前)数据库使用,用于后续语句。
数据表的列类型
列类型
MySQL支持多种列类型:
数值类型
日期/时间类型
字符串(字符)类型
数值数据类型——整数
类型 | 存储字节 | 描述 | 范围 |
BIT[(m)] |
| 位字段类型 | M表示每个值的位数,范围从1到64 |
TINYIN[(m)] | 1 | 很小的整数 | -128~127 无符号的范围是0~255 |
BOOL或BOOLEAN |
| TINYINT(1)同义词 | 0被视为假。非0值视为真 |
SMALLINT | 2 | 小的整数 | -32768~32767 无符号的范围是0~16777215 |
MEDIUMINT | 3 | 中等大小的整数 | -8388698~8388607 无符号的范围0~16777215 |
INT[(m)] 或INTERGER | 4 | 普通大小的整数 | -2147483648~2147483647 无符号的范围是0~4294967295 |
BIGINT[(m)] | 8 | 大整数 | -9223372036854775808~9223372036854775807 无符号的范围0~18446744073709551615 |
FLOAT(M,D) | 4 | 单精度 | -3.402823466E+38到-1.17549451E-38 |
DOUBLE(M,D) | 8 | 双精度 | -1.797693134862315E+308到-2.225073858072014E-308 |
DECIMAL[(M,D)] | 变长 | “严格”的定点数 | 整数最大位数为65。小数最大位数(D)为30 |
注:M表示最大显示宽度;D表示小数点后面的位数。
定点数DECIMAL在内部以字符串形式存放,适合于表示货币等精度高的数据。一定要指定M和D。
日期和时间类型
类型 | 存储字节 | 描述 | 范围 | |
DATE | 4 | 日期 | 支持范围为'1000-01-01'到'9999-12-31' | |
DATETIME | 8 | 日期和时间组合 | 范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59' | |
TIMESTAMP | 4 | 时间戳 | '1970-01-01 00:00:00'到'2038-01-09 03:14:07' | |
TIME | 3 | 时间 | 范围'-838:59:59'到'838:59:59' | |
YEAR[(2|4)] | 1 | 两位或四位格式的年,默认是四位格式 | 在四位格式中,允许的值是1901到2155和0000。在两位格式中,允许的值是70到69,表示从1970到2069年 | |
TIMESTAMP更时区相关,插入日期时,会先转换为本地时区后存放,而取出时,也会将日期转换为本地时区后显示。
字符串类型
类型 | 存储字节 | 描述 | 范围 |
CHAR(M) | M个 | 固定长度 | M表示列长度,范围是0到255个字符 |
CHAR |
| CHAR(1) |
|
VARCHAR(M) | L+1个 | 变长 | M表示最大列长度。M的范围是0到65,535 |
BINARY(M) | M个 |
| BINARY类型类似于CHAR类型,但保存二进制字节字符串而不是非二进制字符串 |
VARBINARY(M) | L+1 |
| 类似于VARCHAR类型,但保存二进制字节字符串而不是非二进制字符串 |
TINYBLOB | L+1 |
| 最大长度为255(28-1)字节的BLOB列 |
TINYTEXT | L+1 |
| 最大长度为255(28-1)字节的TEXT列 |
BLOB | L+2 | 二进制大对象 | 最大长度为65,535(216-1)字节的BLOB列 |
TEXT | L+2 | 长文本 | 最大长度为65,535(216-1)字节的TEXT列 |
MEDIUMBLOB | L+3 |
| 最大长度16,777,215(224-1)字节的BLOB列 |
MEDIUMTEXT | L+3 |
| 最大长度16,777,215(224-1)字节的TEXT列 |
LONGBLOB | L+3 |
| 最大长度为4,294,967,295或4GB(232-1)字节的BLOB列 |
LONGTEXT | L+3 |
| 最大长度为4,294,967,295或4GB(232-1)字符的TEXT列 |
ENUM('v1','v2') | 1或2个 | 枚举类型 | 只能由一个值的字符串 |
SET('v1','v2',…) | 1—8个 | 枚举类型 | 可以有零活多个值 |
有关数据表的DDL操作
SHOW
u 语法:
l SHOW TABLES [FROM 数据库名] [LIKEwild] ;
u 功能:显示当前数据库中已有的数据表的信息
DESCRIBE
u 语法:
l {DESCRIBE|DESC} 表明 [列名] ;
u 功能:查看数据表中各列的信息
u 用"SHOW CREATE TABLE 表名\G"可以查看更全面的表定义信息
用CREATE TABLE创建数据表
l 简单语法:
CREATETABLE 表明(
列名列类型,
列名列类型,
…
);
u 功能:在当前数据库中创建一张表
u 前提:必须拥有表CREATE权限
关于识别符
数据库名、表名、索引名、列名是识别符
识别符 | 最大长度(字节) | 允许的字符 |
数据库名 | 64 | 目录名允许的任何字符, |
表名 | 64 | 文件名允许的任何字符,? |
列名 | 64 | 所有字符 |
索引名 | 64 | 所有字符 |
别名 | 255 | 所有字符 |
操作系统的大小写敏感决定了数据库名和表名的大小写敏感性
l window系统大小写不敏感,linux,unix系统大小写敏感
列、索引、存储子程序和触发器名在任何平台上对大小写不敏感,列的别名也不敏感
建表示例
CREATETABLE depts(
dept_idINT,
nameVARCHAR(20),
descriptionVARCHAR(255)
);
CREATETABLE employees(
employee_id INT,
name VARCHAR(20),
gender CHAR,
dept_id INT,
join_time DATETIME,
salary DECIMAL(8,2),
address CARCHAR(100),
image BLOB,
description TEXT
);
删除数据表
n 语法:
u DROP TABLE [IF EXISTS] 表名;
n 删除指定的表
用ALTER TABLE语句修改表的结构
n 修改列类型
u ALTER TABLE 表名MODIFY 列名列类型 [FITST|AFTER 列名] ;
n 增加列
u ALTER TABLE 表名 ADD 列名列类型 [FIRST|AFTER 列名];
n 删除列
u ALTER TABLE 表名 DROP 列名;
n 列改名
u ALTER TABLE 表名 CHANGE 旧列名新列名 列类型 [FIRST|AFTER 列名]
n 更改表名
u ALTER TABLE 表名 RENAME 新表名;
u RENAME TABLE 表名 TO 新表名;
帮助的使用
MySQL帮助的使用
u 安装自带的文档
l 安装目录\Docs\manual.chm
u 命令行帮助
l ?contents 显示所有可供查询的分类
l ?类别名称 如:? Data Types;
l ?关键字 如: ? create table;
u 注:如果没有命令行帮助信息,可以导入MySQL目录下的share文件夹内的fill_help_tables.sql
总结
u 有关数据库的DDL操作
l SHOW DATABASES;
l CREATE DATEABASE 数据库名;
l DROP DATABASE [IF EXISTS] 数据库名;
l USE 数据库名;
u 有关数据表的DDL操作
l SHOW TABLES [FROM 数据库名]
l DESC 表名;
l CREATE TABLE 表名(…);
l DROP TABLE [IF EXISTS] 表名;
l ALTER TABLE 表名…;
u 数据表的类型
l 数值类型:INT DOUBLE DECIMAL
l 日期类型:DATE TIME DATETIME TIMESTAMP
l 字符串类型:CHAR(M) VARCHAR(M) TEXT BLOB
u 帮助的使用:manual.chm ?