mysql 对库中表授权_对mysql数据库的授权和使用AND案例
對mysql數據庫的授權和使用
權限:
create user 'guest'@'ip地址' identified by '123' //ipconfig
授權:
grant 權限的具體使用 on.to 用戶名@ip地址 identified by ''密碼''
grant select,insert on .to guest@ip地址identified by '123'
例子:
CREATE USER 'whw'@'172.20.38.18' IDENTIFIED BY '147258';
GRANT SELECT,INSERT ON .TO whw@172.20.38.18;
撤銷權限:revoke all on .from 'whw'@'172.20.38.18;
子查詢
為了給主查詢(外部查詢)提供數據而首先執行的查詢(內部查詢)被叫做子查詢。
某些情況下,當進行一個查詢時,需要的條件或數據要用另外一個 select 語句的結果
1 where 型子查詢
where型子查詢即把內層sql語句查詢的結果作為外層sql查詢的條件.
子查詢要包含在括號內。
建議將子查詢放在比較條件的右側。
單行操作符對應單行子查詢,多行操作符對應多行子查詢。
單行操作符 右邊子查詢必須返回的是單個值,單行比較運算符(=,>,>=,)
多行操作符 右邊子查詢可以返回多行,但必須是單列,ALL, ANY,IN 其中,ALL和ANY運算符必須與單行比較運算符(=,>,>=,)結合使用
IN:等于任何一個
ALL:和子查詢返回的所有值比較。例如:sal>ALL(1,2,3)等價于sal>1 && sal>2 && sal>3,即大于所有。
ANY:和子查詢返回的任意一個值比較。例如:sal>ANY(1,2,3)等價于sal>1 or sal>2 or sal>3,即大于任意一個就可以。
EXISTS:判斷子查詢是否有返回結果(不關心具體行數和內容),如果返回則為TRUE,否則為FALSE。
2 from型子查詢
from型子查詢即把內層sql語句查詢的結果作為臨時表供外層sql語句再次查詢
3 exists型子查詢:
表中需要的數據是否存在或有歷史記錄
4 復制表子查詢(了解)
(1)復制表
(1)拷貝表結構
CREATE TABLE newadmin LIKE admin;
(2)拷貝表結構和數據(但約束與索引除外)
CREATE TABLE newadmin AS ( SELECT * FROM admin ) ;
(3)拷貝表結構+數據
CREATE TABLE newadmin LIKE admin; INSERT INTO newadmin SELECT * FROM admin;
(4)跨數據庫拷貝表
CREATE TABLE newadmin LIKE shop.admin; CREATE TABLE newshop.newadmin LIKE shop.admin;
(5)拷貝一個表中其中的一些字段(指定新名),其中一些數據
CREATE TABLE newadmin AS ( SELECT id, username AS uname, password AS pass FROM admin WHERE id<10 ) ;
(6)在創建表的同時定義表中的字段信息。
create table tt(eid int primary key auto_increment)as(select employee_id as eid,first_name,last_name,email from employees);
(2)復制數據
在 INSERT 語句中加入子查詢。不必書寫 VALUES 子句。 子查詢中的值列表應與 INSERT 子句中的列名對應。INSERT INTO emp2 SELECT * FROM employees WHERE department_id = 90;或INSERT INTO sales_reps(id, name, salary, commission_pct)SELECT employee_id, last_name, salary, commission_pctFROM employeesWHERE job_id LIKE '%REP%';
案例
老師表
課程表
學生表
成績表
-- 1、查詢“c001”課程比“c002”課程成績高的所有學生的學號;SELECT *FROM(SELECT sid,score FROM sc WHERE cid=001) AS a1,(SELECT sid,score FROM sc WHERE cid=002) AS a2WHERE a1.sid=a2.sid AND a1.score>a2.score;
-- 2、查詢平均成績大于60 分的同學的學號和平均成績select sid,avg(score)FROM sc GROUP BY sidHAVING AVG(score)>60
-- 3、查詢所有同學的學號、姓名、選課數、總成績;SELECT student.sid,sname,COUNT(sc.cid),SUM(score)FROM student INNER JOIN scWHERE student.sid=sc.sidGROUP BY sid;
-- 4、查詢姓“劉”的老師的個數;SELECT COUNT(teacher.tName)FROM teacherWHERE tName LIKE "劉%";
--5、查詢沒學過“李老師”課的同學的學號、姓名;
SELECT student.sid,student.sname
FROM student
WHERE student.sid NOT IN (SELECT student.sid
FROM teacher,course,sc,student
WHERE teacher.tid=course.tid AND course.cid=sc.cid AND sc.sid=student.sid AND teacher.tName="李老師"
GROUP BY sc.sid);
-- 6、查詢學過“c001”并且也學過編號“c002”課程的同學的學號、姓名;SELECT t1.sid,t1.snameFROM (SELECT student.sid,student.snameFROM student,scWHERE student.sid=sc.sid AND sc.cid="001") AS t1,(SELECT student.sid,student.snameFROM student,scWHERE student.sid=sc.sid AND sc.cid="002") AS t2WHERE t1.sid=t2.sid;-- 7、查詢學過“李老師”所教的所有課的同學的學號、姓名;SELECT student.sid,student.snameFROM teacher,course,sc,studentWHEREteacher.tid=course.tid AND course.cid=sc.cid AND sc.sid=student.sid AND teacher.tName="李老師"GROUP BY sc.sid;
-- 8、查詢課程編號“c002”的成績比課程編號“c001”課程成績低的所有同學的學號、姓名;SELECT a1.sid,a1.snameFROM(SELECT student.sid,student.sname,sc.scoreFROM course,sc,studentWHERE course.cid=sc.cid AND sc.sid=student.sid AND course.cid=002) AS a1,(SELECT student.sid,student.sname,sc.scoreFROM course,sc,studentWHERE course.cid=sc.cid AND sc.sid=student.sid AND course.cid=001) AS a2WHERE a1.score
-- 9、查詢所有課程成績小于60 分的同學的學號、姓名;SELECT student.sid,student.sname,sc.cid,sc.scoreFROM sc,studentWHERE sc.sid=student.sid AND sc.score<60;
-- 10、查詢沒有學全所有課的同學的學號、姓名;SELECT student.sid,student.snameFROM student INNER JOIN scON student.sid=sc.sidGROUP BY student.sidHAVING COUNT(cid)
總結
以上是生活随笔為你收集整理的mysql 对库中表授权_对mysql数据库的授权和使用AND案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos6.4 安装 mysql_C
- 下一篇: mysql 列序号,在mysql中使用列