SQL语言
SQL(Structured Query Language 即结构化查询语言),SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
分类
DDL(data definition language)
数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER。
DML(data manipulation language)
DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE。
DQL(Data Query Language)
数据库查询语言: 查询数据SELECT。
DCL(Data Control Language)
DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE。
举例
DDL语句--数据库操作
1. 查询
查询所有的数据库: show databases;
查询当前的数据库: select database();
2. 创建
create database 数据库名 ;
数据库名要求:
- 区分大小写
- 唯一性
- 不能使用关键字如 create select
- 不能单独使用数字和特殊符号“如-"
- 正常的:用拼音或单词即可。
3. 删除
drop database 数据库名;
DDL表操作创建和查询
1. 查询当前数据库所有表
show tables;
2. 查询表结构
desc 表名;
3. 查询指定的建表语句
show create table 表名;
DDL表操作
1. 建表
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
......
字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];
2. 修改
添加字段: alter table 表名 add 字段名 类型(长度) [约束];
数据类型
整数类型
tingint/int
tingint 有符号性最大127/int 有符号型最大2147483647
unsigned
数值无符号,就只能输入正值,不能输入负值
int
插入大于INT宽度限制的值,仍然可以存储。但不能超过上限2147483647
INT整形的宽度仅为显示宽度,不是限制。因此建议整形无须指定宽度。字符型需要使用宽度。
zerofill
zerofill 自动填充0
浮点类型
浮点数和定点数都可以用类型名称后加(M,D)的方式来表示,(M,D)表示一共显示M位数字(总数位+小数位),其中D位于小数点后面,M和D又称为精度和标度。
float
float(5,2)5是整数加小数的总长,2是小数长度。整数意味只有3位长度。
decimal ---精度小数
定点数在MySQL内部以字符串形式存储,比浮点数更精确,适合用来表示货币等精度高的数据。decimal在不指定精度时,默认的整数位为10,默认的小数位为0
注意:超长部分不记录,会四舍五入
总结
- float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位,小数点占一位)
- double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
- decimal:数字型,128bit,常用于银行帐目计算。(28个有效位)
日期和时间类型
data / time
下图的命令是插入当前日期
timestamp
timestamp 该列插入空值时,会自动填入当前时间。
注意:手动插入时间的时候必须加单引号。
year
其它的时间,按要求插入
==插入年份时,尽量使用4位值
==插入两位年份时,<=69,默认以20开头,比如65, 结果2065
>=70,默认以19开头,比如82,结果1982
字符串
char / varchar
CHAR 列的长度固定为创建表时声明的长度: 0 ~ 255
VARCHAR 列中的值为可变长字符串,长度: 0 ~ 65535
在检索的时候,CHAR列删除了尾部的空格,而VARCHAR则保留这些空格
length(v) 统计长度的函数
concat(v,'=') 拼接函数
二进制字符
BINARY / VARBINARY
binary和 varbinary类似于CHAR 和 VARCHAR,
不同的是它们包含二进制字符,而不包含非二进制字符串
枚举 集合类型
enum ----单选、多选
字段的值只能在给定范围中选择
enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female
set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)