MySQL(1/3)

基本命令行操作

命令行连接

mysql -uroot -p

回车,然后在下一行输入密码,或者直接在p后写密码

修改密码

updata mysql.user set authentication_string=password('原密码') where user='root' and Host = 'localhost';

刷新权限

flush privileges;

查看所有数据库

show databases;

切换数据库

use 数据库名

成功会提示Database changed

查看数据库中所有表

show tables;

显示数据库中指定的表的信息

decribe 表名;

创建一个数据库

create darabase 数据库名;

退出连接

exit;

注意所有语句要用分号结尾,不分大小写

注释

#注释内容 --注释内容 /*注释内容*/

数据库语言

DDL 定义

DML 操作

DQL 查询

DCL 控制

CRUD增删改查

操作数据库

操作数据库>操作数据库中的表>操作数据库中表的数据

1.创建数据库

create database (if not exists) 数据库名

2.删除数据库

drop database (if exists) 数据库名

3.使用数据库

use `数据库名`

如果表明或者字段名是一个特殊字符,就需要带``

4.查看数据库

show database

数据库的列类型

数值

tinyint 十分小的数据 1个字节

smallint 较小的数据 2个字节

mediumint 中等大小的数据 3个字节

int 标准的整数 4个字节

bigint 较大的数据 8个字节

float 浮点数 4个字节

double 浮点数 8个字节

decimal 字符串形式的浮点数 金融计算的时候一般使用

字符串

char 字符串固定大小 0-255

varchar 可变字符串 0-65535 即String

tinytext 微型文本 0-255

text 文本串 0-65535 保存大文本

时间日期

data YYYY-MM-DD,日期格式

time HH:mm:ss,时间格式

datatime YYYY-MM-DD HH:mm:ss 最常用的时间格式

timestamp 时间戳,1970.1.1到现在的毫秒数

year 年份

null

未知数

不要使用null来计算

数据库的字段属性

Unsigned

无符号整数

声明该列不能声明为负数

zerofill

0填充的

不足的位数使用0来填充如5,005

非空 NULL not null

设置后字段不能为(null)

默认(defult)

默认值

自增

用来设计唯一的主键,主键类似于index,必须是整数类型

自动在上一条记录的基础上+1(默认)

创建数据库表

例子

sql 复制代码
CREATE TABLE IF NOT EXISTS `student` (
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pswd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
	`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
	`address` VARCHAR(100) DEFAULT NULL COMMENT '地址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

常用命令

sql 复制代码
SHOW CREATE DATABASE school;  -- 查看创建数据库的语句
SHOW CREATE TABLE student;    -- 查看student数据表的定义语句
DESC student -- 显示表的结构

MylSAM和Innodb的区别

在物理空间存在的位置

所有的数据库文件都在data目录下,本质还是文件存储

·innodb在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件

·MYISAM对应文件

*.frm 表结构的定义文件

*.MYD 数据文件(data)

*.MYI 索引文件(index)

修改和删除数据库表字段

sql 复制代码
-- 修改表名 ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE teacher rename as teacher1
-- 增加表的字段 alter table 表名 add 字段名 列属性
alter table teacher1 add age int(3)

-- 修改表的字段(重命名,修改约束)
-- alter table 表名 modify 字段名 列属性[]
alter table teacher1 modify age varchar(11)  -- 修改约束
-- alter table 表名 change 新名 列属性[]
alter table teacher1 change age age1 int(1) -- 字段重命名

-- 删除表的字段
alter table teacher1 drop age1

-- 删除表
drop table if exists teacher1

change和modify的区别

数据库级别的外键

第一种添加外键的方式

sql 复制代码
create table if not exists `grade` (
	`gradeid` int(10) not null auto_increment comment '年级id',
	`gradename` varchar(50) not null comment '年级名称',
	primary key(`gradeid`)
)engine=innodb default charset=utf8

-- 定义外键key
	-- 给这个外键添加约束(执行引用) references 引用
CREATE TABLE IF NOT EXISTS `student` (
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pswd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
	`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
	`address` VARCHAR(100) DEFAULT NULL COMMENT '地址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
	`gradeid` int(10) not null comment '年级id',
	PRIMARY KEY(`id`),
	key `FK_gradeid` (`gradeid`),
	constraint `FK_gradeid` foreign key (`gradeid`) references `grade`(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

第二种添加外键的方式,推荐

sql 复制代码
create table if not exists `grade` (
	`gradeid` int(10) not null auto_increment comment '年级id',
	`gradename` varchar(50) not null comment '年级名称',
	primary key(`gradeid`)
)engine=innodb default charset=utf8

-- 定义外键key
	-- 给这个外键添加约束(执行引用) references 引用
CREATE TABLE IF NOT EXISTS `student` (
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pswd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
	`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
	`address` VARCHAR(100) DEFAULT NULL COMMENT '地址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
	`gradeid` int(10) not null comment '年级id',
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

alter table `student` add constraint `FK_gradeid` foreign key (`gradeid`) references `grade`(`gradeid`);

公式 alter table 表 add constraint 约束名 foreign key (`作为外键的列`) references 哪个表(哪个字段)

insert语句

语法:insert into `表名` (字段1,字段2....) values (值1)(值2)(.....)

主键自增可以省略

不写字段就会一一匹配

update语句

update 表名 set 列名1=新值,列名2=新值.... where 约束条件

如果没有约束条件默认给全部列替换新值

删除

delete

语法:delete from 表名 (where条件)

无条件全部删除,有条件删除满足条件数据

truncate命令

作用:完全清空一个数据库表,表的结构和索引约束不会变

语法:truncate 表名

二者异同

相同点:都能删除数据,都不会删除表结构

不同:

1.truncate 重置设置 自增列计数器会归零,delete不会

2.truncate 不会影响事务

相关推荐
vvvae12348 小时前
分布式数据库
数据库
雪域迷影8 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹9 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人9 小时前
SQL基础教程
数据库·sql·oracle
月空MoonSky9 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa9 小时前
【MySQL 06】表的增删查改
数据库·mysql
向上的车轮10 小时前
Django学习笔记二:数据库操作详解
数据库·django
编程老船长10 小时前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
全栈师11 小时前
SQL Server中关于个性化需求批量删除表的做法
数据库·oracle
Data 31711 小时前
Hive数仓操作(十七)
大数据·数据库·数据仓库·hive·hadoop