Mysql常用文まとめ
15109 ワード
/** */
SHOW DATABASES;
CREATE DATABASE db;
SHOW DATABASES;
DROP DATABASE db;
/** */
USE db;
SHOW TABLES;
CREATE TABLE IF NOT EXISTS student(
stu_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
stu_name VARCHAR(20) NOT NULL DEFAULT '',
stu_age INT NOT NULL DEFAULT 0,
stu_birthday DATE,
stu_salary FLOAT DEFAULT '0.1'
#
);
DESCRIBE student;
/** */
ALTER TABLE student ADD COLUMN stu_grade INT NOT NULL;
ALTER TABLE student DROP COLUMN stu_grade;
/** */
INSERT INTO student VALUES(1,' ',23,'1991-01-23','');
INSERT INTO student (stu_name,stu_age,stu_birthday) VALUES(' ',22,'1992-1-2');
INSERT INTO student (stu_name,stu_age) VALUES(' ',22);
UPDATE student SET stu_name=' ' WHERE stu_id=1;
UPDATE student SET stu_name=' ',stu_age=23 WHERE stu_id=1;
DELETE FROM student WHERE stu_id=1;
/** student teacher
:
*/
CREATE TABLE IF NOT EXISTS teacher(
tea_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
tea_name VARCHAR(20) NOT NULL DEFAULT '',
tea_age INT NOT NULL DEFAULT 0,
tea_birthday DATE,
tea_salary FLOAT DEFAULT '0.1'
#
);
INSERT INTO teacher SELECT * FROM student;
INSERT INTO teacher (tea_name,tea_age) SELECT stu_name,stu_age FROM student WHERE stu_age=22;
/** */
#Mysql ASC( ); (DESC)
/** :
SELECT
FROM
[WHERE 1]
[GROUP BY 1] [HAVING 2]
[ORDER BY [ASC|DESC]]
*/
/**
: SQL :
WHERE HAVING SELECT :
1、 WHERE
2、 GROUP BY
3、 WITH ROLLUP/CUBE
4、 HAVING
5、 ORDER BY
, GROUP/WHERE/HAVING/WITH... 。
*/
/**GROUP BY HAVING :
GROUP BY , 。
。 , (GROUP BY )
HAVING GROUP BY
*/
SELECT * FROM student;
SELECT * FROM student WHERE stu_age=22;
SELECT stu_name,stu_age,stu_birthday FROM student WHERE stu_age=22;
SELECT stu_name AS ' ',stu_age AS ' ' FROM student ORDER BY stu_age; # AS
SELECT * FROM student WHERE stu_name IN (' ',' '); # IN
SELECT * FROM student WHERE stu_age BETWEEN 0 AND 22; # BETWEEN AND
SELECT * FROM student WHERE stu_age>= 23; # :( =,<>,<,<=,>,>=)
/**( “%”, , , “ ” 。
“ ” , :'% %'; , '_ %' '_ ' '_ _'。)*/
SELECT * FROM student WHERE stu_name like '% %';
SELECT * FROM student WHERE stu_name like '_ %';
SELECT * FROM student WHERE stu_name IS NOT NULL # IS[NOT] NULL
SELECT COUNT(*) FROM student;
SELECT avg(stu_age) FROM student;
SELECT max(stu_age) FROM student;
SELECT min(stu_age) FROM student;
SELECT * FROM student LIMIT X,Y; #X ,Y X , Y
/** **/
/** : ,
。 。
, 。*/
CREATE TABLE employee(
num INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
d_id INT NULL, # (department)
name VARCHAR(20),
age INT ,
gender VARCHAR(20),
homeaddr VARCHAR(50)
)
INSERT INTO employee VALUES
(NULL, 1001, ' ', 26, ' ', ' '),
(NULL, 1001, ' ', 24, ' ', ' '),
(NULL, 1002, ' ', 25, ' ', ' '),
(NULL, 1004, 'Aric', 15, ' ', 'England');
CREATE TABLE department(
d_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
d_name VARCHAR(20) NOT NULL,
function VARCHAR(50),
address VARCHAR(50)
)
CREATE TABLE worker(
id INT PRIMARY KEY AUTO_INCREMENT,
num INT(10), #
d_id INT(50), # ( )
name VARCHAR(20), #
gender VARCHAR(10), #
birthday DATE, #
address VARCHAR(50), #
FOREIGN KEY(d_id) REFERENCES department(d_id)
)
INSERT INTO department VALUES(1004, ' ', ' ', '2 3 ');
INSERT INTO employee VALUES(NULL, 1003, ' ', 28, ' ', ' ');
INSERT INTO employee VALUES(NULL, 1006, ' ', 22, ' ', ' ');
/** */
/** : 。 ,
。 , */
SELECT num AS ' ID',name,age,gender,homeaddr,d_name,function,address FROM employee,department
WHERE employee.d_id=department.d_id;
/** */
/** : 。 。
, 。 , 。
。*/
/** :
SELECT
FROM 1( ) LEFT|RIGHT JOIN 2( )
ON 1. 1 = 2. 2;
*/
SELECT num, name, employee.d_id,age,gender, d_name, function
FROM employee LEFT JOIN department
ON employee.d_id=department.d_id;
SELECT num, name, employee.d_id,age,gender, d_name, function
FROM employee RIGHT JOIN department
ON employee.d_id=department.d_id;
CREATE TABLE performance(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
e_num INT(10) NOT NULL UNIQUE,
performance FLOAT NOT NULL DEFAULT 0
) DEFAULT CHARSET=utf8;
INSERT INTO performance VALUES
(NULL, 2, 2000),
(NULL, 1, 100),
(NULL, 3, 5000),
(NULL, 5, 8000),
(NULL, 6, 10000);
/** */
SELECT num, name, employee.d_id,age,gender, d_name, function, performance
FROM employee
LEFT JOIN department
ON employee.d_id=department.d_id
LEFT JOIN performance
ON employee.num=performance.id;
/** */
SELECT num,name,employee.d_id,age,gender,d_name,function
FROM employee,department
WHERE employee.d_id=department.d_id
AND age>=1
ORDER BY age DESC;
/** */
/** : 。
, 。
IN、NOT IN、ANY、ALL、EXISTS、NOT EXISTS 。
, '='、'!='、'>' '<' 。 */
SELECT * FROM employee
WHERE d_id IN(SELECT d_id FROM department); /**IN */
CREATE TABLE computer_stu(
id INT PRIMARY KEY,
name VARCHAR(20),
score FLOAT
) DEFAULT CHARSET=utf8;
INSERT INTO computer_stu VALUES(1001, 'lILY', 85);
INSERT INTO computer_stu VALUES(1002, 'Tom', 91);
INSERT INTO computer_stu VALUES(1003, 'Jim', 87);
INSERT INTO computer_stu VALUES(1004, 'Aric', 77);
INSERT INTO computer_stu VALUES(1005, 'Lucy', 65);
INSERT INTO computer_stu VALUES(1006, 'Andy', 99);
INSERT INTO computer_stu VALUES(1007, 'Ada', 85);
INSERT INTO computer_stu VALUES(1008, 'jeck', 70);
CREATE TABLE scholarship(
level INT PRIMARY KEY,
score INT
) DEFAULT CHARSET=utf8;
INSERT INTO scholarship VALUES(1, 90);
INSERT INTO scholarship VALUES(2, 80);
INSERT INTO scholarship VALUES(3, 70);
/** computer_stu 、 */
SELECT com.id,com.name,com.score FROM computer_stu as com
WHERE score>=(SELECT score FROM scholarship WHERE level=1);
/** department 24 */
SELECT dep.d_name FROM department as dep
WHERE dep.d_id IN(SELECT emp.d_id FROM employee as emp WHERE emp.age!=24);
/**EXISTS */
/** :EXISTS 。 EXISTS , 。
。 , (TRUE)。
, (FALSE)。 , 。 ,
*/
/** department d_id 1003 , employee */
SELECT * FROM employee
WHERE EXISTS(SELECT * FROM department WHERE d_id=1003);
/** department d_id 1003 , employee age 24 */
SELECT * FROM employee as emp
WHERE emp.age>0 AND EXISTS (SELECT * FROM department WHERE d_id=1003);
/**ANY */
/** :ANY 。 ANY , ,
*/
/** computer_stu 。 scholarship */
SELECT * FROM computer_stu as coms
WHERE coms.score>= ANY(SELECT score FROM scholarship) ORDER BY score DESC;
/**ALL */
/** :ALL 。 ALL , ,
*/
/** */
SELECT * FROM computer_stu as coms
WHERE coms.score>=ALL(SELECT score FROM scholarship)
/**UNION */
/** SELECT 。
, SELECT */
/** ??????*/
/***REPLACE */
/*** : INSERT , ( PRIMARYT KEY UNIQUE ) 。
REPLACE INTO */
/***ps: ??? UPDATE */
INSERT INTO product VALUES
(1005, ' 1 ', ' ', 'DD ', ' ');
REPLACE INTO product VALUES
(1005, ' 1 _replace', ' ', 'DD ', ' ');
/*** 1: (AUTO_INCREMENT) ??*/
/*** : INSERT 。 INSERT NULL/
/** Mysql( )*/
mysql -h(IP) -u( ) -p( )
/** mysql
: mysqlbin
*/
mysqladmin -u -p password
/** */
/*1. PC */
grant update,select,insert,delete on *.* to zyy1@"%" identified by "zyy1";
grant all on *.* to zyy2@"%" identified by "zyy2";
grant update,select,insert on *.* to zyy3@"%" identified by "zyy3";
/*2. PC db */
grant update,select,insert,delete on db.* to zyy4@localhost identified by "zyy4";
/**
: bin
*/
mysqldump -hlocalhost -uroot -p123456 db>C:\\db.sql
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
/* MySQL */
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
/* MySQL
MySQL , 。
*/
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
/* MySQL */
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
/* MySQL ( ) */
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
/* MySQL */
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
/* */
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
/* */
mysqldump –all-databases > allbackupfile.sql
/* MySQL */
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
/* MySQL */
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
/* */
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename
/*** : , 。
*/
/***
CREATE TABLE index_tbl_1 (
id INT,
name VARCHAR(20),
gender BOOLEAN,
INDEX(id)
);
*/
/** */
/**
* 。 。
。 , 。 。 ,
。 , 。
, 。
*/
/** :
1.
2.
3.
*/
/**
MySQL , SQL CREATE VIEW 。 :
CREATE [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW [( )]
AS SELECT
[WITH[CASCADED|LOCAL] CHECK OPTION];
ALGORITHM:
UNDEFINED, MySQL ;
MERGE, , ;
TEMPTABLE, , 。
CASCADED , , ;"LOCAL"
。
*/
/**
MySQL 。 department , department_view。
:
USE db;
CREATE VIEW department_view1
AS SELECT * FROM db.department;
DESC department_view;
:
CREATE VIEW department_view2(name, function,location)
AS SELECT d_name, function, address FROM db.department;
DESC department_view2;
*/
/**
MySQL , CREATE VIEW 。
department worker worker_view1 。
:
CREATE ALGORITHM=MERGE VIEW
worker_view1(name, department, gender, age, address)
AS SELECT name, department.d_name, gender, 2011-birthday, worker.address
FROM worker,department WHERE worker.d_id=department.d_id
WITH LOCAL CHECK OPTION;
*/
/**
。 SHOW VIEW ,mysql user
。 DESCRIBE 、SHOW TABLE STATUS 、SHOW CREATE VIEW
information_schema views
*/
/** : 。
1. sum()、count()、max()、min()
2. union、 union all、distinct、group by、having 。
3.
4. SELECT
5. 。
6. ,ALGORITHM TEMPTABLE 。
7. ,
: , , ,
。
*/
show TRIGGERS
/** */
/**
(TRIGGER) 。 INSERT 、UPDATE DELETE 。
, .
, .
*/
/** : : , +1, , */
/**
MySQL , :
CREATE TRIGGER BEFORE | AFTER
ON FOR EACH ROW
“ ” 。
“BEFORE” “AFTER” 。“BEFORE” 。“AFTER” 。
“ ” , INERT、UPDATE DELETE。
“ ” 。
“FOR EACH ROW” 。
“ ” 。
*/
/** */