MySQL学习笔记

2016-12-09  本文已影响0人  BeYanJin

参考资料

慕课网——与MySQL的零距离接触

前言

本人菜鸟,入IT只为当鼓励师。本编文章主要对 MySQL的一些基础知识进行总结。

一、常用服务指令

1. 启动和停止MySQL服务

2. MySQL的登录与退出

3. 创建新用户

脚本:CREATE USER 'username'@'host' [IDENTIFIED BY 'PASSWORD']; 其中密码是可选项。
例子:CREATE USER 'john'@'192.168.189.71' IDENTIFIED BY "123456";这样就创建了一个用户(用户名:john,密码:123456,该用户只能在IP地址为192.168.189.71的内网机子上访问操作数据库。若host为localhost,则该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将localhost改为%,表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录)。

4. 修改MySQL提示符

用prompt指令修改提示符
可选提示符参数

5. 用SELECT显示当前信息


二、数据库

1. 数据库的操作

1-1. 创建数据库

CREATE {DATABASE| SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name(编码方式)

1-2. 打开数据库

USE db_name(数据库名称);

1-3. 修改数据库

ALTER {DATABASE | SCHEMA} db_name [DEFAULT] CHARACTER SET [=] charset_name;

1-4. 删除数据库

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;

2. 查看数据库的相关信息

2-1. 查看数据库列表

SHOW {DATABASES | SCHEMAS};

2-2. 查看某个库使用的编码方式

SHOW CREATE DATABASE db_name;
SHOW CREATE DATABASE test;

2-3. 查看当前打开的数据库

SELECT DATABASE();

2-4. 查看数据库引擎

SHOW ENGINES;
SHOW ENGINES;

3. 查看警告信息

SHOW WARNINGS;
SHOW WARNINGS;

三、数据表

1. 数据类型

CREATE TABLE [IF NOT EXISTS] table_name(
column_name type_name,
...
);

2. 数据表的操作

2-1. 创建数据表

CREATE TABLE [IF NOT EXISTS] table_name(
column_name type_name,
...
);

2-2. 修改数据表

2-2-1.添加列(字段)

2-3. 插入行(记录)

 INSERT [INTO] tbl_name[(col_name, ...)] VALUES(val, ...);

3. 查看数据表的相关信息

3-1. 查看数据表列表

SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr];

3-2. 查看数据表的索引

SHOW INDEXES FROM tbl_name [\G]
主键约束自带的索引 外键约束的索引

3-3. 查看列(字段)的结构和属性

SHOW COLUMNS FROM db_name;

3-4. 查看列(字段)的代码与引擎

SHOW CREATE TABLE tbl_name;
SHOW CREATE TABLE t_group;

3-5. 查找行(记录)

SELECT expr,... FROM tbl_name;
SELECT * FROM tb;

4. 列的其他属性

表的列名在同一个表中具有惟一性,同一列的数据属于同一种数据类型。除了用列名和数据类型来指定列的属性外,还可以定义其它属性:

4-1. 自动编号

CREATE TABLE [IF NOT EXISTS] table_name(
column_name type_name AUTO_INCREMENT PRIMARY KEY,
...
);

4-2. 具体的五种约束

4-2-1. 空值和非空约束

CREATE TABLE [IF NOT EXISTS] table_name(
column_name type_name NULL(默认),
column_name type_name NOT NULL,
...
);

4-2-2. 主键约束

CREATE TABLE [IF NOT EXISTS] table_name(
column_name type_name PRIMARY KEY,
...
);

4-2-3. 唯一约束

CREATE TABLE [IF NOT EXISTS] table_name(
column_name type_name UNIQUE KEY,
...
);

4-2-4. 默认约束

CREATE TABLE [IF NOT EXISTS] table_name(
column_name type_name DEFAULT value,
...
);

4-2-5. 外键约束

CREATE TABLE [IF NOT EXISTS] table_name(
...,
FOREIGN KEY (column_name) REFERENCES tbl_name(column_name) on [DELETE / UPDATE] [CASCADE / SET NULL / ON ACTION],
...
);
目的:
要求:
参照操作:
-- 父表
create table t_group (   
id int not null,  --参照列
name varchar(30),   
primary key (id)   
);  
insert into t_group values (1, 'Group1');   
insert into t_group values (2, 'Group2');  

****************************** 级联(cascade)方式 ******************************
--子表
create table t_user (   
id int not null,   
name varchar(30),   
groupid int,  --外键列
primary key (id),   
foreign key (groupid) references t_group(id) on delete cascade on update cascade  
);  
--参照完整性测试
insert into t_user values (1, 'qianxin', 1); --可以插入
insert into t_user values (2, 'yiyu', 2);    --可以插入
insert into t_user values (3, 'dai', 3);     --错误,用户组3不存在,与参照完整性约束不符
--约束方式测试
insert into t_user values (1, 'qianxin', 1);   
insert into t_user values (2, 'yiyu', 2);   
insert into t_user values (3, 'dai', 2);   
delete from t_group where id=2;      --导致t_user中的2、3记录级联删除   
update t_group set id=2 where id=1;  --导致t_user中的1记录的groupid级联修改为2  

****************************** 置空(set null)方式 ******************************
create table t_user (   
id int not null,   
name varchar(30),   
groupid int,   
primary key (id),   
foreign key (groupid) references t_group(id) on delete set null on update set null  
);   
--参照完整性测试   
insert into t_user values (1, 'qianxin', 1); --可以插入   
insert into t_user values (2, 'yiyu', 2);    --可以插入   
insert into t_user values (3, 'dai', 3);     --错误,用户组3不存在,与参照完整性约束不符   
--约束方式测试   
insert into t_user values (1, 'qianxin', 1);   
insert into t_user values (2, 'yiyu', 2);   
insert into t_user values (3, 'dai', 2);   
delete from t_group where id=2;      --导致t_user中的2、3记录的groupid被设置为NULL   
update t_group set id=2 where id=1;  --导致t_user中的1记录的groupid被设置为NULL  


*********************** 禁止(no action / restrict)方式  ***********************
create table t_user (   
id int not null,   
name varchar(30),   
groupid int,   
primary key (id),   
foreign key (groupid) references t_group(id) on delete no action on update no action  
);     
--参照完整性测试   
insert into t_user values (1, 'qianxin', 1); --可以插入   
insert into t_user values (2, 'yiyu', 2);    --可以插入   
insert into t_user values (3, 'dai', 3);     --错误,用户组3不存在,与参照完整性约束不符   
--约束方式测试   
insert into t_user values (1, 'qianxin', 1);   
insert into t_user values (2, 'yiyu', 2);   
insert into t_user values (3, 'dai', 2);   
delete from t_group where id=2;      --错误,从表中有相关引用,因此主表中无法删除   
update t_group set id=2 where id=1;  --错误,从表中有相关引用,因此主表中无法修改  
实战经验:

4-2. 表级约束与列级约束

上一篇下一篇

猜你喜欢

热点阅读