美文网首页
mysql的基本使用

mysql的基本使用

作者: Jason_M_Ho | 来源:发表于2018-01-17 15:06 被阅读0次

用root账号管理其他用户

#创建用户
mysql> create user 'jasonhz'@'localhost' identified by '123456';
#给用户授权
mysql> grant all privileges on myschool.* to 'jasonhz'@'localhost';
#刷新授权
mysql> flush privileges;
#更改用户密码
mysql> set password for 'jasonhz'@'localhost' = password('111222');
#删除用户
mysql> drop user 'jasonhz'@'localhost';

SQL语句(Structured Query Language 结构化查询语言)

  • DDL (Data Definition Language 数据定义语言) 如:CREATE DROP ALTER
  • DML( Data Manipulation Language 数据操纵语言) 如: INSERT UPDATE DELETE
  • DQL(Data Query Language 数据查询语言) 如:SELECT
  • DCL(Data Control Language 数据库控制语言) 如:GRANT COMMIT ROLLBACK

DDL (Data Definition Language 数据库定义语言)

#创建数据库
mysql> create database if not exists hzdb;
#使用数据库
mysql> use hzdb;
#查看所有可访问的数据库
#除了hzdb是自己创建的,mysql系统中有四个默认的库 information_schema 、 mysql、performance_schema、sys 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hzdb               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
#删除数据库
mysql> drop database hzdb;

#查看数据库支持的引擎
mysql> show engines;
#查看数据库默认的引擎
mysql> show variables like '%storage_engine%';
#查看当前数据库的编码
mysql> show variables like '%char%';

#创建表
mysql> create table person(
    -> `id` int(4) primary key auto_increment comment '编号',
    -> `name` varchar(50) not null default '无名氏' comment '姓名',
    -> `address` varchar(100) comment '地址' 
    ->  )engine=innodb default charset=utf8 comment='人员信息';
    
#查看所有表
mysql> show tables;
#查看表的结构
mysql> desc person;
+---------+--------------+------+-----+-----------+----------------+
| Field   | Type         | Null | Key | Default   | Extra          |
+---------+--------------+------+-----+-----------+----------------+
| id      | int(4)       | NO   | PRI | NULL      | auto_increment |
| name    | varchar(50)  | NO   |     | 无名氏    |                |
| address | varchar(100) | YES  |     | NULL      |                |
+---------+--------------+------+-----+-----------+----------------+

#修改表名
mysql> alter table person rename student;
#添加字段
mysql> alter table student add `phone` varchar(13) comment '电话';
#修改字段属性,不能修改表名
mysql> alter table student modify `phone` int(11);
#修改字段,同时修改表名
mysql> alter table student change `phone` `tel` varchar(50) not null;
#删除字段
mysql> alter table student drop `tel`;

#删除表,删除数据要慎重
mysql> drop table student;

DML( Data Manipulation Language 数据操纵语言)

#添加数据
mysql> insert into student (`id`,`name`) values ('1','张三');
mysql> insert into student (`id`,`name`) values ('4','张三'),('6','李四'),('8','王五');
#修改数据
mysql> update student set `name`='李靖' where id=1;
#删除数据
mysql> delete from student where id=1;
#删除所有数据,两种方法
mysql> delete from student;
mysql> truncate table student;

DQL(Data Query Language 数据查询语言)

(有需要sql脚本做练习的请联系我)

#基本查询:
#查询student表中全部信息
mysql> select * from student;

#通过student表,查询`studentNo`,`studentName`,`phone`,`address`,`birthday`字段的信息 
mysql> select studentNo, studentName, phone, address, birthday from student;

#通过student表,查询`studentNo`,`studentName`,`phone`,`address`,`birthday`字段的信息,使用as重命名列名显示
mysql> select studentNo as 学号,studentName as 姓名,phone as 电话,address as 地址,birthday as 生日 from student;

#查询email值为null的空行
mysql> select * from student where email is null;

#把成绩都降低10%后加5分,再查询及格成绩,并按照成绩从高到低排序(order by)
mysql> select studentNo as 学号, (studentResult*0.9+5) as 成绩 from result where (studentResult*0.9+5)>60 order by studentResult desc;

#查询所有年级编号为1的学员信息,按学号升序排序,从第5条记录开始显示4条数据(limit)
mysql> select * from student where gradeId=1 order by studentNo asc limit 4,4;

#编写SQL语句,查看年龄比“李斯文”小的学生,要求显示这些学生的信息 
mysql> select studentName, birthday from student where birthday>(select birthday from student where studentName='李斯文');


#查询参加最近一次Logic Java考试成绩的学生的最高分和最低分
mysql> select max(studentResult) 最高分,min(studentResult) 最低分 from result where examDate=(select max(examDate) from result where subjectNo=(select subjectNo from subject where subjectName='LogicJava')); 


#查询“LogicJava”课程考试成绩为60分的学生名单(采用 IN 子查询 )
mysql> select studentNo, studentName from student where studentNo in(select studentNo from result where subjectNo=(select subjectNo from subject where subjectName='LogicJava'));

