最近的几次面试中,都被问有关数据库的知识,不得不承认数据库是我的硬伤(谁让自己当初没好好学),所以最近在恶补数据库方面的知识(从三月中旬到现在,面过的公司挺多的,关于面试的情况,后期抽时间上传的,希望昨天CVTE的hr面顺利通过),好了,废话不多说,分享下关于数据库学习的笔记,希望对大家有所帮助。
rpm -qi mysql-server
service mysqld start(stop、restart)--->启动之后才可以使用mysql数据库
chkconfig mysqld on(使mysqld服务所系统启动而启动)
-------------------------------------------登录方式-----------------------------------------------
mysql -u helen -p(回车后输入密码)
mysql -h 127.0.0.1 -u helen -p
mysql -h localhost -u helen -p
---------------------------------------------相关文件--------------------------------------------------
配置文件:/etc/my.cnf
数据文件:/var/lib/mysql/
日志文件:/var/log/mysqld.log
默认端口:3306 TCP协议
SQL语句的分类
1、DDL(data definition language) :create drop alter rename (操作数据库、表)
2、DML(data munipulation language) : select insert update delete(操作数据)
3、DCL(data control language) : grant revoke(权限)
4、TCL(transaction language) :commit savepoint rollback(事务)
-------------------------------------------常见操作-----------------------------------------------------------
select version(); //显示版本
select current_date; //显示当前时间
show databases; //显示当前有哪些数据
create database lcdb; //创建一个数据库
drop databses lcdb; //删除一个数据库
use lcdb; //选择使用的数据库
CREATE DATABASE linux_cast;
USE linux_cast
CREATE TABLE lc_course(
id int,
course_name varchar(50),
course_length int,
teacher varchar(10),
category varchar(7)
);
//对表重命名
ALTER TABLE lc_course RENAME course;
//在表中增加一列
ALTER TABLE lc_course AND link varchar(100);
//在表中删除一列
ALTER TABLE lc_course DROP COLUMN link;
//修改表中某一列的数据类型
ALTER TABLE lc_course MODIFY course_name varchar(2000);
//修改某一列的名称
ALTER TABLE lc_course CHANGE lecture teacher varchar(100);
//删除重复项
SELECT DISTINCT lecture FROM course;
//按照指定列进行排序输出
SELECT * FROM course ORDER BY course_length;(默认按照升序进行排列)
SELECT * FROM course ORDER BY course_length DESC;(按照降序)
//按照条件进行查询
SELECT * FROM course WHERE lecture="nash_su" AND category="adv";
SELECT * FROM course WHERE lecture="nash_su" OR category="adv"
--------------------------------------------用户管理--------------------------------------------
//增加一个用户
CREATE USER 用户名 IDENTIFIED BY '密码';(默认没有权限,无法登入---------需要进行权限方面的设置)
//删除一个用户
DROP USER 用户名;
//修改用户名
RENAME USER 原用户名 TO 新用户名
//修改当前用户的密码
SET PASSWORD=PASSWORD('新密码'); -------->密码用单引号括起来
//修改指定用户的密码
SET PASSWORD FOR 用户名 PASSWORD=PASSWORD('新密码');
---------------------------------------------权限管理--------------------------------------------
权限级别:
1、全局范围
2、数据库级
3、表级
4、列级
5、子程序级
//用户名、主机、密码都用单引号括起来
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'主机' IDENTIFIED BY '密码'
哪些权限 哪个级别 主机的限制
GRANT ALL PRIVILEGES ON *.* TO 'nash_su'@'%' IDENTIFIED BY 'linuxcast'
*.*:所有数据库下的所有表 --------- linux_cast.* :赋予针对特定数据库linux_cast的权限
% :所有主机
-----------------------------------------------数据库备份/恢复------------------------------------------
//备份
mysqldump -u 用户名 -p 数据库名 > 备份的文件名.sql
mysqldump -u helen -p lc_course > lc_course_bk.sql(回车之后输入密码)
//恢复
mysql -u helen -p 数据库名 < 备份的文件名.sql(回车后输入密码)
mysql -u helen -p lc_course < lc_course_bk.sql
参考教学视频连接
点击打开链接