MySQL 数据库

数据库(DataBase)定义:长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据"仓库",用于保存和管理(即增删改查)数据,可以有效保障数据一致性、完整性、降低数据冗余,可以满足应用的共享和安全方面的要求

分类

1. 关系型数据库/SQL:MySQL,Oracle,SQL Server,SQLite,DB2 处于主流状态

    特点是将数据按表的形式存在,且表与表之间存在关系,需要将数据放在一个服务器,最大优势是保持数据的一致性

2. 非关系型数据库/NOSQL: Redis,MongoDB

    特点是数据分散在不同服务器,即使是大量数据写入,可以分散压力

DBMS(Database Management System): 数据库管理系统,科学组织和存储数据,高效获取和维护数据,增删改查是通过DBMS处理

MySQL特点:开源,免费,可跨系统运行,适用于windows和linux系统

mysql的常用命令,应用于虚拟机中配置的mysql,[]代表内容是可选择的命令,非必填项:

建立名为school的数据库 create database [if not exists] school;
删除名为school的数据库 drop database [if exists] school;   
使用school数据库 use school;
查询所有表信息 show table status;
查看所有的库名单 show databases;
修改school库的字符编码 alter database school character set ‘UTF8’;
建school库时指定字符编码 create database school character set ‘UTF8’;
给外部访问授权,如JDBC无法连接数据库/两个数据库做主从复制,需使用 grant all on *.* to 'root'@'%' identified by 'ok';
刷新 flush privileges
创建student表,拥有主键,两种加粗方法,任选其一

create table student(

id INT PRIMARY KEY ,

name VARCHAR(10),

PRIMARY KEY (id)

);

创建studentDemo,拥有主键,并包含student的外键约束,以及唯一约束

修改外键:先删除外键,再新增正确的外键

create table studentDemo(

id INT,

name VARCHAR(10),

PRIMARY KEY (id), 
FOREIGN KEY (id) REFERENCES student(id),

UNIQUE (name)

);

在已有的studentDemo表中添加外键,主键,唯一键,索引

alter table studentDemo add constraint  foreign key id references student;

alter table studentDemo add primary key(id);

alter table studentDemo add Unique(key_name);

alter table student add index(key_name);

删除外键,主键,唯一键,索引

alter table studentDemo drop foreign key id;

alter table studentDemo drop primary key;

drop index key_name on student;

drop index key_name on student;

student和school,相互关联,在删除表的时候出错:Cannot delete or update a parent row: a foreign key constraint fails。

原因:表关联生成的强制约束问题,在删除的时候回检查表之间的关联关系,从而导致无法删除,处理方法如右图

a. SET foreign_key_checks = 0; // 先设置外键约束检查关闭

b. drop table student; // 删除表,如果要删除视图,也是如此

c. SET foreign_key_checks = 1; // 开启外键约束检查,以保持表结构完整性

将test查询结果导入或复制到 test_copy表 create table test_copy select * from test;
create table test_copy as select * from test;
将test表的数据结构克隆到test_clone表 create table test_clone like test;
复制旧表的表格结构(包含表头),不包括具体表格数据  create table studentDemo as select * from student where 1=0;
查看student表结构 DESC student;
删除表全部数据和表结构,立刻释放磁盘空间,不管是 Innodb 和 MyISAM drop table student;
删除表全部数据,保留表结构,立刻释放磁盘空间 ,不管是 Innodb 和 MyISAM; truncate table student; 
删除表全部数据,表结构不变,对于 MyISAM 会立刻释放磁盘空间,InnoDB 不会释放磁盘空间; delete from student;
带条件的删除,表结构不变,不管是 innodb 还是 MyISAM 都不会释放磁盘空间; delete from student where xxx;
查看student表格,位于school数据库 show tables student [in school]; 
查看student表的建表语句 show create table student;
查看student表的全部内容 select * from student;

显示当前用户id

显示当前用户

显示当前mysql版本

select connection_id();

select user();

select version();

声明语句结束符 DELIMITER $$
 
查询数据库中有多少张表
SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES
WHERE table_schema = 'azkaban' GROUP BY table_schema;

table_schema = 'azkaban'——azkaban指的是数据库名

常用口令
更改表名student为stu ALTER TABLE student RENAME stu;
RENAME TABLE student TO stu;
 
添加表的字段名score alter table student add score int(2);
删除表字段score

alter table student drop score;

更改表字段age为stuage,表字段属性设为int

alter table student change name 

只更改表字段属性 alter table student modify age varchar(5);
新增行数据 insert into student values (1, 'alpha'), (2, 'beta'), (3, 'delta');
增加查询之后的表数据 insert into student select * from student;
删除id=2的行数据 delete from student where id=2;
更改id=1的行数据name为HHH update student set name='HHH' where id=1;
筛选不在student范围的学生数据 select * from result where stuId not in (select stuId from student);
查询去除重复name数据之后的student数据 select distinct name from student;
SELECT DISTINCT name FROM test;

根据表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值