由浅入深学习Mysql(一)
eg.1创建学校数据库,并建立学生表格,内容包括ID 年龄 性别 姓名
步骤
1.1创建数据库
右键选中root@localhost->创建数据库->弹出数据库窗口后 填写数据库名称 基字符集为UTF-8,数据库排序规则位utf8_general_ci,如图
(F:\博客截图\创建数据库.png)]
1.2创建表
右键选中school库下的表->创建表 在弹出的新表中将表名称写好,引擎默认InnnoDB,字符集格式为UTF8,核对为utf8_general_ci!
eg.2由命令行来查看刚才创建的表
命令行常用的操作
mysql -u root -p123456 --成功连接了数据库
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost'; --更改密码
flush privileges; --在做完操作后最好加上刷新权限
常用的命令行
show databases;查看所有的数据库
mysq1> use schoo1 -- 切换数据库 格式为 use 数据库名
--当出现Database changed说明切换数据库成功
show tables; -- 查看数据库中所有的表
describe student; --显示数据库中student表的信息
create database westos; --创建一个数据库
exit;--退出连接
如果卡了可以ctrl+c强行终止,然后可以再输一遍命令
2.1步骤
windows +R打开命令行输入
mysql -u root -p123456 --连接数据库
use schoo1 --切换到school的库
describe student; --显示数据库中student表的信息
注意事项
命令符要加;结尾
出现 :ERROR 1146 (42S02): Table ‘school.student’ doesn’t exist
库里面没有这个查询的这个表有可能表名写错了,或者库切错了,或者库里没这个表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GDcJdElL-1581095604651)(F:\博客截图\20200206181039.png)]
eg.3操作数据库(通过代码传建数据库及库内表)
代码:
DROP DATABASE IF NOT EXISTS school --删除数据库
CREATE DATABASE IF NOT EXISTS WESTOS --创建库westos 删除和创建时最好都加上条件语句
USE `WESTOS` --定位库wetos
CREATE TABLE IF NOT EXISTS `student` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(20) NOT NULL DEFAULT '李四' COMMENT '姓名',
`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
`email` VARCHAR(30) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8c
注意事项
-
在创建和删除库,表时,最好加上IF NOT EXISTS 条件防止出错
-
库名,表名,表头用``括起来,库名表名无所谓大小写因为通过我的代码发现了你写大写数据库那边显示的也是小写的westos
-
索引,注释用‘’括起来
-
表内创建表头时,每行代码后面跟,最后一行不需要,
-
PRIMARY KEY内的表头属性不能是NULL,是NULL就报错
表内字段格式及用法
-
varchar 可变字符串 范围是0-65535
-
text 文本串 2^16-1 大文本一般用于文章
-
datatime YYYY-MM-DD HH:mm:ss 最常用的时间格式
剩下的和java基础的字符串格式时间日期格式相同
-
字段属性
- Unsigned 无符号的整数 ,保证该列数字必须非负
- zerofill 补零,有空位就补零
- 自增 在上一个的基础上+1,也可以通过设置来加好几个,一般用在唯一主键上
- 非空 not null 不能是空的 空 NULL 可以是空的
- 默认 可以设置默认值 ,如果没有特殊说明都会在该列填入默认值,比方说给性别默认设置男,这样除了特殊说明的人,所有人的性别都是男的
-
建表头的格式
`字段名` 列类型 属性 索引 注释 eg `name` VARCHAR(20) NOT NULL DEFAULT '李四' COMMENT '姓名', /* 字段名为 name 列类型为 20位的varchar 属性 非空 索引 李四 注释 姓名 */
-
-
最下面一行的引擎 可以是INNODB或者MYISAM
-
从用途上区别
MYISAM 节约空间,速度较快,但是不适合大量数据的表
INNODB 安全性高,可以进行事务处理,多表多用户操作
2.从存储文件本身来看
数据库及内的表从本质上来看还是将数据以文件的格式存储在某地,打开DATA目录内的westos文件可以看到INNODB只有一个*.frm文件及上级目录下的ibdata1文件
MYISAM则有
*.frm
文件(表结构的定义文件),*.MYD
文件(数据文件),*.MYI
(索 引文件) -
内的westos文件可以看到INNODB只有一个*.frm文件及上级目录下的ibdata1文件
MYISAM则有*.frm
文件(表结构的定义文件),*.MYD
文件(数据文件),*.MYI
(索 引文件)
- 字符集编码为utf8,如果不设置的话默认为Latin1,中文会乱码