MySQL Introduction
基本概念
数据结构
数据类型
MySQL基本数据类型如下所示:
- 整数: tinyint、smallint、mediumint、int、bigint
- 浮点数: float、double、real、decimal
- 日期和时间: date、time、datetime、timestamp、year
- 字符串: char、varchar
- 文本: tinytext、text、mediumtext、longtext
- 二进制: tinyblob、blob、mediumblob、longblob
类型 | 字节 | 范围 |
---|---|---|
tinyint(m) | 1 | (-128~127) |
smallint(m) | 2 | (-32768~32767) |
mediumint(m) | 3 | (-8388608~8388607) |
int(m) | 4 | (-2147483648~2147483647) |
bigint(m) | 8 | (+-9.22*10^18) |
类型 | 长度 |
---|---|
char(n) | 固定长度,最多255个字符 |
varchar(n) | 固定长度,最多65535个字符 |
tinytext | 可变长度,最多255个字符 |
text | 可变长度,最多65535个字符 |
mediumtext | 可变长度,最多2的24次方-1个字符 |
longtext | 可变长度,最多2的32次方-1个字符 |
- char(n)
- 存入时用空格补齐,查询时去掉空格,所以存储字符串末尾不能有空格。
关键字:
- NULL
- 数据列可包含NULL值
- NOT NULL
- 数据列不允许包含NULL值
- DEFAULT
- 默认值
- PRIMARY KEY
- 主键
- AUTO_INCREMENT
- 自动递增,适用于整数类型
- UNSIGNED
- 无符号
- CHARACTER SET name
- 指定字符集
基本操作
增删查改
连接数据库
mysql -h IP -u NAME -p # 登录MySQL mysql -h IP -u NAME -D DB -p # 登录MySQL,指定使用的数据库
创建数据库
create database DB [OPTIONS]; -- 创建数据库 create table TABLE(DESC); -- 创建表 create table TAB_NEW like TAB_OLD -- 创建表 create table TAB_NEW as select C1,C2 from TAB_OLD definition only
如果表的描述信息很长,可以将其保存到一个文件,通过如下方式创建:
mysql -D DB -h IP -u NAME -p < createtable.sql
删除数据库
delete from TABLE; -- 清除表中数据,保持increment id truncate TABLE; -- 清除表中数据,清除increment id drop table TABLE; -- 删除整张表 drop database DB; -- 删除整个数据库
修改数据库
修改表项:
insert [into] TABLE [(C1, C2, ...)] values (V1, V2, ...); update TABLE set C1=V1[, C2=V2...] [COND]; update students set age=age+1; -- 将所有人年龄增加1 delete from TABLE [COND]; -- 删除数据 load data local infile 'FILE' into table TABLE;
修改表结构:
alter table TABLE add C1 TYPE; -- 添加列,可以用after C0指定插入位置 alter table TABLE change C1 C2 TYPE; -- 修改列 alter table TABLE modify C TYPE; -- 修改列 alter table TABLE drop C; -- 删除列 alter table TABLE1 rename TABLE2; -- 重命名表 alter table TABLE add primary key(C); -- 添加主键 alter table TABLE drop primary key(C); -- 删除主键 create [unique] index IDXNAME on TABLE(C1,C2); drop index IDXNAME; create view VNAME as select CMD; drop view VNAME;
查询数据库
show databases; -- 查看有哪些数据库 use DB; -- 使用一个数据库 show tables; -- 查看数据库下所有的表 show tables from DB; -- 直接查看某个数据库下的表 show columns from DB.TABLE; -- 查看指定表的结构 show columns from TABLE from DB; -- 查看指定表的结构 select C1[ , C2 ...] from TABLE [COND]; -- 查询满足条件的指定列数据 select * from TABLE [COND]; -- 查询表中所有内容
查询条件的写法:
where C=V -- 支持所有比较运算:=,>,<,>=,<=,!= where C1<V1 and C2>V2; -- 支持and/or组合查询 where C is [not] null where C like "%王%" where C in "str"
基本查询示例:
select * from TABLE where C like '%micky%' select * from TABLE order by C1,C2 select count as TOTAL_COUNT from TABLE -- 总数 select sum(C) as SUM_VAL from TABLE -- 总和
账户管理
create user 'USER'@'localhost' identified by 'PASSWORD'; grant [PERM] on [DB].[TABLE] to '[USER]'@'localhost'; grant all privileges on *.* to 'USER'@'localhost'; flush privileges; drop user 'USER'@'localhost'; mysqladmin -u NAME -p password NEWPSWD # 修改密码,会提示输入旧密码
用户权限:
- ALL PRIVILEGES
- 对数据库的所有权限
- CREATE
- 允许创建表和数据库
- DROP
- 允许删除表和数据库
- DELETE
- 允许删除表中的行
- INSERT
- 允许插入行到表中
- SELECT
- 允许读数据库
- UPDATE
- 允许更新表中的行
- GRANT OPTION
- 允许对其他用户的权限进行管理
数据备份
mysqldump -u user -p dbname > dbname.sql -- 备份数据库 mysqldump -u user -p dbname tblname > dbname-tblname.sql -- 备份表
use dbname -- 导入备份数据库 set names utf8; source dbname.sql