操作数据库
创建数据库
使用SQL语句创建数据库表
- 目标:创建一个school数据库
- 创建学生表(列,字段)
- 学号int 登录密码varchar(20),姓名varchar(2),出生日期(datatime),家庭住址,email
#注意点,使用英文括号,表的名称和字段尽量用``括起来。
#NOT NULL 不能为空
#AUTO_INCREMENT 自增
#COMMENT 注释,字符串用单引号括起来
#所有语句后面都要加逗号,最后一个字段不用加
#DEFAULT'匿名' ,默认值为匿名
# PRIMARY KEY(`id`),设置主键,一般一个表只有唯一的一个主键
#DEFAULT CHARSET=utf8,默认字符是utf-8
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(20) NOT NULL DEFAULT'匿名' COMMENT'姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT'123456' COMMENT'密码',
`sex` VARCHAR(2) NOT NULL DEFAULT'男' COMMENT'性别',
`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
`adress` 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--查看创建数据表的定义语句
DESC student--查看表的结构
复制到单元格就可以,查看语句然后学习
数据表的类型
关于数据库引擎
- INNODB 默认使用
- MYISAM 早些年使用
MYISAM 和 INNODB 的区别
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为2倍 |
常规的使用操作:
- MYISAM 节约空间,速度较快
- INNODB 安全性高,事务的处理,多表多用户的操作
MYISAM 和 INNODB 在物理文件上的区别
在物理空间存在的位置
所有的数据库的文件都存在data目录下,一个文件夹就对应一个数据库
本质还是文件的存储
- INNODB 在数据库中只有一个*.frm文件,以及上级目录下的ibdata1文件
- MYISAM 对应文件
- *.frm 表结构的定义文件
- *.MYD 数据文件(data)
- *.MYI 索引文件(index)
设置数据库表的字符集编码
CHARSET=utf8
如果不设置的话,就会变成默认的字符集编码(一般不支持中文)
或者在my.ini文件中配置默认的编码
character-set-server=utf8
修改和删除表
修改表
#修改表名 ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teacher1
#增加表的字段 ALTER TABLE 表名 ADD 字段名 列属性
ALTER TABLE teacher1 ADD age INT(11)
#修改表的字段(重命名、修改约束)
#ALTER TABLE 表名 MODIFY 字段名 列属性
ALTER TABLE teacher1 MODIFY age VARCHAR(11)#修改约束
#ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性
ALTER TABLE teacher1 CHANGE age age1 INT(11)#重命名
#删除表的字段
#ALTER TABLE 表名 DROP 字段名
ALTER TABLE teacher1 DROP age1
删除表
#删除表
DROP TABLE IF EXISTS teacher1
所有的创建表和删除表操作尽量加上判断是否存在,以免报错