一、数据类型
1、整型
数据类型 存储空间 说明 取值范围 TINYINT 1字节 非常小的整数 带符号值:-128~127
无符号值:0~255SMALLINT 2字节 较小的整数 带符号值:-32768~32767
无符号值:0~65535MEDIUMNT 3字节 中等大小的整数 带符号值:-8388608~8388607
无符号值:0~16777215INT 4字节 标准整数 带符号值:-2147483648~2147483647
无符号值:0~4294967295BIGINT 8字节 大整数
2、浮点型
数据类型 存储空间 说明 取值范围 FLOAT 4字节 但精度浮点数 DOUBLE 8字节 双精度浮点数 DECIMAL(M,D) 自定义 以字符串形式表示
3、字符串类型
类型 存储空间 说明 最大长度 Char[(M)] M字节 定长字符串 M字节 Varchar[(M)] L+1字节 可变长字符串 M字节 tinyblog,tingtext L+1字节 非常小的blob和文本串 2^8字符 blog,text L+2字节 小BLOB和文本串 2^16-1字节 mediumblob,mediumtext L+3字节 中等的BLOB和文本串 2^24字节 longblob,longtext L+4字节 大BLOB和文本串 2^32-1字节 enum('value','value') 1或2字节 枚举:可赋予某个枚举成员 65535个成员 set('value', 'value') 1,2,3,4或8字节 集合:可赋予多个集合成员 64个成员
4、日期和时间型数据
类型 存储空间 说明 最大长度 Date 3字节 YYYY-MM-DD格式表示 1000-01-01~9999-12-31 TIME 3字节 hh:mm:ss格式表示时间值 -838:59:59~838:59:59 DATETIME 8字节 YYYY-MM-DD hh:mm:ss格式 TIMESTAMP 4字节 YYYYMMDDhhmmss格式表示时间戳 YEAR 1字节 YYYY格式的年份值 1901~2155
二、MySQL数据库的操作
1、登录数据库
mysql 参数
-D,--database=name 打开指定数据库
--delimiter=name 指定分隔符
-E,--vertical 垂直显示结果
-h,--host=name 服务器名称
-H,--html 提供HTML输出
-X,--xml 提供XML输出
-p,--password[=name]密码
-P,--port=# 端口号
--prompt=name 设置提示符
-u,--user=name 用户名
-V,--version 输出版本信息并退出
mysql -h 服务器主机地址 -u 用户名 -p 用户密码
2、退出登录
exit
quit
q
3、修改密码
4、创建选择及查看数据库
创建数据库
(1)更改mysql默认密码:可以先运行mysqladmin,然后进入mysql
使用一下语句:
use mysql;
update user set password=PASSWORD('1334') where user='root';
flush privileges;
(2)ifnull(字段,0)处理空值 sql server中是isnull(字段,0)
(3)mysql -uroot -proot 基本操作
show databases;
use test;
show tables from test;
desc test;
(4)导入employees数据库
方法一
cmd
mysql -uroot -proot employees <路径+employees_dbemployees.sql
例:mysql -uroot -proot employees <F:employees_dbemployees.sql
方法二:mysql -uroot -proot
use employees
source D:employees_dbemployees.sql
(5)NOW(),CURRENT_TIMESTAMP(),SYSDATE()三个的差异,sysdate()取的是执行函数的时间,其它两个取的是执行sql时的时间
(6)生日问题:最近的生日(过去的不算)
select name,birthday,if(cur>today,cur,next) as birth_day
from (
select name,birthday,today,
date_add(cur,interval IF( day(birthday)=29 && day(cur)=28,1,0) day) as cur,
date_add(next,interval IF( day(birthday)=29 && day(next)=28,1,0) day) as next
from (
select name,birthday,today,
date_add(birthday,interval diff year) as cur,
date_add(birthday,interval diff+1 year) as next
from (
select concat(last_name,' ',first_name) as name,
birth_date as birthday,
(year(now())-year(birth_date)) as diff,
now() as today
from employees) as a
) as b
) as c;