登录数据库:
sudo mysql -u root -p778899
注意哦,不输入sudo会出现一下问题:
Access denied for user 'root'@'localhost'
显示数据库:
show databases;
创建数据库:
create database school;
选择当前操作数据库:
use school;
创建新用户:
create user shaowen@'%' identified by '密码';
授权:
grant all on *.* to shaowen@'%';
//刷新
flush privileges;
收回权利:
revoke all ON *.* FROM shaowen@'%';
flush privileges;
查询所有用户:
SELECT User, Host FROM mysql.user;
修改密码:
alter user 'shaowen'@'%' identified by '778899';
//%和localhost具体填哪个,根据上面的查询用户选项看
flush privileges;
之后就可以登录啦
sudo mysql -ushaowen -p778899
基本操作:
- DML(数据操纵语言)
insert
delete
update
增加一行:
insert into student values ('0001', '臭猪', '男', '2002-09-10', '宽城区','');
删除某一行:
delete from student
where 学号 = ‘0001’;
修改某个字段的值:
update student SET 学号 = '001'
where 学号 = '';
//一定要加where,不然就修改了整个列
- DDL(针对数据库对象:表 视图 索引 模式)
create
alter
drop
创建表
create table if not exists student(
学号 nchar(4),
姓名 nchar(8),
性别 nchar(2),
出生日期 date,
家庭住址 nvarchar(50),
备注 text
)engine = InnoDb default charset=utf8;
把某列设置为非空:
alter table student modify 姓名 char(4) not null;
修改某列的类型:
alter table student modify column 备注 char(4);
增加唯一约束:
alter table student add unique (学号);
增加属性列:
alter table student add S_no char(4);
删除属性列:
alter table student drop column S_no;
删除表:
drop table student;
存储引擎:是对于数据库文件的一种存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法
MySQL中常用的四种存储引擎分别是:
- MyISAM存储引擎
- innoDB存储引擎
- MEMORY存储引擎
- ARCHIVE存储引擎
InnoDB:MySQL的数据库引擎之一,现为MySQL的默认存储引擎
//事务型数据库的首选引擎,支持ACID事务,支持行级锁定
//InnoDB 给 MySQL 提供了具有事务(transaction),回滚(rollback)和崩溃修复能力(crash recovery capabilities)
//以及多版本并发控制(multi-versioned concurrency control)的事务安全(transaction-safe (ACID compliant))型表。
//InnoDB 提供了行级锁(locking on row level),提供与 Oracle 类似的不加锁读取(non-locking read in SELECTs)。
数据库中schema是数据库对象集合,它包含了表,视图等多种对象
1、CHAR CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim()
2、VARCHAR 存储变长数据,但存储效率没有CHAR高。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。
3、TEXT text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失
所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar它们的区别概括成:
CHAR,NCHAR 定长,速度快,占空间大,需处理
VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理
NCHAR、NVARCHAR、NTEXT处理Unicode码
转自:mysql中char,varchar以及nchar的区别_tusi-CSDN博客_nchar
再往下面的内容都是环境配置的,可以忽略了
凌晨1:56,伴着舍友的呼噜声我特娘的终于连接好了,至于为什么报错,记录一下
The specified database user/password combination is rejected:
原因:没有权限的问题
解决办法:创建新用户,赋予权限
create user shaowen@'%' identified by '密码';
grant all on *.* to shaowen@'%';
flush privileges;
alter user 'shaowen'@'%' identified by '778899';
//%或localhost或170.0.0.1
flush privileges;
sudo mysql -ushaowen -p778899;
//创建个数据库
create database school;
更新:
安装mysql
- 安装:
sudo apt install mysql-server -y
- 查看服务启动与否
sudo systemctl status mysql.service
- 启动服务命令
sudo systemctl start mysql.service
- 配置MySql
sudo mysql_secure_installation
输入后,第一步就是问你是否想使用 “ 密码有效强度(validate password component)"
输入回车后就会提示你输入密码,输入后,确认密码;
之后的建议开启它们(对于每一步输入 y
或者 Y
和按下回车)。它们(依序)是:“ 移除匿名用户(remove anonymous user)”,“ 禁止 root 远程登录(disallow root login remotely)”,“ 移除测试数据库及其访问(remove test database and access to it)”。“ 重新载入权限表(reload privilege tables now)”。
- 关闭服务
sudo systemctl stop mysql.service
- 使用简单的命令输出关于版本的信息
sudo mysqladmin -u root version -p
- 登录数据库:
sudo mysql -u root -p778899
注意哦,不输入sudo会出现一下问题:
Access denied for user 'root'@'localhost'
正规登录是:
sudo mysql -h localhost -u root -p
- -h 用来指定一个主机名(如果这个服务被安装到其他机器上,那么会有用;如果没有,忽略它)
- -u 指定登录的用户
- -p 指定你想输入的密码
该部分转自:https://zhuanlan.zhihu.com/p/64080934