文章目录
windwos启动mysql服务: cmd中输入 net start mysql
登录 mysql -u root -p
远程登录mysql -h localhost -u root -p
退出mysql : exit
或 quit
数据库操作
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<