数据库之操作数据库
操作数据库
一. 数据库的连接(命令行)
1.连接
mysql -uroot -p+password --直接输入密码可以,或者回车输入都可以
2.修改密码
update mysql.user set anthentication_string=password('123456') where user='root' and Host='localhost'; --修改用户密码
flush privileges; --刷新权限
-------------------------------------
show databases;--查看现在所有的数据库
use mysql;--使用数据库中的表
Database changed;--表示表已经切换
show tables;--显示该数据库下面的所有的表
31 rows in set (0.05 sec);--数据
describe user;--查看表中数据
45 rows in set (0.00 sec)--数据
create ....--创建数据库或者建表
/*
多行注释
*/
3.数据库的四种语言
DDL: 数据库定义语言
DQL: 数据查询语言
DML: 数据操纵语言
DCL: 数据控制语言
二. 操作数据库
sql语言关键字不区分大小写
1.创建数据库
CREATE DATABASE [if not EXISTS] saxon;--[]内部的可写可不写,如果在创建的数据库已经有了,那么就报错。
CREATE DATABASE saxon CHARACTER SET utf8 COLLATE utf8_general_ci
/*CHARACTER SET 字符集 utf-8
COLLATE utf8_general_ci:排序规则
*/
2.删除数据库
DROP DATABASE [IF EXISTS] saxon;
3.使用数据库
USE saxon;
4.查看数据库
show DATABASES;
三. 数据库表创建时的类型属性说明
1.整数数值类
-
tinyint :tinyint数据类型存储从0 到255 之间的所有正整数。每个tinyint类型的数据占用1 个字节的存储空间
-
smallint :SMALLINT 数据类型存储从-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之间的所有正负整数。每个**SMALLINT 类型的数据占用2 个字节的存储空间,**其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。
-
int :数据类型存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的所有正负整数。每个INT 类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小。
-
bigint:BIGINT 数据类型存储从-2^63 (-9 ,223, 372, 036, 854, 775, 807) 到2^63-1( 9, 223, 372, 036 ,854 ,775, 807) 之间的所有正负整数。每个BIGINT 类型的数据占用8个字节的存储空间。
2.浮点数数值类型
- real: 每个REAL类型的数据占用4 个字节的存储空间。
- float: 每个FLOAT 类型的数据占用4 个字节的存储空间.
- double: 每个double 类型的数据占用8 个字节的存储空间.
- decimal:字符串类型的小数
3.字符串
- char:定长字符串。0-255;
- varchar:可变字符串。0-65535;
- tinytext:微型文本; 2^8-1;
- text:保存文本;
- longtext:极大文本数据;
4.日期类
- date: 格式:YYYY-MM-DD;
- time:格式:HH:mm:ss;
- year:格式:YYYY
- datetime:格式:YYYY-MM-DD HH:mm:ss;最常用的数据库日期格式;
- timestamp:时间戳,与Java一样,自1970年1月1日0时0分0秒到现在的时间的毫秒数
四、数据库的字段属性(重点)
1.unsigned(无符号)
- 无符号整数
- 不可以为负数
2.zerofill(填充零)
- 位数不足,用0来填充。navicat中有一个填充0的操作就是这个意思!
3.自增(自动递增)
- 通常理解为自增,在上一条记录上默认加上一
- 一般用于设置主键,设置递增长度可以确保一次增加值的多少
4.非空(不是null)
- 设置为该属性不设置值的话,就会报错;不填写默认就是null;
5.default(默认)
- 如果输入该列的值,就会有默认值填入
每一个表都必须有下面的几个字段
- ID 就是主键,用来唯一辨识它的东西,不可以重复
version
乐观锁- is_delete 伪删除,只是为了在查询的时候设置的一个标志位
- gmt_create 创建时间
- gmt_update 修改时间
五、创建数据库表
1.创建数据库表
--格式
/*
CREATE TABLE [IF not EXISTS] `表名`(
`字段名` 类型 [字段属性]+[字段属性]+[字段属性]... ,
`字段名` 类型 [字段属性]+[字段属性]+[字段属性]... ,
`字段名` 类型 [字段属性]+[字段属性]+[字段属性]... ,
PRIMARY KEY(`字段名`)
)
1.前两个必须加上,后面的属性可以*选择,但是记住所有的符号括号均是英语的
2.设置了默认not null,那么在写默认值的时候就不要默认设置为null;
3.字段名用的是tab键上的飘,comment(解释):用的是单引号
*/
CREATE TABLE IF not EXISTS `student`(
`id` INT(4) not null DEFAULT '0' comment 'student number',
`NAME` VARCHAR(10) not null DEFAULT 'NULL',
`sex` VARCHAR(10) not null DEFAULT 'Woman',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
2.查看其他的数据库或者数据库表的创建语句
show CREATE DATABASE `saxon`
show CREATE TABLE `学校开始安排表`
-- 结果
-- 学校开始安排表:
CREATE TABLE `学校开始安排表` (
`ID` int(2) NOT NULL auto_increment ,
`学院` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
`考试科目` varchar(255) NOT NULL,
`班级` varchar(255) NOT NULL,
`考试人数` varchar(255) NOT NULL,
`学号字段` varchar(255) NOT NULL,
`教室` varchar(255) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*
ENGINE=InnoDB:数据库引擎
CHARSET=utf8:字符集
auto_increment:自增列
*/
3.两种数据库引擎(innodb和myisam)
InnoDB | MyISAM | |
---|---|---|
事务的支持 | 支持 | 不支持 |
外键 | 支持 | 不支持 |
适用范围 | InnoDB适合频繁修改以及涉及到安全性较高的应用 | MyISAM适合查询以及插入为主的应用 |
是否支持行锁 | 支持 | 不支持 |
删除整个表 | 一行一行删除 | 重新建立 |
查询数据 | 不会保存行数,查找需要先知道有几行 | 会保存行数,下次直接读出保存的行数 |
1.mysql下的user的表(引擎为MyISAM)
2.mysql下的time_zone_transition_typer的表(引擎为InnoDB)
具体的细节:https://blog.csdn.net/qq_35642036/article/details/82820178
4.数据库的字符编码
- 不修改的话默认的就是lanti-,为了保证一致性,我们要在创建时就用上utf-8的字符编码
六、修改和删除表结构
1.修改表名
ALTER TABLE `student` RENAME `student1`
2.增加表的字段
ALTER TABLE result ADD `sno` INT(4) not null COMMENT'编号';
3.修改表的字段
ALTER TABLE `student1` MODIFY `hobby` INT(10);--修改表的字段数值类型,不改变字段的名字
ALTER TABLE `student1` CHANGE `hobby` lover INT(1);--修改表名的同时可以改变数值类型
4.删除表及字段
ALTER TABLE `student1` DROP lover--删除字段
DROP TABLE IF EXISTS `student1` --删除表格
上一篇: spring boot + mybaits 操作数据库
下一篇: mac显示和隐藏文件