数据库学习笔记(初级)

     最近的几回面试中,都被问有关数据库的知识,不得不认可数据库是个人硬伤(谁让本身当初没好好学),因此最近在恶补数据库方面的知识(从三月中旬到如今,面过的公司挺多的,关于面试的状况,后期抽时间上传的,但愿昨天CVTE的hr面顺利经过),好了,废话很少说,分享下关于数据库学习的笔记,但愿对你们有所帮助。html

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语句的分类
一、DDL(data definition language)    :create drop alter rename (操做数据库、表)
二、DML(data munipulation language)    : select insert update delete(操做数据)
三、DCL(data control language)        : grant revoke(权限)
四、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('新密码');

---------------------------------------------权限管理--------------------------------------------
权限级别:
    一、全局范围
    二、数据库级
    三、表级
    四、列级
    五、子程序级

//用户名、主机、密码都用单引号括起来
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
参考教学视频链接 点击打开连接