mysql入门

mysql卸载:https://www.cnblogs.com/jellydong/p/8044762.html
mysql安装:https://www.cnblogs.com/Neeo/p/8624286.html

登录

mysql -u root -p

然后输入密码,如果没有设置密码,直接回车。

创建用户并授权
在本地创建一个名为sampadm的用户,密码为secret

create user 'sampadm'@'localhost' identified by 'secret';
grant all on sampdb.* to 'sampadm'@'localhost';

断开连接

quit

查看系统当前日期

select now();

创建数据库

create database sampdb;

设置默认数据库

set sampdb;

查看数据库

select database();

切换数据库

use <数据库名>

创建数据库表
方式1:需要先设置默认数据库

create table president
(
	last_name varchar(15) not null,
	first_name varchar(15) not null,
	suffix varchar(5) null,
	city varchar(20) not null,
	state varchar(2) not null,
	birth date not null,
	death date null
);
create table member
(
	member_id int unsigned not null auto_increment,
	primary key (member_id),
	last_name varchar(20) not null,
	first_name varchar(20) not null,
	suffix varchar(5) null,
	expiration date null,
	email varchar(100) null,
	street varchar(50) null,
	city varchar(50) null,
	state varchar(2) null,
	zip varchar(10) null,
	phone varchar(20) null,
	interests varchar(255) null
);

member_id为自增字段,主键。
auto_increment机制:插入新记录时,如果没有给出member_id的值,mysql将自动生成一个编号

方式2:先将sql语句写入文件create_president.sql

mysql sampdb < create_president.sql

查看数据库表

desc president;

查看某些列

desc president '%name';

这里写图片描述

列出当前默认数据库中的所有表

show tables;

这里写图片描述

列出指定数据库中的所有表

show tables from sampdb;

列出服务器上的所有数据库

show databases;

这里写图片描述

创建表的时候指定存储引擎

create table student
(
	name varchar(20) not null,
	sex enum('F', 'M') not null,
	student_id int unsigned not null auto_increment,
	primary key(student_id)
)engine = InnoDB;

默认引擎为MyISAM,“ISAM”是“indexed sequential access method"(索引化顺序方法方法)的缩写,MyISAM增加了一些MySQL独有的东西。InnoDB引擎通过引入“外键”概念而具备了保持“引用一致性”的特点。这意味着可通过MySQL让数据表之间的关系满足一定的约束条件。
为了满足条件,需设置几个外键关系。“外”的含义是“在另一个数据表离”,“外键”的含义是给定的键值必须与另一个数据表里
的某个键值相匹配。
如:

create table score
(
	student_id int unsigned not null,
	event_id int unsigned not null,
	score int not null,
	primary key(event_id, student_id),
	index(student_id),
	foreign key(event_id) references grade_event(event_id),
	foreign key(student_id) references student(student_id)
)engine = InnoDB;

为什么student_id上有一个索引?因为对于出现在foreign key定义里的每一个数据列,它要么本身是有一个索引,要么是某个多数据列索引里第一个被列出的数据列。对于event_id,是定义primary key时第一个被列出的,满足;而student_id 没被第一个列出,需另行创建索引。

更改存储引擎

alter table student engine = InnoDb;

创建临时表
在于服务器的连接断开时自动消失。

create temporary table tbTmp( name varchar(5) null);
create temporary table tbTmp1 select * from student where sex = 'f';

创建索引
这里写图片描述
这里写图片描述

增记录

insert into student values('Avery', 'F', NULL), ('Nathan', 'M', NULL);

如果文件里的数据以纯数据形式存放,可以用load data加载

删记录

delete from president
where last_name='Roosevelt' and first_name='Theodore';

改记录

update member
set expiration='2009-7-20'
where last_name='York' and first_name='Jerome';

外键的完整性

create table parent
(
	par_id int not null,
	primary key(par_id)
)engine = Innodb;

create table child
(
	par_id int not null,
	child_id int not null,
	primary key(par_id, child_id),
	foreign key(par_id) references parent(par_id)
		on delete cascade
		on update cascade
);

当外键定义时使用了on delete cascade字节,指定parent数据表里的某个数据被删除时,MySQL将自动从child数据表里把匹配par_id值的数据行也删掉。

参考
《MySQL技术内幕》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值