有错请指导!
数据库操作sql练习
一、数据库的创建:
1、创建一个名称为mydb1的数据库
2、创建一个使用utf8字符集的mydb2数据库。
3、创建一个使用utf8字符集,并带比较规则的mydb3数据库。
CREATE DATABASE mydb3 CHARACTER SET utf8 COLLATE utf8_general_ci;
4、修改mydb2字符集为gbk;
ALTER DATABASE mydb1 CHARACTER SET gbk
5.删除数据库
DROP DATABASE mydb1
6.擦汗寻所有数据库
SHOW DATABASES
7.查看数据库mydb1的字符集
SHOW VARIABLES LIKE ‘collation_%’
8.创建一张员工表employee
字段 类型
id 整形
NAME 字符型
gender 字符型
birthday 日期型
entry_date 日期型
job 字符型
salary 小数型
RESUME 文本
CREATE TABLE employee(
id INTEGER AUTO_INCREMENT PRIMARY KEY,
name1 VARCHAR(32) NOT NULL,
gender VARCHAR(32) NOT NULL,
birthday DATETIME,
entry_date DATETIME,
job VARCHAR(32) NOT NULL,
salary FLOAT,
resume1 TEXT
)
表employee2
字段 类型
id 整形
NAME 字符型
gender 字符型
birthday 日期型
entry_date 日期型
job 字符型
salary 小数型
RESUME 文本
要求:把id 设置成主键,并且自动增长。name不允许为空。
CREATE TABLE employee2(
id INTEGER AUTO_INCREMENT PRIMARY KEY,
name1 VARCHAR(32) NOT NULL,
gender VARCHAR(32) NOT NULL,
birthday DATETIME,
entry_date DATETIME,
job VARCHAR(32) NOT NULL,
salary FLOAT,
resume1 TEXT
)
10.删除employee2表
DROP TABLE employee2
11.在上面员工表的基本上增加一个image列。
ALTER TABLE employee ADD image BLOB
12.修改job列,使其长度为60。
ALTER TABLE employee MODIFY job VARCHAR(60)
13.删除gender列。
ALTER TABLE employee DROP gender
14.表名改为user。
RENAME TABLE employee TO USER
15.修改表的字符集为utf8
ALTER TABLE USER CHARACTER SET utf8
16.列名name修改为username
ALTER TABLE USER CHANGE COLUMN name1 username VARCHAR(32)
17.查看数据库内的所有表
SHOW TABLES
18.查看employee的建表语句
SHOW CREATE TABLE USER
19.查看employee的表结构
DESC USER
20.1、向employee中插入三个员工信息,要求员工姓名分别是zs,ls,wangwu
INSERT INTO USER (username) VALUES('zs')
INSERT INTO USER (username) VALUES('ls');
INSERT INTO USER (username) VALUES('wangwu');
-
1、将所有员工薪水修改为5000元。
2、将姓名为’zs’的员工薪水修改为3000元。
3、将姓名为’ls’的员工薪水修改为4000元,job改为ccc。
4、将wangwu的薪水在原有基础上增加1000元。
UPDATE USER SET salary=3000 WHERE username='zs';
UPDATE USER SET salary=4000,job='ccc' WHERE username='ls';
UPDATE USER SET salary=salary+1000 WHERE username='wangwu';
22.删除表中名称为’zs’的记录。
DELETE FROM USER WHERE username='za'
23、删除表中所有记录。
DELETE FROM USER
CREATE TABLE exam(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
chinese DOUBLE,
math DOUBLE,
english DOUBLE
);
INSERT INTO exam VALUES(NULL,'关羽',85,76,70);
INSERT INTO exam VALUES(NULL,'张飞',70,75,70);
INSERT INTO exam VALUES(NULL,'赵云',90,65,95);
INSERT INTO exam VALUES(NULL,'刘备',97,50,50);
INSERT INTO exam VALUES(NULL,'曹操',90,89,80);
INSERT INTO exam VALUES(NULL,'司马懿',90,67,65);
INSERT INTO exam VALUES(NULL,'司马懿',90,67,65);
24.1、查询表中所有学生的信息。
SELECT *FROM exam
2、查询表中所有学生的姓名和对应的英语成绩。
SELECT NAME,english FROM exam
? 3、过滤表中重复数据。DISTINCT 粗劣的对数据进行重复查询
SELECT DISTINCT NAME, chinese,math,english FROM exam
? 4、在所有学生分数上加10分特长分。
UPDATE exam SET chinese=chinese+10,math=math+10,english=english+10
5、统计每个学生的总分。
SELECT chinese+math+english FROM exam
6、使用别名表示学生分数。
SELECT id '学生编号',NAME '学生姓名',chinese '语文',math '数学',english '英语' FROM exam
-----使用where子句
7、查询姓名为刘备的学生成绩
SELECT * FROM exam WHERE NAME='刘备'
8、查询英语成绩大于90分的同学
SELECT * FROM exam WHERE english>90
9、查询总分大于200分的所有同学
SELECT * FROM exam WHERE (chinese+math+english)>200
10、查询英语分数在 80-90之间的同学。
SELECT * FROM exam WHERE english BETWEEN 80 AND 90
11、查询数学分数为89,75,91的同学。
SELECT * FROM exam WHERE math IN(89,75,91)
12、查询所有姓刘的学生成绩。
SELECT * FROM exam WHERE NAME LIKE '%刘%'
13、查询所有姓刘两个字的学生成绩。
SELECT * FROM exam WHERE NAME LIKE '%刘_%'
14、查询数学分>80并且语文分>80的同学。
SELECT * FROM exam WHERE math>80 AND chinese>80
15、查询数学分>80 或者 语文分>80的同学。
SELECT * FROM exam WHERE math>80 AND chinese>80
------使用order BY 排序
16、对数学成绩排序后输出。
SELECT* FROM exam ORDER BY math
17、对总分排序按从高到低的顺序输出
SELECT * FROM exam WHERE ORDER BY (chinese+math+english) DESC
18、对姓刘的学生成绩排序输出
SELECT * FROM exam WHERE NAME LIKE '%刘%' ORDER BY math
------使用count(函数)
19、统计一个班级共有多少学生?
SELECT COUNT(id) FROM exam
20、统计数学成绩大于或等于90的学生有多少个?
SELECT COUNT(id) FROM exam WHERE math>=90
21、统计总分大于250的人数有多少?
SELECT COUNT(id) FROM exam WHERE (chinese+math+english)>=250
-------使用sum函数
22、统计一个班级数学总成绩?
SELECT SUM(math) FROM exam
23、统计一个班级语文、英语、数学各科的总成绩
SELECT SUM(math),SUM(chinese),SUM(english) FROM exam
24、统计一个班级语文、英语、数学的成绩总和
SELECT SUM(math)+SUM(chinese)+SUM(english) FROM exam
25、统计一个班级语文成绩平均分
SELECT AVG(chinese) FROM exam
--------使用avg函数
26、求一个班级数学平均分?
SELECT AVG(math) FROM exam
27、求一个班级总分平均分
SELECT AVG(chinese+math+english) FROM exam
-------使用max,min函数
28、求班级最高分和最低分(数值范围在统计中特别有用)
SELECT MAX(chinese+math+english) FROM exam
SELECT MIN(chinese+math+english) FROM exam
CREATE TABLE orders(
id INT,
product VARCHAR(20),
price FLOAT
);
INSERT INTO orders(id,product,price) VALUES(1,'电视',900);
INSERT INTO orders(id,product,price) VALUES(2,'洗衣机',100);
INSERT INTO orders(id,product,price) VALUES(3,'洗衣粉',90);
INSERT INTO orders(id,product,price) VALUES(4,'桔子',9);
INSERT INTO orders(id,product,price) VALUES(5,'洗衣粉',90);
29、查询购买了几类商品,并且每类总价大于100的商品
SELECT COUNT(product) FROM orders WHERE price>100