MySql 5.1 數據庫腳本語言

說明:<1> 能夠以大小寫輸入關鍵詞。
<2> 能將mysql用作一個簡單的計算器。例如:SELECT SIN(PI()/4), (4+1)*5;
<3> mysql接受自由格式的輸入:它收集輸入行但直到看見分號才執行。
(1) 用戶操作
<1> 創建用戶:
CREATE USER 'vivian'@'localhost' IDENTIFIED BY '123456';

<2> 刪除用戶:
DROP USER 'vivian'@'localhost';

<3> 重命名用戶:
RENAME USER 'vivian'@'localhost' to 'liuhuifang'@'localhost';

<4> 密碼設置
SET PASSWORD FOR 'vivian'@'localhost' = PASSWORD('111111');

(2) 權限操作
<1> 授予權限:
GRANT ALL ON *.* TO 'vivian'@'localhost';(Global privileges)
GRANT ALL ON notebook.* TO 'vivian'@'localhost' WITH GRANT OPTION;(Database privileges,used often)
GRANT SELECT, INSERT ON notebook.t_city TO 'vivian'@'localhost';(Table privileges)
GRANT SELECT (city_name), INSERT (city_id,country_id) ON notebook.t_city TO 'vivian'@'localhost';(Column privileges)
GRANT CREATE ROUTINE ON notebook.* TO 'vivian'@'localhost';(Routine privileges)

<2> 撤銷權限:
REVOKE ALL ON *.* FROM 'vivian'@'localhost';(Global privileges)
REVOKE ALL ON notebook.*, GRANT OPTION FROM 'vivian'@'localhost' ;(Database privileges,used often)
REVOKE SELECT, INSERT ON notebook.t_city FROM 'vivian'@'localhost';(Table privileges)
REVOKE SELECT (city_name), INSERT (city_id,country_id) ON notebook.t_city FROM 'vivian'@'localhost';(Column privileges)
REVOKE CREATE ROUTINE ON notebook.* FROM 'vivian'@'localhost';(Routine privileges)

(3) 表空間操作
<1> 創建表空間:
CREATE TABLESPACE notebookspace
ADD DATAFILE 'notebook_file'
USE LOGFILE GROUP notebook_group
ENGINE 'InnoDB';
<2> 刪除表空間:
DROP TABLESPACE notebookspace
ENGINE 'InnoDB';

<3> 修改表空間:
ALTER TABLESPACE notebookspace
DROP DATAFILE 'notebook_file'
ENGINE 'InnoDB';

(4) 數據庫操作
說明:
查詢 CHARACTER SET:SHOW CHARACTER SET ;
查詢 COLLATION:SHOW COLLATION ;

<1> 創建數據庫:
CREATE DATABASE if not exists notebook;

<2> 刪除數據庫:
DROP DATABASE if exists notebook;

<3> 修改數據庫:
ALTER DATABASE notebook CHARACTER SET = utf8
COLLATE = utf8_general_ci;

(5) 表操作
說明:
查詢當前數據庫中表的信息:show tables;
查詢當前表結構:describe t_city;

<1> 創建表
CREATE TABLE t_city --城市表
(
city_id int NOT NULL,
country_id int NOT NULL,
city_name varchar(50),
city_temp_lo int, --最低氣溫
city_temp_hi int, --最高氣溫
city_prcp double(10,5), --降水量
city_date date,
CONSTRAINT t_city_pkey PRIMARY KEY (city_id)
)
and
CREATE TABLE t_country --國家表
(
country_id int NOT NULL,
country_name varchar(50),
CONSTRAINT t_country_pkey PRIMARY KEY (country_id)
)

<2> 刪除表
DROP TABLE t_city ;
DROP TABLE t_country ;

<3> 修改表
[1] 增加/刪除 列
增加列:ALTER TABLE t_city add city_date date;
刪除列:ALTER TABLE t_city drop city_date;

[2] 添加/刪除 外鍵約束
增加外鍵約束:
ALTER TABLE t_city add constraint t_country_fkey foreign key (country_id) references t_country(country_id);
刪除外鍵約束:
ALTER TABLE t_city drop foreign key t_country_fkey;

