MYSQL学习笔记-(白夜黑羽)
MYSQL学习笔记-(白夜黑羽)
SQL配置的前期工作
1、mysql在Linux上的安装
前提条件在centos的root用户下安装
由于centos的yum仓库源默认为mariaDB,所以需重新配置yum仓库源
- 检查centos的linux的版本:
cat /etc/centos-release #CentOS Linux release 7.5.1804 (Core)显示为7.5版本
- 现在对应版本的yum仓库源安装包
wget http://repo.mysql.com/mysql57-community-release-el7.rpm
- 利用rpm来安装yum仓库源
rpm -ivh mysql57-community-release-el7.rpm
通过yum命令安装
yum install mysql-server
2、启动mysql服务
- 启动服务为
systemctl start mysqld
对应的查看服务为
systemctl status mysqld #显示为active,意为启动成功
- 设置开机自动运行MySQL服务
systemctl enable mysqld
3、获取root用户的初试密码
grep 'temporary password' /var/log/mysqld.log
4、初始化设置
mysql_secure_installation
- 更改新的root密码
- 匿名用户的配置
- test数据库的配置
- 是否远程连接访问
5、创建新的mysql用户并配置权限
- 进入mysql
mysql -uroot -p #(-u是用户,-p是用密码登录)
- 创建:
创建新的用户为本地访问权限:
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'Mima123\$';
创建新的用户为远程访问权限:
CREATE USER 'user1'@'%' IDENTIFIED BY 'Mima123$';
- 配置权限:
全部权限:
GRANT ALL ON *.* TO 'user1'@'localhost';
GRANT ALL ON *.* TO 'user1'@'%';
部分权限:
GRANT SELECT ON mydb.table1 TO 'user1'@'localhost';
GRANT SELECT ON mydb.table1 TO 'user1'@'%';
关于权限的官方文档:官方文档权限
6、打开防火墙
firewall-cmd --zone=public --add-service=mysql --permanent
firewall-cmd --reload
7、数据库管理工具HeidiSQL:
只能使用非root用户登录
mysql的使用(sql命令对大小写不区分,数据库内部命名对大小写区分)
1、数据库的相关命令
- 查看数据库列表:
show databases;
- 新建数据库:
CREATE DATABASE byhy CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
#(后面是指定数据库的编码格式为utf-8)
- 删除数据库:
DROP DATABASE byhy;
- 数据库改名:mysql不支持数据库直接改名(用rename会丢失数据)
- 使用数据库:use byhy;
2、数据表的相关命令:
- 查看数据表列表:
show tables;
新建数据表:
CREATE TABLE user ( id int NOT NULL AUTO_INCREMENT, username varchar(150) NOT NULL, `password` varchar(128) NOT NULL, realname varchar(30) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB;
数据类型:int bigint varchar char date datetime
查看创建表:
SHOW CREATE TABLE user\G;
- 删除表:
DROP TABLE user;
- 更改表的名字:
RENAME TABLE user TO by_user, medicine TO by_medicine;
rename table byhy.user2 to byhy1.user2;#(还可以兼移动)
- 修改表的结构:
- 添加列:
ALTER TABLE user ADD `description` varchar(850) NOT NULL, ADD `qq` varchar(20) NOT NULL;
- 删除列:
ALTER TABLE user DROP `description` , DROP `qq`;
- 修改列:
ALTER TABLE user CHANGE `realname` `realname1` varchar(30) NOT NULL;
3、表内数据的相关命令:
插入表记录:
INSERT INTO user (username,`password`,realname) VALUES ('byhy1','password1','baiyueheiyu1'), ('byhy2','password2','白月黑羽2'), ('byhy3','password3','白月黑羽'); #前面列名为关键字的加``,后面实际字符串的加‘’,切记不要弄错
前面列名为关键字的加``,后面实际字符串的加‘’,切记不要弄错
查询表记录:
- 基础查询功能:
select * from user; select id,username from user; select * from user where username='byhy3'; select * from user where username like "byhy%33";#(以byhy开头,以33结尾) select * from user where username in ("byhy1","byhy2"); select * from customer1 where id > 10 and level<15; select * from customer1 where (id > 8 or level<15)
- 多重查询:
SELECT 电话号码 FROM 学生表 WHERE 姓名 IN (SELECT 姓名 FROM 成绩表 WHERE 分数=100);
- 多表连接查询:
SELECT 电话号码 FROM 学生表 INNER JOIN 成绩表 ON 学生表.姓名 = 成绩表.姓名 WHERE 成绩表.分数=100; #INNER JOIN 语句必须紧跟在 FROM 语句 后面,表示连接哪张表,连接条件是什么。)
- 结果去重:
select distinct 课程 from 成绩表 where 分数=100;#(distinct去重)
- 查询结果排序:
select * from customer1 where id > 10 order by coin asc; #asc升序(缺省),desc降序 select * from customer1 where id > 10 order by coin, level; #多重排序
- 查询结果分页:
select * from 学生表 limit 5 offset 1; #limit 后面的数值 指定最多显示多少条记录, offset 后面的数值 指定了当前显示第几页,第1页是0,第2页是1…
- 记录数量、平均值、最大值、最小值:
select sum(分数) from 成绩表;#sum select avg(分数) from 成绩表;#avg select max(分数) from 成绩表;#max select min(分数) from 成绩表;#min
修改表记录:
update customer1 set coin=100 where username='cus16';
update customer1 set coin=100,level=30 where username='cus16';
- 删除表记录:
delete from customer1 where username='cus16';
程序访问数据库服务
1、使用第三方库来操作数据库
mysqlclient 和 PyMySQL
pip install mysqlclient==1.3.12
2、读取数据库内容:
import MySQLdb# 创建一个 Connection 对象,代表了一个数据库连接
connection = MySQLdb.connect(host="192.168.0.100",# 数据库IP地址 user="username", # mysql用户名passwd="xxxxx", # mysql用户登录密码db="dbname" , # 数据库名# 如果数据库里面的文本是utf8编码的,#charset指定是utf8charset = "utf8") # 返回一个 Cursor对象
c = connection.cursor()# 执行一个获取 users 表中所有记录的 sql 语句
c.execute("""SELECT * FROM users """)# rowcount属性记录了最近一次 execute 方法获取的数据行数
numrows = c.rowcountfor x in range(numrows):# fetchone 方法返回的是一个元组,# 代表获取的一行记录,元组里面每个元素代表一个字段row = c.fetchone()print(row)
#rows = c.fetchmany(2)
#rows = c.fetchall()
3、插入数据到数据库表:
# 插入一行数据到 user 表中
c.execute(f"""INSERT INTO users ( name, nickname, phone) VALUES ('baiyueheiyu', '白月黑羽', '13312345678')""")# 注意 一定要commit,否则添加数据不生效
connection.commit()
connection.close()
索引和外键
1、创建索引:
CREATE INDEX index_username ON customer2 (username);
CREATE UNIQUE INDEX username ON customer4(username);#(唯一索引不允许重复)
2、主键索引:
聚类索引 clustered index
主键PRIMARY KEY 和 唯一索引 UNIQUE KEY的区别如下:
- 一个表最多只能有一个PRIMARY KEY约束,但它可以包含任意数量的UNIQUE KEY约束。
- 属于PRIMARY KEY的列必须定义为NOT NULL。 对于属于UNIQUE KEY约束的列,这不是必需的。
- 另一个细微差别是 唯一索引 和 普通索引 可以自定义名字, 而主键只能用PRIMARY KEY作为名字。
3、多重索引:
PRIMARY KEY (id,username);
4、外键:
FOREIGN KEY (user_id)
REFERENCES user(id)
ON UPDATE CASCADE
ON DELETE RESTRICT
#update为关联更新,restrict为严令禁止
5、删除索引:
drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;
事务
- 创建一个事务
START TRANSACTION;
- 更新book 表
update book set status=1 where id=888;
- 更新 borrow表
insert into borrow (user_id,book_id) VALUES (666,888);
- 提交事务
COMMIT;
- 或者回滚事务
ROLLBACK;
MYSQL学习笔记-(白夜黑羽)相关推荐
- Mysql 学习笔记(快速复习)
Mysql 学习笔记(快速复习) 一.MySQL 基础 1.数据库连接工具 1.1.Navicat 使用教程 2.DDL 操作数据库 2.1.创建新数据库 2.2.删除数据库 2.3.使用数据库 3. ...
- 【mysql学习笔记整理】
/*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作 #创建 #数据库的创建 USE mysql; CREATE DATABASE db_x; #删除 #删除数据库 DROP DA ...
- 初识mysql学习笔记
使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...
- MySQL学习笔记07【事务、用户管理和权限管理】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- MySQL学习笔记06【多表查询、子查询、多表查询练习】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- MySQL学习笔记03【数据库表的CRUD操作、数据库表中记录的基本操作、客户端图形化界面工具SQLyog】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- MySQL学习笔记02【SQL基本概念与通用语法、数据库的CRUD操作】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
最新文章
- ZOJ 1025 Wooden Sticks(快排+贪心)
- 在同一台电脑上同时安装Python2和Python3
- 计算机在线声音,电脑怎么在线录音
- 2016-05-29 for循环几种应用
- linux双机热备 oracle,oracle for linux双机热备实战
- 智能音箱 之 音频通路质量--测试与参数
- hdfoo站点开发笔记
- 跨性别,你所不知道的事
- 命令行下Apache日志统计举例
- 二次元HTML导航页网站源码
- MySQL在windows的my-default.ini配置
- Linux 2.6.39.1 Hello world 驱动总结
- python 路径拼接字符串_anaconda环境变量添加 python笔记
- 2021年Web前端开发的趋势有哪些
- 知了课堂Day2——微信小程序基础02——wxss
- c语言中math的作用,C语言常用的math函数
- 前端面试题之 对Promise的理解
- Google Dremel 理解
- 解决:pandas.errors.ParserError: Error tokenizing data. C error: Expected 2 fields in line 18, saw 4
- 【C++】单例模式(懒汉、饿汉)