1 操作数据库
错做数据库>操作数据库中的表>操作数据库中表的数据
mysql -u root -p(密码) --连接数据库
update mysql.user set authentication_string=password("123456") where user='root' and Host='localhost'; --修改密码
flush privileges; --刷新权限
---------------------------------------------------------------------------------------
--所有的语句都使用;结尾
show databases; -- 查看所有的数据库
use school -- 切换数据库use 数据库名
show tables; --查看数据库中所有的表
describe student; --显示数据库中所有表的信息
如果你的表名或字段名是某些特殊字符,如user, root, 就需要带``
如: use `user`;
create database [if not exists] westos; --创建一个数据库 [ ]表示可选
drop database [if exists] westos;
exit; --退出连接
-- 单行注释
/*多行注释*/
2 数据库的列类型
字符串 | 类型 | 大小 |
---|---|---|
tinyint | 十分小的数据 | 1个字节 |
smallint | 较小的数据 | 2个字节 |
mediumint | 中等大小的数据 | 3个字节 |
int | 标准的整数 | 4个字节 |
bigin | 较大的数据 | -8个字节 |
float | 浮点数 | 4个字节 |
double | 浮点数 | 8个字节 |
decimal | 字符串形式的浮点数 |
字符串 | 类型 | 大小 | 备注 |
---|---|---|---|
char | 字符串固定大小 | 0~255 | |
varchar | 可变字符串 | 0~65535 | 常用的 string |
tinytext | 微型文本 | 2^8 - 1 | |
text | 文本串 | 2^16-1 | 保存大文本 |
时间日期 | 格式 | 备注 |
---|---|---|
data | YYYY-MM-DD | 日期格式 |
time | HH:mm:ss | 时间格式 |
datatime | YYYY-MM-DD HH:mm:ss | 最常用的时间格式 |
timestamp | 1970.1.1到现在的毫秒数 | 时间戳 |
year | 年份表示 |
null 没有值 未知
3 字段属性
字段属性 | 作用 | 备注 |
---|---|---|
unsigned | 无符号整数 | 生命该列不能为负数 |
zerofill | 不足的位数使用0填充 | 如3长度的int, 005 |
自增 | 在上一条记录的基础上自增1 | 可以自定义设置主键的起始值和步长 |
非空? | 不填写值默认为null | 假如设置为not null,不给它赋值就会报错; |
默认 | 设置为默认的值 | 不指定该列的值回设置为默认的值 |
主键 | 一般一个表只有一个 | 每一个表都必须存在的字段 |
version | 乐观锁 | 每一个表都必须存在的字段 |
gmt_create | 创建时间 | 每一个表都必须存在的字段 |
gmt_update | 修改时间 | 每一个表都必须存在的字段 |
is_delete | 伪删除 | 每一个表都必须存在的字段 |
4 创建数据库表
创建表:
create table if not exists `student`(
`id` int(4) not null auto_increment comment '学号',
`name` varchar(30) not null default '匿名' comment '姓名',
`pwd` varchar(20) not null default '123456' comment '密码',
`sex` varchar(2) not null default '女' comment '性别',
`birthday` datetime default null comment '出生日期',
`address` varchar(100) default null comment '邮箱',
`email` varchar(50) default null comment '邮箱',
primary key(`id`) --设置主键
)engine-innodb default charset=utf8
create table [if not exists] `表明`(
`字段名` 列类型 [属性] [索引] [注释],
`字段名` 列类型 [属性] [索引] [注释],
...
`字段名` 列类型 [属性] [索引] [注释]
)[表类型][字符集设置][注释]
常用命令
show create database school --查看创建数据库的语句
show create table student -- 查看student数据表的定义语句
desc student --显示表的结构
数据表的类型
关于数据库引擎:
INNODB & MYISAM
– MYISAM INNODB 事务支持 不支持 支持 数据行锁定 不支持 支持行锁定 外键 不支持 支持 全文索引 支持 不支持 表空间的大小 较小 较大,约为MYISAM的两倍 常规使用操作:
- MYISAM 节约空间,速度较快
- 安全性高,实物的处理,多表多用户操作
在物理空间的位置:所有的数据库文件都存储在data目录下,本质还是文件的存储
MYSQL引擎在物理文件上的区别:
- InnoDB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
- MYISAM对应文件:
- *.frm - 表结构的定义文件
- *.MYD 数据文件(data)
- *.MYI 索引文件
设置数据库表的字符集编码:
charset=utf8
不设置的话使用sql的默认编码Latin1, 不支持中文
可以在my.ini中配置默认的编码:character-set-server=utf8
6 修改删除表
修改表
alter table teacher rename as teacher1 --修改表名
alter table teacher1 add age int(11) -- 增加表的字段
alter table teacher1 modify age varchar(11) --修改表的字段(修改约束)
alter table teacher1 change age age1 int(11) --修改表的字段(重命名)
-- change用来字段重命名,不能修改字段类型和约束,
-- modify不能用来字段重命名,智能修改字段类型和约束
alter table teacher drop age --删除表的字段
drop table if exists teacher --删除表
所有的创建和删除操作尽量加上判断,以免报错