自学内容网 自学内容网

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

打开表,即可对表内容进行添加数据操作。

约束

约束作用于表中字段上的规则,用于限制存储在表中的数据。

保证数据中数据的正确性,有效性和完整性。

约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所欲数据都是唯一,不重复的unique
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
默认约束保存数据时,如果未指定该字段值,则采用默认值default
外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key

对于主键约束,手动输入唯一标识较为繁琐,可以使用关键字auto_increment自增。

使用方法例子如下:

数据类型

分类类型大小(byte)有符号(SIGNED)范围无符号(UNSIGNED)范围描述备注
数值类型tinyint1(-128127)(0255)小整数值 
smallint2(-3276832767)(065535)大整数值 
mediumint3(-83886088388607)(016777215)大整数值 
int4(-21474836482147483647)(04294967295)大整数值 
bigint8(-2^632^63-1)(02^64-1)极大整数值 
float4(-3.402823466 E+383.402823466351 E+38)0 (1.175494351 E-383.402823466 E+38)单精度浮点数值float(5,2):5表示整个数字长度,2 表示小数位个数
double8(-1.7976931348623157 E+3081.7976931348623157 E+308)0 (2.2250738585072014 E-3081.7976931348623157 E+308)双精度浮点数值double(5,2):5表示整个数字长度,2 表示小数位个数
decimal   小数值(精度更高)decimal(5,2):5表示整个数字长度,2 表示小数位个数
分类类型大小描述
字符串类型char0-255 bytes定长字符串char(10): 最多只能存10个字符,不足10个字符,占用10个字符空间AB性能高浪费空间
varchar0-65535 bytes变长字符串varchar(10): 最多只能存10个字符,不足10个字符, 按照实际长度存储ABC性能低节省空间
tinyblob0-255 bytes不超过255个字符的二进制数据
tinytext0-255 bytes短文本字符串
blob0-65 535 bytes二进制形式的长文本数据
text0-65 535 bytes长文本数据phone char(11)
mediumblob0-16 777 215 bytes二进制形式的中等长度文本数据username varchar(20)
mediumtext0-16 777 215 bytes中等长度文本数据
longblob0-4 294 967 295 bytes二进制形式的极大文本数据
longtext0-4 294 967 295 bytes极大文本数据
分类类型大小(byte)范围格式描述
日期类型date31000-01-01 9999-12-31YYYY-MM-DD日期值
time3-838:59:59 838:59:59HH:MM:SS时间值或持续时间
year11901 2155YYYY年份值
datetime81000-01-01 00:00:00 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
timestamp41970-01-01 00:00:01 2038-01-19 03:14:07YYYY-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)!