《MySQL从零开始学》笔记

这篇博客详细介绍了MySQL数据库的基本操作,包括数据库引擎、数据表操作、数据类型、增删改查、内置函数、索引、视图、存储程序、触发器、用户管理和性能优化等关键概念。还提到了数据库复制和集群的概念,是学习MySQL的全面参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


windwos启动mysql服务: cmd中输入 net start mysql
登录 mysql -u root -p
远程登录mysql -h localhost -u root -p
退出mysql : exitquit


数据库操作

show databases;
create database student;
use student;

drop database student;

数据库引擎

查看引擎: show engines;

InnoDB

  • 默认的引擎
  • 支持事务
  • 每张表都按照主键存放,没有就会自动添加6字节的ROWID主键

MyISAM

  • 不支持事务
create table student( sid int )engine=InnoDB;

数据表操作

创建表

主键 , 自增 , 唯一

 create table student(
 	sid int(11)   primary key    auto_increment     unique,
	 name varchar(11) NOT NULL,
 	height float
 );

多字段联合主键 , 默认值:

create table sc(
	sid int(11),
	cid int(11),
	grade float    default   0,
	primary key(sid,cid),
	foreign key (sid) references student(sid),
	constraint fk_name foreign key (cid) references course(cid)
);
# 外键的括号不能丢

查看表结构

describe student;
或者
desc student;

查看表详细结构 , 查看创建表的语句

show create table student \G;
不加 \G 就会显示表格,显示特别乱

修改数据表

改表名

alter table student rename to newname;
或者
alter table student rename newname;

修改字段(列)名和数据类型

alter table student change  location  loc varchar(200) ;

修改字段(列)数据类型

sid改为varchar(10)类型
alter table student modify  sid  varchar(10);

添加字段(列)

alter table student add age int(3) not null;

添加到某某的后面
alter table student add age int(3) after name;

添加到开头位置
alter table student add age int(3)  First;

删除字段(列)

alter table student drop column;

字段(列)调整顺序

alter table student  modify name varchar(50)  First;
alter table student  modify name varchar(50)  after sid;

修改引擎

alter table student engine=InnoDB;
alter table student engine=MyISAM;

删除表的外键约束

alter table student  drop foreign key fk_name;

删除表

drop table student;
或者
drop table if exists student;

带有外键的需要先删除外键,再删除数据表


数据类型

整数

int(11) 只表示显示宽度,不表示数据范围, 最少显示11位宽度,不够的话用空格填充
显示宽度与数据范围无关

小数

  • 定点数 decimal 以字符串形式存储,用于精度较高(货币,科学数据)
  • 浮点数:
    • 单精度 float(10,2) 表示总宽度10位,其中小数点后面只有2位
    • 双精度 double(10,2)

时间日期

  • 日期date
    3字节
CREATE TABLE `test` (  `temp` date DEFAULT NULL );

insert into test values('2019-04-25');
  • 时间time
    3字节
create table `test` (  `temp` time DEFAULT NULL );

insert into test values('23:10');
  • 时间日期datatime
    同时需要时间和日期 , 占8字节, 范围 1000-01-01 00:00:00~9999-12-3 23:59:59
create table test(temp datetime );

insert into test values('2019-05-24 23:15');
  • 时间戳 timestamp
    占4字节,范围比datatime小, 范围1970-01-01 00:00:01~2038-01-19 03:14:07
    存储根据世界标准时间(UTC)保存,插入和查询都要根据当前时区转换
create table test(temp timestamp );

insert into test values('2019-05-24 23:15');

字符串

  • char(10) 固定10位
  • varchar(M) 小于等于M位长度, M小于255
  • tinttext 字符串小于2^8
  • text 字符串小于2^16
  • mediumtext 字符串小于2^24
  • longtext 字符串小于2^32

二进制

  • bit(M) M位, M为1~64
  • binary(M) 固定M字节
  • varbinary(M) 小于等于M字节
  • tinyblob 小于2^8
  • blob 小于2^16
  • mediumblob 小于2^24
  • longblob 小于2^32, 小于4G

增删改查

插入

insert into student values('15001','wang',20);
insert into student(sid) value('15001');
insert into student(sid,name) values('15001','wang');

插入多个
insert into student(sid,name) values('15001','wang'),('15002','li'),('15003','zhang');

插入报警告时, 查看警告: 
show warnings;

删除

delete from student where age=20 and sex='男';

update student set name='wang',age=22  where sid='15001';

查询

select * from student;
select name from student where sid='15001';
select distinct age, 2019-age as birthday  from student where name='wang';

order by sid desc 
group by sid having age>20
limit 100
count(*) as 计数
sum<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值