mysql+control+user_mysql的基本使用
用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+control+user_mysql的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Anker 因过热起火风险在海外召回 5
- 下一篇: 股市时间是上午几点到几点