MySQL基础语法操作
安装完mysql之后配置环境变量(默认路径C:\Program Files\MySQL\MySQL Server 8.0\bin)
利用CMD进入mysqlmysql -uroot -p,提示输入密码
查看数据库
show databases (可以看到数据库列表);
查看mysql运行在哪个端口号
show global variables like 'port';
默认数据库存在路径C:\ProgramData\MySQL\MySQL Server 8.0
my ini 表示mysql的配置文件 Data数据的文件夹
创建数据库
create database 数据库名
选择数据库
use 数据库名
查看数据库的表
show tables;
删除数据库
drop database 数据库名;
更改加密方式
ALTER USER 'root@localhost' IDENTIFIED BY '你输入的密码' PASSWORD EXPIRE NEVER;
ALTER USER 'root@localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
数据库字符集
ASCII码 => unicode => UTF-16 => UTF-8
存储引擎(新建表 => 选择中的引擎)
分类
* MEMORY: memory使用存在内存中的内容来创建表,每个memory表实际对应一个磁盘文件,格式是.frm.特点:MEMORY表的访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是服务器一旦关闭,表中的数据就会丢失,但表还会继续存在;
* MYISAM: 它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT. INSERT为主的应用基本都可以使用这个引擎来创建表.每个MYISAM在磁盘上存储成三个文件,其中文件名和表名都相同,但是扩展名分别为: .frm(存储表定义) MYD(MyData,存储数据) MYI(MYIndex,存储索引)
* INNODB: InnoDB存储引擎提供了具有提交.回滚和崩溃恢复能力的事务安全.但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引
常用的数据类型
double(双精度小数型) char(固定字符串) varchar(可变字符串 常用) text(字符串) blob(二进制类型 存储视频 音频) date(日期类型) time(时间类型) datetime(日期时间类型)
在mysql中,字符串类型和日期类型都要用单引号括起来,‘Mysql’ ‘2020-11-25’
SQL语句
创建学生表(大写表示系统的指令)
CREATE TABLE student(
id(主键) bigint,
stu_name varchar(50),
stu_age int
);
添加一列
ALTER TABLE student ADD stu_gender varchar(2);
修改一个表的字段类型
ALTER TABLE student MODIFY stu_name VARCHAR(10)
查看表的字段信息
DESC student
修改表名
RENAME TABLE student TO newstu;
修改表的字符集
ALTER TABLE 表名 CHARACTER SET 字符集名称;
修改表的列名
ALTER TABLE 表名 CHANGE 原始列名 新列名 数据类型;
查看表的创建细节
SHOW CREATE TABLE 表名;
删除一列
ALTER TABLE 表名 drop 字段名
删除表
drop TABLE 表名
什么是SQL
SQL是Strucred Query Language(结构化查询语言)的缩写
SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言
在使用它时,只需发出"做什么"的命令,"怎么做"是不用我们考虑的
sql功能分类
DDL:数据定义语言:用来定义数据库对象
* 创建库,表,列等
DML:数据操作语言:用来操作数据库表中的记录
DQL:数据查询语言:用来查询数据
DCL:数据控制语言:用来定义访问权限和安全级别
SQL数据类型
Mysql中定义数据字段的类型对你数据库的优化是非常重要的
Mysql支持所有标准SQL数值数据类型
Mysql支持多种类型,大致分为三种: 数值类型 字符串类型 日期和时间类型
DML
查询表中所有数据
SELECT * FROM student
插入操作:INSERT INTO 表名(列名,列名2…) VALUE(列值1,列值2…)
INSERT INTO student(id,stu_name,stu_age) VALUE(3,'le',25);
INSERT INTO student(id,stu_name,stu_age) VALUES(3,'le',25),(4,'le',25),(5,'le',25);(插入多个数据)
INSERT INTO student VALUE(3,'le',25);(不写列名表示插入全部的,不能少属性)
更新语句:UPDATE 表名 SET 列名=列值,列名2=列值2… WHERE 列名=值
UPDATE student SET set_count=90;
UPDATE student SET stu_count=100 WHERE stu_name='xuan';
UPDATE student SET stu_count=100,stu_age=18 WHERE stu_name='xuan';
修改数据库密码
mysql8之前
use mysql
update mysql.user set authentication_string=password('123456') where user='root' and host='localhost'
flush privileges;刷新mysql的系统权限相关表
mysql 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
CMD修改密码:mysqladmin -u root -p password 当前密码 之后提示输入新密码
删除
DELETE FROM student WHERE id = 3;(删除指定数据:删除表中数据,表结构还在)
TRUNCATE TABLE student;(删除一个表的数据:直接删除表,然后在创建一个同样的新表,执行速度比DELETE快)
DQL
结果集
通过查询语句(select * from student)查询出来的数据以表的形式展示我们称这个表为虚拟结果集
查询返回的结果集是一张虚拟表
查询指定的列
SELECT stu_name from student;
主键约束
* 每个表中要有一个主键
* 数据唯一,不能为NULL值
唯一约束
* 指定列的数据不能重复
* 可以为空值
自动增长列
* auto_increment 在主键后面添加这个
域完整性
限制此单元格的数据正确,不对照此列的其他单元格比较
域代表当前单元格
域完整性约束
数据类型
* 数值类型
* 日期类型
* 字符串类型
非空约束(not null)
* CREATE TABLE 表名(字段名1 数据类型 PRIMARY KEY AUTO_INCREMENT,字段2 数据类型 UNIQUE NOT NULL)
默认值约束(default)
参照完整性
指表与表之间的一种关系
如何在忘记密码的情况下修改密码(8.0版本mysql)
先关掉系统服务
用mysqld --console --skip-grant-tables --shared-memory可以无密码启动服务
服务启动后,以空密码登入系统
mysql.exe -u root
然后执行sql命令将root用户密码设置为空
UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost';
或者修改登陆密码也是可以的
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
如何在linux中卸载mysql(删除都要删除全部的文件和安装包哦~)
卸载命令:
yum remove mysql-community-server
查看mysql相关的文件名
rpm -qa |grep mysql
卸载文件名
yum remove mysql-文件名(就是上面显示的全部复制)
第三步:卸载并不会自动删除配置文件等,所以我们还需要手动来删除
首先我们使用 find 命令来查找:
find / -name mysql
接着我们使用 rm 命令删除即可:
rm -rf 文件名