JavaWeb开发学习笔记——MySQL
跟着黑马程序员学习MySQLDay06-04. MySQL-DDL-数据库操作_哔哩哔哩_bilibili
注意,以下笔记中[ ]中都是可省略内容,如果不省略,那么直接写即可,不带[ ]
MySQL-DDL
数据库操作
连接MySQL服务器:mysql -uroot -p密码
如果为了安全需要加密密码,可以只输入-p,然后回车,在下一行输入密码即可。
退出MySQL只需驶入exit即可。
不要忘记写 ; 或者 \g 否则会:
查询所有数据库:show databases;
查询当前数据库:select database();
创建数据库:create database 数据库名称;
检查重复并创建数据库:create database if not exists 数据库名称;
切换/使用数据库:use 数据库名称;
删除数据库:drop database 数据库名;
检查并删除数据库:dorp database if exsist数据库名称;
图形化工具
要使用可视化图形工具使操作可视化,可使用最伟大的IDE(自封):IDEA,操作就变得优雅起来了。
要在关闭console之后再找到之前的mysql语句,执行以下操作即可。
表结构操作
创建
create table 表名(
字段1 字段类型[约束][comment 字段1注释],
字段n 字段类型[约束][comment 字段n注释]
)[comment 表注释];
字段位置为字段名
注意:MySQL和Java有一定区别,字符串类型数据用的是varchar、char而不是String
打开表,即可对表内容进行添加数据操作。
约束
约束作用于表中字段上的规则,用于限制存储在表中的数据。
保证数据中数据的正确性,有效性和完整性。
约束 | 描述 | 关键字 |
---|---|---|
非空约束 | 限制该字段值不能为null | not null |
唯一约束 | 保证字段的所欲数据都是唯一,不重复的 | unique |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key |
默认约束 | 保存数据时,如果未指定该字段值,则采用默认值 | default |
外键约束 | 让两张表的数据建立连接,保证数据的一致性和完整性 | foreign key |
对于主键约束,手动输入唯一标识较为繁琐,可以使用关键字auto_increment自增。
使用方法例子如下:
数据类型
分类 | 类型 | 大小(byte) | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 | 备注 |
数值类型 | tinyint | 1 | (-128,127) | (0,255) | 小整数值 | |
smallint | 2 | (-32768,32767) | (0,65535) | 大整数值 | ||
mediumint | 3 | (-8388608,8388607) | (0,16777215) | 大整数值 | ||
int | 4 | (-2147483648,2147483647) | (0,4294967295) | 大整数值 | ||
bigint | 8 | (-2^63,2^63-1) | (0,2^64-1) | 极大整数值 | ||
float | 4 | (-3.402823466 E+38,3.402823466351 E+38) | 0 和 (1.175494351 E-38,3.402823466 E+38) | 单精度浮点数值 | float(5,2):5表示整个数字长度,2 表示小数位个数 | |
double | 8 | (-1.7976931348623157 E+308,1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308) | 双精度浮点数值 | double(5,2):5表示整个数字长度,2 表示小数位个数 | |
decimal | 小数值(精度更高) | decimal(5,2):5表示整个数字长度,2 表示小数位个数 |
分类 | 类型 | 大小 | 描述 | |||||
字符串类型 | char | 0-255 bytes | 定长字符串 | char(10): 最多只能存10个字符,不足10个字符,占用10个字符空间 | AB | 性能高 | 浪费空间 | |
varchar | 0-65535 bytes | 变长字符串 | varchar(10): 最多只能存10个字符,不足10个字符, 按照实际长度存储 | ABC | 性能低 | 节省空间 | ||
tinyblob | 0-255 bytes | 不超过255个字符的二进制数据 | ||||||
tinytext | 0-255 bytes | 短文本字符串 | ||||||
blob | 0-65 535 bytes | 二进制形式的长文本数据 | ||||||
text | 0-65 535 bytes | 长文本数据 | phone char(11) | |||||
mediumblob | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 | username varchar(20) | |||||
mediumtext | 0-16 777 215 bytes | 中等长度文本数据 | ||||||
longblob | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 | ||||||
longtext | 0-4 294 967 295 bytes | 极大文本数据 |
分类 | 类型 | 大小(byte) | 范围 | 格式 | 描述 |
日期类型 | date | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
time | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或持续时间 | |
year | 1 | 1901 至 2155 | YYYY | 年份值 | |
datetime | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 | |
timestamp | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
查询
查询当前数据库所有表:show tables;
查询表结构: desc 表名;
查询建表语句: show create table 表名;
按上图操作即可得到下图
-- auto-generated definition
create table tb_emp
(
id int unsigned auto_increment comment '主键ID'
primary key,
username varchar(20) not null comment '用户名',
password varchar(32) default '123456' null comment '密码',
name varchar(10) not null comment '姓名',
gender tinyint unsigned not null comment '性别:1:男 2:女',
image varchar(300) null comment '图像的url',
job tinyint unsigned null comment '职位 1 班主任,2 讲师, 3 学工主管, 4教研主管',
entrydate date null comment '入职日期',
create_time datetime not null comment '创建时间',
update_time datetime not null comment '修改时间',
constraint name
unique (username)
)
comment '员工表';
修改
添加字段:alter table 表名 add 字段名 类型(长度) [commment 注释] [约束];
修改字段类型: alter table 表名 modify 字段名 新数据类型(长度);
修改字段名和字段类型:alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释][约束]
删除字段:alter table 表名 drop column 字段名;
修改表名:rename table 表名 to 新表名;
但是主要掌握图形化界面的操作。
删除
删除表:drop table [if exists] 表名;
MySQL-DML
INSERT
- 指定字段添加数据:insert into 表名 (字段名1,字段名2) values (值1,值2);
在sql语句中字符串以及日期时间类型都需要引号引起来,单双引号都可以
可以用now()函数来获取当前系统时间:
insert into tb_emp(username,name,gender,create_time,update_time) values ('nihao','你好',1,now(),now());
- 全部字段添加数据:insert into 表名 values (值1,值2, ...);
-- 为所有字段插入值方式
insert into tb_emp(id, username, password, name, gender, image, job, entrydate, create_time, update_time)
values (null,'I am fine','1223','我很好',2,'1.jpg',1,'2010-01-01',now(),now());
-- 另一种方式
insert into values (null,'I am fine','1223','我很好',2,'1.jpg',1,'2010-01-01',now(),now());
- 批量添加数据(指定字段):insert into 表名 (字段名1,字段名2) values (值1,值1), (值1,值2);
- 批量添加数据(全部字段):insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);
跟上面类似,就举一个例子:
insert into tb_emp(username,name,gender,create_time,update_time) values
('xixi','嘻嘻',1,now(),now()),('haha','哈哈',1,now(),now());
UPDATE
修改数据:update 表名 set 字段名1=值1,字段名2=值2, ...[where 条件];
-- 修改指定内容,有where条件
update tb_emp set name = '张三', update_time = now() where id = 1;
-- 修改所有
update tb_emp set entrydate = '2010-01-01',update_time = now();
DELETE
删除数据:delete from 表名 [where 条件];
-- 删除指定数据
delete from tb_emp where id = 1;
-- 删除所有数据
delete from tb-emp;
DELETE语句不可以删除某一个字段的值,但是可以使用UPDATE将该字段的值设为NULL以达到效果。
原文地址:https://blog.csdn.net/Sthamansa/article/details/145204757
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!