<4> 增,刪,改功能
增:
insert into t_country values (1,'China');
insert into t_country values (2,'USA');
insert into t_country values (3,'UK');
insert into t_city values(1,1,'BeiJing',12,24,5.1,'2009-12-01');
insert into t_city values(2,2,'NewYork',13,24,11.1,'2009-12-01');
insert into t_city values(3,3,'London',13,22,2.1,'2009-12-01');
刪:
delete from t_city where city_id = 2;
delete from t_country where country_id = 2;
改:
update t_city set city_prcp = city_prcp+1 where city_id=1;

<5> 查詢
[1] 一般查詢:
select * from t_city;
select city_name from t_city,t_country where t_city.country_id = t_country.country_id;
SELECT city_name, (city_temp_lo+city_temp_hi)/2 AS city_temp_avg, city_date FROM t_city order by city_name;

[2] 交叉連接:
SELECT * FROM t_city city CROSS JOIN t_country country;
SELECT * FROM t_city city CROSS JOIN t_country country where city.country_id = country.country_id;

[3] 條件連接:
內連接:
SELECT * FROM t_country t1 INNER JOIN t_city t2 ON t1.country_id = t2.country_id;
SELECT * FROM t_country t1 INNER JOIN t_city t2 using (country_id);

左外連接:
SELECT * FROM t_country t1 LEFT JOIN t_city t2 ON t1.country_id = t2.country_id;
SELECT * FROM t_country t1 LEFT JOIN t_city t2 using (country_id);
SELECT * FROM t_country t1 NATURAL LEFT JOIN t_city t2;

右外連接:
SELECT * FROM t_city t2 RIGHT JOIN t_country t1 ON t1.country_id = t2.country_id;
SELECT * FROM t_city t2 RIGHT JOIN t_country t1 using (country_id);
SELECT * FROM t_city t2 NATURAL RIGHT JOIN t_country t1;

[4] 嵌套查詢:
SELECT city_name,city_temp_lo FROM t_city WHERE city_temp_lo in (12,13,14);
SELECT city_name FROM t_city WHERE country_id in (select country_id from t_country);
SELECT city_name FROM t_city WHERE EXISTS (SELECT country_id FROM t_country WHERE country_id = t_city.country_id);

[5] GROUP BY 和 HAVING 子句:
SELECT city_name,city_date FROM t_city GROUP BY city_name,city_date;
SELECT city_name FROM t_city GROUP BY city_name;
SELECT city_name,sum(city_prcp) FROM t_city GROUP BY city_name having city_name = 'BeiJing';

[6] 組合查詢:
select country_name from t_country where country_id =1
union
select country_name from t_country where country_id =5
order by country_name limit 1;

[7] LIMIT 和 OFFSET:
select city_id,city_name from t_city order by city_id limit 2 offset 1 ;

(6) 視圖操作
<1> 創建視圖:
CREATE OR REPLACE VIEW v_cityName AS
SELECT city_name
FROM t_city;

<2> 刪除視圖:
DROP VIEW if exists v_cityName;

<3> 修改視圖:
ALTER VIEW v_cityName AS
SELECT t1.city_name,t2.country_name
FROM t_city t1,t_country t2
where t1.country_id = t2.country_id;

<3> 查詢視圖:
SELECT * FROM v_cityName;

(7) 函數和存儲過程操作
<1> 創建函數和存儲過程:
[1] CREATE PROCEDURE simpleproc (OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM t;
END

CALL simpleproc(@a);
SELECT @a;

[2] CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
RETURN CONCAT('Hello, ',s,'!');

SELECT hello('world');

<2> 刪除函數和存儲過程:
DROP PROCEDURE IF EXISTS simpleproc;
DROP FUNCTION IF EXISTS hello;

<3> 修改函數:
ALTER FUNCTION hello CONTAINS SQL;
ALTER FUNCTION hello SQL SECURITY DEFINER;

<4> 修改存儲過程:
ALTER PROCEDURE simpleproc CONTAINS SQL;
ALTER PROCEDURE simpleproc SQL SECURITY DEFINER;

(8) 觸發器操作
<1> 創建觸發器:
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);

CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;

INSERT INTO test1 VALUES
(1), (3), (1), (7), (1), (8), (4), (4);

<2> 刪除觸發器:
DROP TRIGGER IF EXISTS testref;

(9) 索引操作
<1> 創建索引:
CREATE INDEX cityID_idx ON t_city (city_id);
CREATE INDEX cityidname_idx ON t_city (city_id,city_name);

<2> 刪除索引:
DROP INDEX cityID_idx ON t_city;
DROP INDEX cityidname_idx ON t_city;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章