#查询参加“LogicJava”课程最近一次考试的在读学生名单
mysql> select studentNo, studentName from student where studentNo in( select studentNo from result where examDate=(select max(examDate) from result where subjectNo=(select subjectNo from subject where subjectName='LogicJava')));

#查询未参加“LogicJava”课程最近一次考试的在读学生名单(not in)
mysql> select studentNo, studentName from student where studentNo not in( select studentNo from result where examDate=(select max(examDate) from result where subjectNo=(select subjectNo from subject where subjectName='LogicJava')));

#查询大一学期开设的课程
mysql> select subjectName from subject where gradeId=(select gradeId from grade where gradeName='大一');

#查询未参加“HTML”课程最近一次考试的在读学生名单
mysql> select studentNo, studentName from student where studentNo not in( select studentNo from result where examDate=(select max(examDate) from result where subjectNo=(select subjectNo from subject where subjectName='HTML')));

#高级查询:
#查看没有参加考试的学生
mysql> select studentName from student where studentNo in (select studentNo from result where studentResult is null);

#检查“LogicJava”课程最近一次考试成绩,如果有80分以上的成绩,显示分数排在前5名的学员学号和分数
mysql> select studentNo, studentResult from result where exists (select studentResult from result where examDate=(select max(examDate) from result where subjectNo=(select subjectNo from subject where subjectName='LogicJava')) and studentResult > 80) order by studentResult desc limit 5;

#检查“Logic Java”课程最近一次考试成绩,如果全部通过考试(60分及格)计算的该次考试平均分减5分
mysql> select avg(studentResult)-5 平均分 from result where exists(select studentResult from result where examDate=(select max(examDate) from result where subjectNo=(select subjectNo from subject where subjectName='LogicJava')) and studentResult > 60);

#如果有大一的学生,就查询参加大一学科考试的学员学号、科目编号、考试成绩,考试时间
mysql> select studentNo 学号, subjectNo 科目编号, studentResult 成绩, examDate 考试时间 from result where exists (select studentNo from student where gradeId=(select gradeID from grade where gradeName='大一'));

#查询每门课程的平均分,并且按照分数由高到低的顺序排列显示(分组查询)
mysql> select subjectNo 课程编号,avg(studentResult) 平均分 from result group by subjectNo order by avg(studentResult) desc;

#分别统计每个年级男、女生人数
mysql> select count(*) 人数, sex 性别 from student group by sex;

#如何获得课程平均分及格的课程编号?(分组筛选语句)
mysql> select subjectNo 课程编号,avg(studentResult) 平均分 from result group by subjectNo having avg(studentResult)>80;

#查询出学生姓名,学生的年级,学生的课程,考试分数,考试时间字段的学生信息(多表查询)
mysql> select studentName 姓名, gradeName 年级, subjectName 课程,studentResult  成绩,examDate 考试时间 from student inner join grade on student.gradeId = grade.gradeID inner join subject on student.gradeId=subject.gradeID inner join result on student.studentNo=result.studentNo;

DCL(Data Control Language 数据库控制语言)

#事务处理,只支持innodb和bdb类型的数据表
#关闭自动提交,同时开启一个事务
mysql> set autocommit=0;
mysql> update acc set `money`=`money`-500 where `name`='Tom';
mysql> update acc set `money`=`money`+500 where `name`='Jerry';
#提交,将数据写入到数据库保存
mysql> commit;
#回到事务处理前的状态,如果已经提交成功,则回滚无效
mysql> rollback;
#打开自动提交
mysql> set autocommit=1;

数据库备份与恢复

#使用mysqldump备份
$ > mysqldump -u root -p myschool > /users/jason/myschool.sql;
#使用source恢复
mysql> use testdatabase;
mysql> source  /user/jason/myschool.sql;

相关文章

  • mysql

    mysql 数据库 使用系统:ubuntu 18.04 LTS 安装mysql 基本使用 登陆 : mysql ...

  • MySQL基本使用

    函数 常用函数 数学函数 字符串函数 日期函数

  • mysql基本使用

    安装mysql 安装Yum Repositorywget https://dev.mysql.com/get/my...

  • MYSQL基本使用

    1.Win10下进入mysql数据库打开终端(快捷键:commd + R, 然后输入cmd回车)输入mysql -...

  • Mysql基本使用

    安装 Ubuntu安装 https://www.cnblogs.com/wuhou/archive/2008/09...

  • MySQL基本使用

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relatio...

  • MySQL基本使用

    官网:https://www.mysql.com/添加配置信息先cd,进入用户主目录vim .bash_profi...

  • mysql基本使用

    初学mysql使用注意 在mysql客户端中,最后一行SQL语句不能有逗号 如果是空值,在insert语句中填写n...

  • MySQL基本使用

    一:1.1什么是数据库有 1.2常见数据库分类 二:2.1创建数据库 2.2创建数据库表 2.3表字段数据类型和字...

  • mysql的基本使用

    1、显示有多少个数据库 show databases; 2、选择哪个数据库 use 数据库名 3、创建新的数据库 ...

网友评论

      本文标题:mysql的基本使用

      本文链接:https://www.haomeiwen.com/subject/lkkuoxtx.html