操作 MySQL
启动 MySQL
net start mysql
登录本机 MySQL 数据库
mysql -u root -p
获取服务器版本信息
SELECT VERSION( );
当前用户名
SELECT USER( );
操作数据库
列出所有数据库列表
SHOW DATABASES;
选择要操作的数据库
USE study_database;
当前数据库名
SELECT DATABASE( );
操作表
创建数据表
CREATE TABLE hero(
id_h INT NOT NULL AUTO_INCREMENT,
name_h VARCHAR(20) NOT NULL,
gender CHAR(2),
age INT,
type_h CHAR(4) NOT NULL,
money INT,
region VARCHAR(20) DEFAULT '王者峡谷',
PRIMARY KEY (id_h),
CONSTRAINT check_name_error UNIQUE (name_h),
CONSTRAINT check_gender_error CHECK (gender IN('男','女')),
CONSTRAINT check_age_error CHECK (age BETWEEN 10 AND 120),
CONSTRAINT check_type_error CHECK (type_h IN('刺客','坦克','战士','射手','法师','辅助'))
);
CREATE TABLE persons(
id_p INT NOT NULL AUTO_INCREMENT,
name_p VARCHAR(20) NOT NULL,
gender CHAR(2) NOT NULL,
PRIMARY KEY (id_p),
CONSTRAINT check_name_error UNIQUE (name_p),
CONSTRAINT check_gender CHECK(gender IN('男','女'))
);
CREATE TABLE orders(
id_o INT NOT NULL AUTO_INCREMENT,
id_h INT NOT NULL,
id_p INT NOT NULL,
PRIMARY KEY (id_o),
FOREIGN KEY (id_h) REFERENCES hero(id_h),
FOREIGN KEY (id_p) REFERENCES persons(id_p)
);
删除 hero 表
DROP TABLE hero;
增加一列
ALTER TABLE persons ADD COLUMN like_h INT;
删除一列
ALTER TABLE persons DROP COLUMN like_h;
添加外键
ALTER TABLE persons ADD FOREIGN KEY (like_h) REFERENCES hero(id_h);
备份表
CREATE TABLE hero_new AS SELECT * FROM hero;
CREATE TABLE hero_new2 AS SELECT name_h,type_h FROM hero;
增
INSERT INTO hero(name_h,gender,age,type_h,money,region) VALUES('吕布','男',28,'战士',18888,'三国');
INSERT INTO hero(name_h,gender,age,type_h,money,region) VALUES
('貂蝉','女',22,'法师',13888,'三国'),
('后羿','男',110,'射手',6888,'神话'),
('项羽','男',40,'坦克',7888,'楚汉'),
('刘邦','男',22,'坦克',13888,'楚汉'),
('嬴政','男',28,'法师',18888,'秦朝'),
('小乔','女',20,'法师',7888,'三国'),
('蔡文姬','女',13,'辅助',13888,'三国'),
('孙悟空','男',22,'刺客',18888,'神话'),
('李白','男',24,'刺客',18888,'唐朝');
INSERT INTO hero(name_h,type_h,region) VALUES
('狄仁杰','射手','唐朝'),
('孙策','战士','三国'),
('马可波罗','射手','歪果仁'),
('宫本武藏','战士','日本'),
('橘右京','战士','SNK');
INSERT INTO hero(name_h,gender,age,type_h,money) VALUES('英雄1号','男',10,'辅助',0);
INSERT INTO persons(name_p,gender) VALUES
('小波','男'),
('安安','女'),
('小鱼','男'),
('老刀','男'),
('逍遥','男'),
('渡边','男'),
('福丫','女'),
('马田','男'),
('心如','女');
INSERT INTO orders(id_h,id_p) VALUES
(1,5),(2,1),(3,3),(4,4),(5,4),(6,3),(3,6),
(2,7),(2,8),(2,5),(4,6),(4,7),(9,3),(1,6),
(1,3),(2,6),(12,2),(10,3),(12,3),(11,4),(4,2);
删
删除所有数据
DELETE FROM hero;
根据条件删除
DELETE FROM hero WHERE name_h = '英雄1号';
改
UPDATE hero SET money = 18888 WHERE name_h = '宫本武藏';
UPDATE hero SET
name_h = '大乔',gender = '女',age = 21,type_h = '辅助',money = 8888,region = '三国'
WHERE name_h = '英雄1号';
查
查询所有数据
SELECT * FROM hero;
查询部分字段
SELECT name_h,money FROM hero;
SELECT name_h,money FROM hero WHERE money>10000;
SELECT name_h,money,type_h FROM hero WHERE type_h = '战士' OR type_h = '法师';
SELECT name_h,money,type_h FROM hero WHERE type_h IN('战士','法师');
排序
SELECT name_h,money,type_h FROM hero WHERE type_h IN('战士','法师') ORDER BY money;
SELECT name_h,money,type_h FROM hero WHERE type_h IN('战士','法师') ORDER BY money ASC;
SELECT name_h,money,type_h FROM hero WHERE type_h IN('战士','法师') ORDER BY money DESC;
选取唯一不同的值
SELECT DISTINCT type_h FROM hero;
Where 子句中的运算符
SELECT name_h,money FROM hero WHERE money = 13888;
SELECT name_h,money FROM hero WHERE money <> 13888 ORDER BY money;
SELECT name_h,money FROM hero WHERE money < 13888 ORDER BY money;
SELECT name_h,money FROM hero WHERE money >= 13888 ORDER BY money;
SELECT name_h,region FROM hero WHERE region IN('神话','楚汉');
SELECT name_h,region FROM hero WHERE region NOT IN('神话','楚汉');
查询两个数值之间的数据
SELECT name_h,money FROM hero WHERE money BETWEEN 13888 AND 18888 ORDER BY money;
通配符
SELECT name_h,region FROM hero WHERE region LIKE '三%';
SELECT name_h,region FROM hero WHERE region LIKE '三_';
SELECT name_h,region FROM hero WHERE region RLIKE '^[神楚]';
SELECT name_h,region FROM hero WHERE region NOT RLIKE '^[神楚]';
SELECT name_h,region FROM hero WHERE region RLIKE '^[A-Z]';
SELECT name_h,region FROM hero WHERE region NOT RLIKE '^[A-Z]';
查询指定数量数据
SELECT * FROM hero LIMIT 10;
SELECT * FROM hero ORDER BY id_h DESC LIMIT 10 ;
别名
SELECT name_h AS 名称,money AS 出售金币 FROM hero;
SELECT name_h AS 名称,money AS 出售金币,type_h AS 位置 FROM hero WHERE type_h = '战士';
SELECT h.name_h,h.gender,h.age,h.type_h,h.money,h.region FROM hero AS h;
根据外键 like_h 表查询 person 喜欢使用的英雄
SELECT name_p,name_h FROM hero,persons WHERE hero.id_h = persons.like_h;
JOIN
- INNER JOIN
如果表中有至少一个匹配,则返回行
SELECT name_p,name_h FROM hero INNER JOIN persons ON hero.id_h = persons.like_h;
- LEFT JOIN
即使右表中没有匹配,也从左表返回所有的行
SELECT name_p,name_h FROM persons LEFT JOIN hero ON hero.id_h = persons.like_h;
- RIGHT JOIN
即使左表中没有匹配,也从右表返回所有的行
SELECT name_p,name_h FROM persons RIGHT JOIN hero ON hero.id_h = persons.like_h;
合并两个或多个 select 语句的结果
必须相似数据类型,数量一致
- 默认选取不同的值
SELECT name_p FROM persons
UNION
SELECT name_h FROM hero;
- 如果允许重复的值,使用 UNION ALL
SELECT name_p FROM persons
UNION
SELECT name_h FROM hero;
分组查询
SELECT region,COUNT(*) FROM hero GROUP BY region ORDER BY COUNT(*);
函数
返回数值列的平均值
SELECT AVG(money) FROM hero;
SELECT AVG(money) AS 平均价格 FROM hero;
/** 返回大于平均值的内容 **/
SELECT name_h,money FROM hero WHERE money>(SELECT AVG(money) FROM hero);
返回数量
/** 返回总数目 **/
SELECT COUNT(*) FROM hero;
/** 返回总数目(NULL不计入)**/
SELECT COUNT(age) FROM hero;
SELECT COUNT(money) FROM hero;
/** 返回不同值数目 **/
SELECT COUNT(DISTINCT money) FROM hero;
SELECT DISTINCT money FROM hero ORDER BY money;
返回一列最大值
SELECT MAX(money) AS max_value FROM hero;
返回一列最小值
SELECT MIN(money) FROM hero;
返回数值列的总数
SELECT SUM(money) FROM hero;
SELECT region,SUM(money) FROM hero GROUP BY region;
SELECT region,SUM(money) FROM hero GROUP BY region HAVING SUM(money)<35000;
SELECT region,SUM(money) FROM hero WHERE region = '王者峡谷' OR region = '秦朝' GROUP BY region HAVING SUM(money) > 10000;
转换大小写
SELECT UCASE(name_p) FROM persons ORDER BY id_p DESC;//大写
SELECT LCASE(name_P) FROM persons ORDER BY id_p DESC;//小写
从文本中提取字符串
/** 从name_h列中从第1个位置取1个值**/
SELECT name_h,MID(name_h,1,1) FROM hero;
/** 从name_h列中从第2个位置取2个值**/
SELECT name_h,MID(name_h,2,2) FROM hero;
SELECT name_h,MID(name_h,2,3) FROM hero;
返回字符串长度
/** 一个中文算3个字符? **/
SELECT name_p,LENGTH(name_p) FROM persons;
四舍五入为指定的小数位数
CREATE TABLE testfloat(
price FLOAT NOT NULL
);
INSERT INTO testfloat VALUES (10.6);
INSERT INTO testfloat VALUES (10.12);
INSERT INTO testfloat VALUES (10.123);
INSERT INTO testfloat VALUES (10.1234);
INSERT INTO testfloat VALUES (10.12345);
INSERT INTO testfloat VALUES (10.123456);
INSERT INTO testfloat VALUES (10.1234567);
/** 整数不会显示出小数点 .000000000 **/
SELECT money,ROUND(money,10) FROM hero;
/** 保留几位小数 **/
SELECT price,ROUND(price,0) FROM testfloat;
SELECT price,ROUND(price,1) FROM testfloat;
SELECT price,ROUND(price,2) FROM testfloat;
SELECT price,ROUND(price,3) FROM testfloat;
返回当前系统的日期和时间
SELECT *,NOW() AS 查询时间 FROM persons;
遇到的问题(执行失败)
- FULL JOIN:只要其中一个表中存在匹配,则返回行
SELECT name_p,name_h FROM persons FULL OUTER JOIN hero ON hero.id_h = persons.like_h;
SHOW DATABASES;
USE study_database;
CREATE TABLE hero(
id_h INT NOT NULL AUTO_INCREMENT,
name_h VARCHAR(20) NOT NULL,
gender CHAR(2),
age INT,
type_h CHAR(4) NOT NULL,
money INT,
region VARCHAR(20) DEFAULT '王者峡谷',
PRIMARY KEY (id_h),
CONSTRAINT check_name_error UNIQUE (name_h),
CONSTRAINT check_gender_error CHECK (gender IN('男','女')),
CONSTRAINT check_age_error CHECK (age BETWEEN 10 AND 120),
CONSTRAINT check_type_error CHECK (type_h IN('刺客','坦克','战士','射手','法师','辅助'))
);
INSERT INTO hero(name_h,gender,age,type_h,money,region) VALUES('吕布','男',28,'战士',18888,'三国');
INSERT INTO hero(name_h,gender,age,type_h,money,region) VALUES
('貂蝉','女',22,'法师',13888,'三国'),
('后羿','男',110,'射手',6888,'神话'),
('项羽','男',40,'坦克',7888,'楚汉'),
('刘邦','男',22,'坦克',13888,'楚汉'),
('嬴政','男',28,'法师',18888,'秦朝'),
('小乔','女',20,'法师',7888,'三国'),
('蔡文姬','女',13,'辅助',13888,'三国'),
('孙悟空','男',22,'刺客',18888,'神话'),
('李白','男',24,'刺客',18888,'唐朝');
INSERT INTO hero(name_h,type_h,region) VALUES
('狄仁杰','射手','唐朝'),
('孙策','战士','三国'),
('马可波罗','射手','歪果仁'),
('宫本武藏','战士','日本'),
('橘右京','战士','SNK');
UPDATE hero SET money = 18888 WHERE name_h = '宫本武藏';
DROP TABLE hero;
SELECT * FROM hero;
SELECT name_h,money FROM hero;
SELECT name_h AS 名称,money AS 出售金币 FROM hero;
SELECT name_h AS 名称,money AS 出售金币,type_h AS 位置 FROM hero WHERE type_h = '战士';
SELECT name_h,money FROM hero WHERE money>10000;
SELECT name_h,money,type_h FROM hero WHERE type_h = '战士' AND money > 10000;
SELECT name_h,money,type_h FROM hero WHERE type_h = '战士' OR type_h = '法师';
SELECT name_h,money,type_h FROM hero WHERE type_h IN('战士','法师');
SELECT name_h,money,type_h FROM hero WHERE type_h IN('战士','法师') ORDER BY money;
SELECT name_h,money,type_h FROM hero WHERE type_h IN('战士','法师') ORDER BY money ASC;
SELECT name_h,money,type_h FROM hero WHERE type_h IN('战士','法师') ORDER BY money DESC;
SELECT DISTINCT type_h FROM hero;
SELECT name_h,money FROM hero WHERE money = 13888;
SELECT name_h,money FROM hero WHERE money <> 13888 ORDER BY money;
SELECT name_h,money FROM hero WHERE money < 13888 ORDER BY money;
SELECT name_h,money FROM hero WHERE money >= 13888 ORDER BY money;
SELECT name_h,money FROM hero WHERE money BETWEEN 13888 AND 18888 ORDER BY money;
SELECT name_h,region FROM hero WHERE region LIKE '三%';
SELECT name_h,region FROM hero WHERE region LIKE '三_';
SELECT name_h,region FROM hero WHERE region RLIKE '^[神楚]';
SELECT name_h,region FROM hero WHERE region NOT RLIKE '^[神楚]';
SELECT name_h,region FROM hero WHERE region RLIKE '^[A-Z]';
SELECT name_h,region FROM hero WHERE region NOT RLIKE '^[A-Z]';
SELECT name_h,region FROM hero WHERE region IN('神话','楚汉');
SELECT name_h,region FROM hero WHERE region NOT IN('神话','楚汉');
INSERT INTO hero(name_h,gender,age,type_h,money) VALUES('英雄1号','男',10,'辅助',0);
DELETE FROM hero WHERE name_h = '英雄1号';
UPDATE hero SET
name_h = '大乔',gender = '女',age = 21,type_h = '辅助',money = 8888,region = '三国'
WHERE name_h = '英雄1号';
DELETE FROM hero;
SELECT * FROM hero LIMIT 10;
SELECT * FROM hero ORDER BY id_h DESC LIMIT 10 ;
SELECT h.name_h,h.gender,h.age,h.type_h,h.money,h.region FROM hero AS h;
CREATE TABLE persons(
id_p INT NOT NULL AUTO_INCREMENT,
name_p VARCHAR(20) NOT NULL,
gender CHAR(2) NOT NULL,
PRIMARY KEY (id_p),
CONSTRAINT check_name_error UNIQUE (name_p),
CONSTRAINT check_gender CHECK(gender IN('男','女'))
);
INSERT INTO persons(name_p,gender) VALUES
('小波','男'),
('安安','女'),
('小鱼','男'),
('老刀','男'),
('逍遥','男'),
('渡边','男'),
('福丫','女'),
('马田','男'),
('心如','女');
SELECT * FROM persons;
CREATE TABLE orders(
id_o INT NOT NULL AUTO_INCREMENT,
id_h INT NOT NULL,
id_p INT NOT NULL,
PRIMARY KEY (id_o),
FOREIGN KEY (id_h) REFERENCES hero(id_h),
FOREIGN KEY (id_p) REFERENCES persons(id_p)
);
INSERT INTO orders(id_h,id_p) VALUES
(1,5),(2,1),(3,3),(4,4),(5,4),(6,3),(3,6),
(2,7),(2,8),(2,5),(4,6),(4,7),(9,3),(1,6),
(1,3),(2,6),(12,2),(10,3),(12,3),(11,4),(4,2);
SELECT COUNT(*) FROM hero;
SELECT COUNT(*) FROM persons;
SELECT * FROM orders;
DROP TABLE orders;
SELECT * FROM hero;
SELECT * FROM persons;
SELECT * FROM orders;
SELECT h.name_h,h.type_h,h.money,p.name_p
FROM hero AS h,persons AS p,orders AS o
WHERE o.id_h = h.id_h AND o.id_p = p.id_p;
SELECT hero.name_h,persons.name_p FROM hero,persons INNER JOIN orders WHERE orders.id_h = hero.id_h AND orders.id_p = persons.id_p;
ALTER TABLE persons ADD COLUMN like_h INT;
ALTER TABLE persons ADD FOREIGN KEY (like_h) REFERENCES hero(id_h);
USE study_database;
SELECT name_p,name_h FROM hero,persons WHERE hero.id_h = persons.like_h;
SELECT name_p,name_h FROM hero INNER JOIN persons ON hero.id_h = persons.like_h;
SELECT name_p,name_h FROM persons LEFT JOIN hero ON hero.id_h = persons.like_h;
SELECT name_p,name_h FROM persons RIGHT JOIN hero ON hero.id_h = persons.like_h;
SELECT name_p,name_h FROM persons FULL OUTER JOIN hero ON hero.id_h = persons.like_h;
SELECT name_p FROM persons
UNION ALL
SELECT name_h FROM hero;
CREATE TABLE hero_new AS SELECT * FROM hero;
CREATE TABLE hero_new2 AS SELECT name_h,type_h FROM hero;
SELECT * FROM hero_new2;
ALTER TABLE hero ADD COLUMN test INT;
ALTER TABLE hero ADD FOREIGN KEY (test) REFERENCES persons(id_p);
ALTER TABLE hero DROP FOREIGN KEY test;
ALTER TABLE hero DROP COLUMN test;
SELECT * FROM persons;
ALTER TABLE persons ADD COLUMN test INT;
ALTER TABLE persons DROP COLUMN test;
SELECT COUNT(*) FROM hero;
SELECT *,NOW() AS 查询时间 FROM persons;
/** 返回平均值 **/
SELECT AVG(money) FROM hero;
SELECT AVG(money) AS 平均价格 FROM hero;
/** 返回大于平均值的内容 **/
SELECT name_h,money FROM hero WHERE money>(SELECT AVG(money) FROM hero);
/** 返回总数目 **/
SELECT COUNT(*) FROM hero;
/** 返回总数目(NULL不计入)**/
SELECT COUNT(age) FROM hero;
SELECT COUNT(money) FROM hero;
/** 返回不同值数目 **/
SELECT COUNT(DISTINCT money) FROM hero;
SELECT DISTINCT money FROM hero ORDER BY money;
/** 返回一列中最大值 **/
SELECT MAX(money) AS max_value FROM hero;
SELECT MIN(money) FROM hero;
SELECT SUM(money) FROM hero;
SELECT region,SUM(money) FROM hero GROUP BY region;
SELECT region,SUM(money) FROM hero GROUP BY region HAVING SUM(money)<35000;
SELECT region,SUM(money) FROM hero WHERE region = '王者峡谷' OR region = '秦朝' GROUP BY region HAVING SUM(money) > 10000;
INSERT INTO persons(name_p,gender) VALUES ('ABCD','女');
SELECT UCASE(name_p) FROM persons ORDER BY id_p DESC;
SELECT LCASE(name_P) FROM persons ORDER BY id_p DESC;
/** 从name_h列中从第1个位置取1个值**/
SELECT name_h,MID(name_h,1,1) FROM hero;
/** 从name_h列中从第2个位置取2个值**/
SELECT name_h,MID(name_h,2,2) FROM hero;
SELECT name_h,MID(name_h,2,3) FROM hero;
SELECT name_h,LENGTH(name_h) FROM hero;
SHOW DATABASES;
CREATE DATABASE testCreate;
USE arrange;
CREATE TABLE persons(
id_p INT NOT NULL AUTO_INCREMENT,
name_p VARCHAR(10) NOT NULL,
gender VARCHAR(1) NOT NULL,
age INT,
email VARCHAR(255),
city VARCHAR(20),
PRIMARY KEY (id_p)
);
INSERT INTO persons(name_p,gender,age,email,city) VALUES ('小波','男',18,'xiaobo@163.com','运城');
INSERT INTO persons(name_p,gender,age,email,city) VALUES ('安安','女',19,'anan@163.com','岳阳');
INSERT INTO persons(persons.name_p,persons.gender,persons.age) VALUES ('小鱼','男',20);
INSERT INTO persons(persons.name_p,persons.gender,persons.city) VALUES ('逍遥','男','大理');
INSERT INTO persons(persons.name_p,persons.gender,persons.email) VALUES ('老刀','男','laodao@163.com');
INSERT INTO persons(name_p,gender,age,city) VALUES ('安安','女',20,'岳阳');
INSERT INTO persons(name_p,gender,age,city) VALUES ('小鱼','男',23,'揭阳');
INSERT INTO persons(name_p,gender,age,city) VALUES ('小鱼','男',19,'汕头');
INSERT INTO persons(name_p,gender,age,city) VALUES ('小鱼','男',20,'汕尾');
INSERT INTO persons(name_p,gender) VALUES ('渡边','男');
INSERT INTO persons(name_p,gender) VALUES ('马田','男');
INSERT INTO persons(name_p,gender) VALUES ('福丫','女');
INSERT INTO persons(name_p,gender) VALUES ('jack','男');
INSERT INTO persons(name_p,gender) VALUES ('teddy','男');
INSERT INTO persons(name_p,gender) VALUES ('abby','女');
INSERT INTO persons(name_p,gender) VALUES ('cara','女');
INSERT INTO persons(name_p,gender) VALUES ('男一号','男');
INSERT INTO persons(name_p,gender) VALUES ('女一号','男');
INSERT INTO persons(name_p,gender) VALUES ('男二号','男');
INSERT INTO persons(name_p,gender) VALUES ('女二号','女');
SELECT * FROM persons;
SELECT name_p,gender FROM persons;
SELECT name_p,gender FROM persons WHERE gender = '女';
SELECT * FROM persons WHERE name_p = '小鱼';
SELECT DISTINCT name_p FROM persons;
SELECT * FROM persons WHERE age = 20;
SELECT * FROM persons WHERE age<>20;
SELECT * FROM persons WHERE age >=20;
SELECT * FROM persons WHERE age BETWEEN 19 AND 20 ORDER BY age;
SELECT * FROM persons WHERE age NOT BETWEEN 19 AND 20 ORDER BY age;
SELECT * FROM persons WHERE name_p LIKE '小%';
SELECT * FROM persons WHERE name_p LIKE '%鱼';
SELECT * FROM persons WHERE email LIKE '%@163%';
SELECT * FROM persons WHERE email LIKE '%@qq%';
SELECT * FROM persons WHERE name_p LIKE '小_';
SELECT * FROM persons WHERE name_p LIKE '[ac]%';/** 查找不出来 **/
SELECT * FROM persons WHERE name_p RLIKE '^[ac]';
SELECT * FROM persons WHERE name_p RLIKE '^[小安]';
SELECT * FROM persons WHERE name_p LIKE 'a%' OR name_p LIKE 'c%';
SELECT * FROM persons WHERE name_p = '小鱼' AND city = '汕头';
SELECT * FROM persons WHERE name_p = '逍遥' OR name_p = '老刀';
SELECT name_p,age FROM persons ORDER BY age;
SELECT * FROM persons ORDER BY age DESC;
SELECT * FROM persons ORDER BY id_p DESC;
SELECT * FROM persons LIMIT 5;
SELECT * FROM persons WHERE age IN (18,20);
SELECT * FROM persons WHERE name_p IN ('逍遥','老刀');
UPDATE persons SET email = 'dubian@163.com' WHERE name_p = '渡边';
UPDATE persons SET email = 'matian@163.com' WHERE name_p = '马田';
UPDATE persons SET email = 'fuya@163.com' WHERE name_p = '福丫';
UPDATE persons SET email = 'xiaoyu_shantou' WHERE name_p = '小鱼' AND city = '汕头';
UPDATE persons SET email = 'xiaoyu_jieyang' WHERE name_p = '小鱼' AND city = '揭阳';
UPDATE persons SET email = 'xiaoyu_shantou@163.com' WHERE name_p = '小鱼' AND email = 'xiaoyu_shantou';
UPDATE persons SET email = 'xiaoyu_jieyang@163.com' WHERE name_p = '小鱼' AND email = 'xiaoyu_jieyang';
UPDATE persons SET email = 'dubian@qq.com' WHERE name_p = '渡边';
UPDATE persons SET email = 'matian@qq.com' WHERE name_p = '马田';
UPDATE persons SET email = 'fuya@qq.com' WHERE name_p = '福丫';
DELETE FROM persons;
DELETE FROM persons WHERE name_p = '男一号';
CREATE TABLE orders(
id_o INT NOT NULL AUTO_INCREMENT,
name_o VARCHAR(20) NOT NULL,
gender VARCHAR(1),
money INT,
region VARCHAR(20),
PRIMARY KEY (id_o)
);
ALTER TABLE orders ADD COLUMN id_p INT NOT NULL;
INSERT INTO orders(name_o,gender,money,id_p) VALUES ('李白','男',88,1);
INSERT INTO orders(name_o,gender,money,region,id_p) VALUES ('吕布','男',78,'三国',1);
INSERT INTO orders(name_o,gender,money,region,id_p) VALUES ('貂蝉','女',168,'三国',1);
INSERT INTO orders(name_o,gender,money,id_p) VALUES ('狂铁','男',68,4);
INSERT INTO orders(name_o,gender,money,id_p) VALUES ('兰陵王','男',128,2);
INSERT INTO orders(name_o,gender,money,id_p) VALUES ('后羿','男',228,2);
INSERT INTO orders(name_o,gender,money,id_p) VALUES ('测试应用','男',228,-1);
INSERT INTO orders(name_o,gender,money,id_p) VALUES ('测试 CHECK 报错','男',228,0);
UPDATE orders SET region = '神话' WHERE name_o = '后羿';
DELETE FROM orders WHERE name_o = '后羿' AND id_p = '0';
SELECT * FROM orders;
DROP TABLE orders;
ALTER TABLE orders ADD CONSTRAINT check_idP_error CHECK (id_p > 0);
SELECT o.name_o,o.money,p.name_p FROM persons AS p,orders AS o WHERE o.id_p = p.id_p;
SELECT o.name_o,o.money,p.name_p FROM persons AS p,orders AS o WHERE o.id_p = p.id_p AND o.money > 100;
SELECT orders.name_o,orders.money,persons.name_p FROM persons INNER JOIN orders ON persons.id_p = orders.id_p ORDER BY money;
SELECT orders.name_o,orders.money,persons.name_p FROM persons INNER JOIN orders ON persons.id_p = orders.id_p AND orders.money < 100 ORDER BY money;
SELECT p.name_p,orders.name_o FROM persons AS p LEFT JOIN orders ON p.id_p = orders.id_p;
SELECT o.name_o,p.name_p FROM orders AS o RIGHT JOIN persons AS p ON p.id_p = o.id_p;
SELECT o.name_o,p.name_p FROM orders AS o INNER JOIN persons AS p ON p.id_p = o.id_p;
SELECT o.name_o,p.name_p FROM orders AS o LEFT JOIN persons AS p ON p.id_p = o.id_p
UNION
SELECT o.name_o,p.name_p FROM orders AS o RIGHT JOIN persons AS p ON p.id_p = o.id_p;
SELECT o.name_o,p.name_p FROM orders AS o OUTER JOIN persons AS p ON p.id_p = o.id_p;
SELECT * FROM persons UNION SELECT * FROM orders;
SELECT id_p FROM persons UNION SELECT id_o FROM orders;
SELECT name_p,gender FROM persons
UNION
SELECT name_o,gender FROM orders;
SELECT name_p,gender FROM persons
UNION ALL
SELECT name_o,gender FROM orders;
SELECT name_p,gender,city FROM persons
UNION
SELECT name_o,gender,region FROM orders;
CREATE TABLE hero(
id_h INT NOT NULL AUTO_INCREMENT,
name_h VARCHAR(255) NOT NULL,
gender VARCHAR(1),
age INT,
region VARCHAR(20) DEFAULT '王者峡谷',
money INT NOT NULL,
PRIMARY KEY (id_h),
CONSTRAINT check_name_error UNIQUE(name_h),
CONSTRAINT check_gender_error CHECK (gender = '男' OR gender = '女'),
CONSTRAINT check_age_error CHECK (age>5 AND age<120),
CONSTRAINT check_money_error CHECK (money>=288 AND money<=18888)
);
ALTER TABLE hero DROP PRIMARY KEY;/** 有问题 **/
ALTER TABLE hero DROP INDEX check_name_error;
ALTER TABLE hero ADD CONSTRAINT check_name_error UNIQUE (name_h);
ALTER TABLE hero DROP INDEX check_age_error;/** 有问题 **/
ALTER TABLE hero ADD CONSTRAINT check_age_error CHECK (age>5 AND age < 120);
INSERT INTO hero(name_h,gender,age,region,money) VALUES ('李白','男',24,'唐朝',18888);
INSERT INTO hero(name_h,region,money) VALUES ('后羿','神话',6888);
INSERT INTO hero(name_h,money) VALUES ('狂铁',13888);
INSERT INTO hero(name_h,gender,region,money) VALUES ('貂蝉','女','三国',13888);
INSERT INTO hero(name_h,gender,region,age,money) VALUES ('宫本武藏','男','日本',38,18888);
INSERT INTO hero(name_h,gender,age,region,money) VALUES ('吕布','男',28,'三国',18888);
INSERT INTO hero(name_h,gender,age,region,money) VALUES ('武则天','女',25,'唐朝',18888);
INSERT INTO hero(name_h,gender,region,money) VALUES ('嬴政','男','秦朝',788);
INSERT INTO hero(name_h,gender,region,age,money) VALUES ('橘右京','男','日本',28,12888);
INSERT INTO hero(name_h,age,money) VALUES ('鲁班',10,2888);
INSERT INTO hero(name_h,gender,money) VALUES ('上官婉儿','女',5888);
INSERT INTO hero(name_h,gender,age,money) VALUES ('马可波罗','男',30,13888);
INSERT INTO hero(name_h,gender,age,money) VALUES ('狄仁杰','男',23,5888);
INSERT INTO hero(id_h,name_h,gender,age,money) VALUES (14,'伽罗','女',25,13888);
INSERT INTO hero(name_h,gender,money) VALUES ('元歌','男',13888);
INSERT INTO hero(name_h,gender,money) VALUES ('露娜','女',13888);
INSERT INTO hero(name_h,gender,money) VALUES ('百里玄策','男',13888);
ALTER TABLE hero ADD COLUMN money INT NOT NULL;
UPDATE hero SET money = 7888 WHERE name_h = '嬴政';
SELECT * FROM hero;
DELETE FROM hero;
DROP TABLE hero;
CREATE TABLE history(
id_t INT NOT NULL AUTO_INCREMENT,
id_h INT NOT NULL,
id_p INT NOT NULL,
PRIMARY KEY (id_t),
FOREIGN KEY (id_h) REFERENCES hero(id_h),
FOREIGN KEY (id_p) REFERENCES persons(id_p)
);
INSERT INTO history(id_h,id_p) VALUES (8,2);
INSERT INTO history(id_h,id_p) VALUES (1,1);
INSERT INTO history(id_h,id_p) VALUES (3,2);
INSERT INTO history(id_h,id_p) VALUES (11,2);
INSERT INTO history(id_h,id_p) VALUES (2,5);
INSERT INTO history(id_h,id_p) VALUES (6,5);
INSERT INTO history(id_h,id_p) VALUES (9,3);
INSERT INTO history(id_h,id_p) VALUES (4,4);
INSERT INTO history(id_h,id_p) VALUES (6,3);
INSERT INTO history(id_h,id_p) VALUES (5,4);
INSERT INTO history(id_h,id_p) VALUES (7,1);
INSERT INTO history(id_h,id_p) VALUES (5,1);
INSERT INTO history(id_h,id_p) VALUES (12,3);
INSERT INTO history(id_h,id_p) VALUES (13,1);
INSERT INTO history(id_h,id_p) VALUES (10,10);
SELECT * FROM history;
SELECT * FROM history ORDER BY id_p;
ALTER TABLE history ADD COLUMN str VARCHAR(255);
TRUNCATE TABLE history;
DELETE FROM history;
DROP TABLE history;
SELECT h.name_h,p.name_p FROM hero AS h,persons AS p,history AS t WHERE t.id_h = h.id_h AND t.id_p = p.id_p ORDER BY h.id_h;
SELECT h.name_h,h.money,p.name_p FROM hero AS h,persons AS p
INNER JOIN history AS t
WHERE t.id_h = h.id_h AND t.id_p = p.id_p ORDER BY h.id_h;
SELECT h.name_h,h.money,p.name_p FROM hero AS h,persons AS p
INNER JOIN history AS t
WHERE t.id_h = h.id_h AND t.id_p = p.id_p ORDER BY h.money;
ALTER TABLE history ADD COLUMN test INT;
ALTER TABLE history ADD CONSTRAINT fk_test FOREIGN KEY (test) REFERENCES persons(id_p);
ALTER TABLE history DROP FOREIGN KEY fk_test;
ALTER TABLE history DROP COLUMN test;
CREATE INDEX name_h_index ON hero(name_h);
SELECT name_h_index FROM hero;
SHOW INDEX FROM hero;
CREATE VIEW view_hero AS
SELECT name_h
FROM hero
WHERE money=168;
SELECT * FROM hero ORDER BY id_h DESC;
SELECT * FROM hero WHERE age IS NULL;
ALTER TABLE hero ADD COLUMN createDate DATE;
UPDATE hero SET createDate = CURDATE() ;
ALTER TABLE hero ALTER createDate SET DEFAULT '1970-01-01';
INSERT INTO hero(name_h,gender,age,money) VALUES ('花木兰','女',28,18888);
DELETE FROM hero WHERE name_h = '花木兰';
SELECT * FROM persons ORDER BY id_p DESC;
DROP TABLE persons;
/** 返回平均值 **/
SELECT AVG(money) FROM hero;
SELECT AVG(money) AS hero_money FROM hero;
/** 返回大于平均值的内容 **/
SELECT name_h,money FROM hero WHERE money>(SELECT AVG(money) FROM hero);
/** 返回总数目 **/
SELECT COUNT(*) FROM hero;
/** 返回总数目(NULL不计入)**/
SELECT COUNT(age) FROM hero;
SELECT COUNT(money) FROM hero;
/** 返回不同值数目 **/
SELECT COUNT(DISTINCT money) FROM hero;
SELECT DISTINCT money FROM hero ORDER BY money;
/** 返回一列中最大值 **/
SELECT MAX(money) AS max_value FROM hero;
SELECT MIN(money) FROM hero;
SELECT SUM(money) FROM hero;
SELECT region,SUM(money) FROM hero GROUP BY region;
SELECT region,SUM(money) FROM hero GROUP BY region HAVING SUM(money)<35000;
SELECT region,SUM(money) FROM hero WHERE region = '王者峡谷' OR region = '秦朝' GROUP BY region HAVING SUM(money) > 10000;
INSERT INTO persons(name_p,gender) VALUES ('ABCD','女');
SELECT UCASE(name_p) FROM persons ORDER BY id_p DESC;
SELECT LCASE(name_P) FROM persons ORDER BY id_p DESC;
/** 从name_h列中从第1个位置取1个值**/
SELECT name_h,MID(name_h,1,1) FROM hero;
/** 从name_h列中从第2个位置取2个值**/
SELECT name_h,MID(name_h,2,2) FROM hero;
SELECT name_h,MID(name_h,2,3) FROM hero;
/** 一个中文算3个字符? **/
SELECT name_p,LENGTH(name_p) FROM persons;
SELECT * FROM hero;
CREATE TABLE testfloat(
price FLOAT NOT NULL
);
INSERT INTO testfloat VALUES (10.6);
INSERT INTO testfloat VALUES (10.12);
INSERT INTO testfloat VALUES (10.123);
INSERT INTO testfloat VALUES (10.1234);
INSERT INTO testfloat VALUES (10.12345);
INSERT INTO testfloat VALUES (10.123456);
INSERT INTO testfloat VALUES (10.1234567);
/** 整数不会显示出小数点 .000000000 **/
SELECT money,ROUND(money,10) FROM hero;
/** 保留几位小数 **/
SELECT price,ROUND(price,0) FROM testfloat;
SELECT price,ROUND(price,1) FROM testfloat;
SELECT price,ROUND(price,2) FROM testfloat;
SELECT price,ROUND(price,3) FROM testfloat;
SELECT *,NOW() AS currentTime FROM hero;
SELECT * FROM persons;
SELECT * FROM hero;
CREATE TABLE hero_backup (SELECT * FROM hero);
SELECT * FROM hero_backup;
INSERT INTO hero_backup (SELECT * FROM hero)
INSERT INTO hero_backup (SELECT name_h,gender,money FROM hero);/** error **/
CREATE TABLE orders2(
SELECT h.name_h,h.money,p.name_p FROM persons AS p,hero AS h INNER JOIN history WHERE h.id_h = history.id_h AND p.id_p = history.id_p
)
USE arrange;
SELECT * FROM orders2;
DROP TABLE orders2;
CREATE TABLE test2(
name_t VARCHAR(20)
);
ALTER TABLE test2 ADD COLUMN id_t INT NOT NULL;
ALTER TABLE test2 ADD PRIMARY KEY (id_t);
ALTER TABLE test2 DROP id_t;
DELETE TABLE hero DROP PRIMARY KEY;
SELECT * FROM test2;
DROP TABLE test2;
ALTER TABLE test2 MODIFY COLUMN name_t INT ;
ALTER TABLE test2 CHANGE COLUMN name_t id_t INT;
INSERT INTO test2 VALUES (10);
INSERT INTO test2 VALUES('哈哈');
SELECT * FROM hero;
SELECT * FROM hero LIMIT 5 OFFSET 10;
SELECT * FROM hero LIMIT 1;
SELECT * FROM hero ORDER BY id_h DESC LIMIT 1;
DROP TABLE test,test2;
SELECT * FROM hero_backup;
INSERT INTO hero_backup (SELECT * FROM hero);
SELECT * INTO persons_backup FROM persons WHERE id_p = 1;
SELECT money,CONCAT(name_h,',',gender,',',region) FROM hero;
CREATE table persons2 AS SELECT * FROM persons;
SELECT * FROM persons2;
CREATE TABLE persons3 AS SELECT * FROM persons;
INSERT INTO persons3(SELECT * FROM persons WHERE name_p='小鱼');
SELECT * FROM persons4;
CREATE TABLE persons4 LIKE persons;
INSERT INTO persons4(name_p,gender) SELECT name_p,gender FROM persons WHERE id_p = 1;
INSERT INTO persons4 * SELECT * FROM persons;
DELETE FROM persons4;
SELECT name_h,region,IFNULL(age,100) FROM hero;
SELECT name_h,region FROM hero WHERE EXISTS (SELECT * FROM hero WHERE age>20);
SELECT * FROM hero WHERE age>20;