赞
踩
点此跳转:https://www.educoder.net/shixuns/rx56kula/challenges
输入命令:mysql -u用户名 -p密码
在平台上连接数据库还需要加上一句-h127.0.0.1。
mysql -uroot -p123123 -h127.0.0.1
create database MyDb;
show databases;
注意别忘了末尾的分号;
数据库中的数据是存放在一张一张的表中的。
你可以想象数据库就像一个文件夹,而表你可以理解为一个excel表格,其实他们本来就挺像。
mysql -uroot -p123123 -h127.0.0.1
create database TestDb;
show databases;
use TestDb;
create table t_emp (
id Int,
name VARCHAR(32),
deptId Int,
salary FLOAT
);
desc t_emp;
mysql -uroot -p123123 -h127.0.0.1 create database MyDb; show databases; use MyDb; create table t_user1 ( userId Int PRIMARY KEY, name VARCHAR(32), password VARCHAR(11), phone VARCHAR(11), email VARCHAR(32) ); desc t_user1; create table t_user2 ( name VARCHAR(32), phone VARCHAR(11), email VARCHAR(32), PRIMARY KEY(name,phone) ); desc t_user2;
mysql -uroot -p123123 -h127.0.0.1 create database MyDb; show databases; use MyDb; create table t_class( id Int PRIMARY KEY, name VARCHAR(22) ); desc t_class; create table t_student( id Int PRIMARY KEY, name VARCHAR(22), classId Int, CONSTRAINT fk_stu_class1 FOREIGN KEY(classId) REFERENCES t_class(Id) ); desc t_student;
设置表的属性值自动增加 AUTO_INCREMENT
mysql -uroot -p123123 -h127.0.0.1
create database MyDb;
show databases;
use MyDb;
create table t_user(
id Int PRIMARY KEY auto_increment,
username VARCHAR(32) not null unique,
sex VARCHAR(4) default '男'
)DEFAULT CHARSET=utf8;
语法规则为:DESCRIBE 表名;
大小写不敏感哟!
再告诉大家一个小诀窍,是不是觉得返回的结果排版有点乱。我们加上\G后效果就会有所改善哟,来看看!
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## modify the table name ########## alter table tb_emp rename jd_emp; ########## show tables in this database ########## show tables; ########## describe the table ########## desc jd_emp; ########## End ##########
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## change the column name ########## alter table tb_emp change Id prod_id int(11); ########## change the data type of column ########## alter table tb_emp modify Name varchar(30); ########## End ########## DESCRIBE tb_emp;
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## add the column ########## alter table tb_emp add Country varchar(20) after Name; ########## delete the column ########## alter table tb_emp drop Salary; ########## End ########## DESCRIBE tb_emp;
USE Company;
#请在此处添加实现代码
########## Begin ##########
########## modify the column to top ##########
alter table tb_emp modify Name varchar(25) first;
########## modify the column to the rear of another column ##########
alter table tb_emp modify DeptId int(11) after Salary;
########## End ##########
DESCRIBE tb_emp;
USE Company;
#请在此处添加实现代码
########## Begin ##########
########## delete the foreign key ##########
alter table tb_emp drop FOREIGN KEY emp_dept;
########## End ##########
SHOW CREATE TABLE tb_emp \G;
插入一列
ERROR 1062 (23000) at line 8: Duplicate entry ‘0’ for key ‘PRIMARY’
原因:主键字段有两条为0的记录,冲突。(设置主键自增解决)( duplicate重复)
USE Company;
#请在此处添加实现代码
########## Begin ##########
########## bundle insert the value ##########
insert into tb_emp (Id,Name,DeptId,Salary)
values(1,'Nancy',301,2300),(2,'Tod',303,5600),(3,'Carly',301,3200);
########## End ##########
SELECT * FROM tb_emp;
UPDATE Mall_products2
SET country_name = "Pakistan", country_id = 92
WHERE id = 2;
USE Company;
#请在此处添加实现代码
########## Begin ##########
########## update the value ##########
update tb_emp
set Name="Tracy",DeptId=302,Salary=4300.00
where Id = 3;
########## End ##########
SELECT * FROM tb_emp;
注意:最后一句要加分号;其次,单双引号要注意区分
对表操作,用drop
对行操作,用delete
USE Company; ######### Begin ######### select * from tb_emp where DeptId is null; ######### End ######### ######### Begin ######### select distinct Name from tb_emp; ######### End #########
USE Company; ######### Begin ######### #使用关键字AND返回数据表中字段DeptId为301并且薪水大于3000的所有字段的内容, select * from tb_emp where DeptId=301 and Salary>3000; ######### End ######### ######### Begin ######### #使用关键字IN返回数据表中字段DeptId为301和303的所有字段的内容。 select * from tb_emp where DeptId in (301,303); ######### End #########
SELECT 字段名 FROM 表名 ORDER BY 字段名 [ASC[DESC]];
ASC 升序关键字
DESC 降序关键字
USE School;
#请在此处添加实现代码
########## Begin ##########
########## 查询班级中第2名到第5名的学生信息 ##########
select *
from tb_score
order by score desc
limit 1,4;#从第二条记录开始往后查看4条数据(不包含第一条):
########## End ##########
USE School;
#请在此处添加实现代码
########## Begin ##########
########## 查询该表中一共有多少条数据 ##########
select count(*)
from tb_class;
########## 查询此表中367班有多少位学生 ##########
select classid,count(*)
from tb_class
where classid=367;
########## End ##########
USE School; #请在此处添加实现代码 ########## Begin ########## ########## 查询所有学生总分数 ########## select sum(score) from tb_class; ########## 查询学生语文科目的总分数 ########## select course,sum(score) from tb_class where course="语文"; ########## End ##########
USE School;
########## 查询数据表中学生姓名和对应的班级 ##########
#请在此处添加实现代码
########## Begin ##########
select tb_student.name as studentName, tb_class.name as className
from tb_student join tb_class
on tb_student.class_id=tb_class.id;
########## End ##########
USE School; ########## 使用左外连接查询所有学生姓名和对应的班级 ########## #请在此处添加实现代码 ########## Begin ########## select tb_student.name as studentName, tb_class.name as className from tb_student left join tb_class on tb_student.class_id=tb_class.id; ########## End ########## ########## 使用右外连接查询所有学生姓名和对应的班级 ########## #请在此处添加实现代码 ########## Begin ########## select tb_student.name as studentName, tb_class.name as className from tb_student right join tb_class on tb_student.class_id=tb_class.id; ########## End ##########
USE School;
########## 查询所有班级里分数在90分以上的学生的姓名和学生的成绩以及学生所在的班级 ##########
#请在此处添加实现代码
########## Begin ##########
select tb_student.name as studentName, score,tb_class.name as className
from tb_student left join tb_class
on tb_student.class_id=tb_class.id
where score>90
order by score desc;
########## End ##########
USE Company;
#请在此处添加实现代码
########## Begin ##########
#1.查询大于所有平均年龄的员工姓名与年龄
select name,age
from tb_emp
where age>all(
select avg(age)
from tb_emp);
########## End ##########
USE Company; #请在此处添加实现代码 ########## Begin ########## #1.使用 ALL 关键字进行查询 select position,salary from tb_salary where salary>all( select max(salary) from tb_salary where position="Java" ); #2.使用 ANY 关键字进行查询 select position,salary from tb_salary where salary>ANY( select min(salary) from tb_salary where position="Java" ); #3.使用 IN 关键字进行查询 select position,salary from tb_salary where salary in ( select salary from tb_salary where position="Java" ); ########## End ##########
USE School;
#请在此处添加实现代码
########## Begin ##########
#1.查询表中2,3,4年级中分别男女的总人数
select gradeId,sex,count(*)
from student
where gradeId in(2,3,4)
group by gradeId,sex;
########## End ##########
USE School; #请在此处添加实现代码 ########## Begin ########## #1.查询表中至少有两门课程在90分以上的学生信息 select sno,count(*) from tb_grade where score>=90 group by sno having count(*)>=2; #2.查询表中平均成绩大于90分且语文课在95分以上的学生信息 select sno,avg(score) from tb_grade where sno in( select distinct sno from tb_grade where pno="语文" and score>=95) group by sno having avg(score)>=90; ########## End ##########
USE Products; #请在此处添加实现代码 ########## Begin ########## #1.分页查询 select prod_id from products limit 5,5; #2.用子查询优化分页查询语句 select prod_id from products where prod_id >=( select prod_id from products limit 10,1 ) limit 5; ########## End ##########
单列索引分类和创建
我们使用最常见的是单列索引,分为主键索引、普通索引和唯一索引。
USE Students; #请在此处添加实现代码 ########## Begin ########## #1.创建student表结构并且设置id为主键索引 CREATE TABLE student( id int(11) NOT NULL AUTO_INCREMENT, name varchar(20) NOT NULL, score int(10), PRIMARY KEY (id) ); #2.对name建立唯一索引 CREATE unique INDEX name_index on `student`(`name`); #3.对score建立普通索引 CREATE INDEX score_index on `student`(`score`); SHOW INDEX FROM student; ########## End ##########
--创建数据库 CREATE DATABASE blog_db; use blog_db; --在blog_db库中创建t_user表 --用户信息表 CREATE TABLE t_user ( userId BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',--低版本编程环境不能识别AUTO_INCREMENT,换成IDENTITY(1,1) username VARCHAR(32) NOT NULL COMMENT'用户名',--COMMENT 备注 password VARCHAR(32) NOT NULL COMMENT'密码', user_sex VARCHAR(6) NOT NULL DEFAULT '0' COMMENT'性别0代表男 1代表女',--设置默认值 DEFAULT email VARCHAR(64) COMMENT'邮箱', phone VARCHAR(11) NOT NULL COMMENT'手机号码', firstname VARCHAR(6) COMMENT'姓', lastname VARCHAR(12) COMMENT'名', avatar VARCHAR(255) COMMENT'头像地址', is_superuser INT(11) NOT NULL DEFAULT 0 COMMENT'是否是管理员 0代表不是 1代表是', last_login DATETIME COMMENT'上一次登录时间', user_register_time DATETIME COMMENT'上一次登录时间', PRIMARY KEY (userId)--主键 ); /*创建blog_type、t_blog、t_comment表,并建立表之间的关系博客类型表和博客信息表是一对多的关系, 博客评论表和博客信息表是多对一的关系,用户信息表与博客信息表、博客评论表是一对多的关系。*/ --博客类型表 CREATE TABLE blog_type ( type_id INT NOT NULL AUTO_INCREMENT COMMENT'类型id', type_name VARCHAR(32) NOT NULL COMMENT'类型名称', PRIMARY KEY(type_id) ); --博客信息表 CREATE TABLE t_blog ( blog_id BIGINT NOT NULL AUTO_INCREMENT COMMENT'博客id', blog_title VARCHAR(100) NOT NULL COMMENT'博客标题', blog_content LONGTEXT NOT NULL COMMENT'博客内容', userid BIGINT COMMENT'创建人id', type_id INT COMMENT'类型id', blog_status INT NOT NULL DEFAULT '0' COMMENT'博客状态 1为发布 0为草稿', create_time DATETIME NOT NULL COMMENT'创建时间', update_time DATETIME NOT NULL COMMENT'更新时间', cover_image VARCHAR(255) COMMENT'封面图片', PRIMARY KEY(blog_id), CONSTRAINT FK_user_id FOREIGN KEY (userid) REFERENCES t_user(userId),--重命名外键 CONSTRAINT FK_type_id FOREIGN KEY (type_id) REFERENCES blog_type(type_id) ); --博客评论表 CREATE TABLE t_comment ( comment_id BIGINT NOT NULL AUTO_INCREMENT COMMENT'评论id', comment_content VARCHAR(500) NOT NULL COMMENT'评论内容', blog_id BIGINT NOT NULL COMMENT'评论内容', createtime DATETIME NOT NULL COMMENT'评论时间', userid BIGINT NOT NULL COMMENT'评论人ID', replyid INT NOT NULL COMMENT'评论回复人ID', PRIMARY KEY(comment_id), CONSTRAINT FK_comment_user_id FOREIGN KEY(userid) REFERENCES t_user(userId), CONSTRAINT FK_comment_blog_id FOREIGN KEY(blog_id) REFERENCES t_blog(blog_id) ); --创建博客标签表(t_tag),并建立表之间的关系 CREATE TABLE t_tag ( tag_id INT(11) NOT NULL AUTO_INCREMENT, tag_name VARCHAR(32) NOT NULL, PRIMARY KEY(tag_id) ); /*设计了一个中间表,分别与博客信息表和博客标签表是一对多的关系, 这样博客标签表(t_tag)就和博客信息表(t_blog)是多对多的关系了。*/ CREATE TABLE t_tag_blog ( tag_id INT(11), blog_id BIGINT(20), FOREIGN KEY(tag_id) REFERENCES t_tag(tag_id), FOREIGN KEY(blog_id) REFERENCES t_blog(blog_id) );
USE School; #请在此添加实现代码 ########## Begin ########## ########## 插入学生表(Student)相应数据 ########## insert into student(Sno,Sname,Ssex,Sage,Sdept) values('9512101','李勇','男',19,'计算机系'), ('9512102','刘晨','男',20,'计算机系'), ('9512103','王敏','女',20,'计算机系'), ('9521101','张立','男',22,'信息系'), ('9521102','吴宾','女',21,'信息系'), ('9521103','张海','男',20,'信息系'), ('9531101','钱小平','女',18,'数学系'), ('9531102','王大力','男',19,'数学系'); ########## 插入课程表(Course)相应数据 ########## insert into course(Cno,Cname,Ccredit,Semster,Period) values('C01','计算机文化学',3,1,41), ('C02','VB',2,3,61), ('C03','计算机网络',4,7,14), ('C04','数据库基础',6,6,24), ('C05','高等数学',8,2,19), ('C06','数据结构',5,4,55); ########## 插入学生选课表(DBSC)相应数据 ########## insert into dbsc(ScID,Sno,Cno,Grade,isTec) values(1,9512101,'c01',90,'必修'), (2,9512101,'c02',86,'选修'), (3,9512101,'c06',45,'必修'), (4,9512102,'c02',78,'选修'), (5,9512102,'c04',66,'必修'), (6,9521102,'c01',82,'选修'), (7,9521102,'c02',75,'选修'), (8,9521102,'c04',92,'必修'), (9,9521102,'c05',50,'必修'), (10,9521103,'c02',68,'选修'), (11,9521103,'c06',56,'必修'), (12,9531101,'c01',80,'选修'), (13,9531101,'c05',95,'必修'), (14,9531102,'c05',85,'必修'); ########## End ########## ########## 查询表数据 ########## SELECT * FROM student; SELECT * FROM course; SELECT * FROM dbsc;
#********* Begin *********# echo " select Sname,Sdept from student where Sdept='计算机系'; select Sno from dbsc where Grade<60; select Sname,Sdept,Sage from student where Sage between 20 and 23 and Sdept='信息系'; select Sno,Grade from dbsc where Cno='c02' order by Grade desc; select count(*) from student; " #********* End *********#
#********* Begin *********# echo " select student.* from student where Sname like '张%'; select Sname,Ssex,Sdept from student where Sdept in ('计算机系','信息系','数学系'); select Cno, count(*) from dbsc where isTec='选修' group by Cno; select Sno from dbsc group by Sno Having count(*)>3; select Sname, Cno, Grade from student,dbsc where student.Sno=dbsc.Sno and Sdept='计算机系'; " #********* End *********#
也不能再echo中加入#注释
#********* Begin *********# echo " select distinct student.Sno,student.Sname from dbsc,student where student.Sno=dbsc.Sno and isTec='选修'; select Sname,count(*),avg(Grade) from dbsc,student where student.Sno=dbsc.Sno group by dbsc.Sno Having avg(Grade); select avg(Grade),count(*) from dbsc group by Sno having count(*)>=4; select student.Sname, dbsc.Cno, dbsc.Grade from student left join dbsc on student.Sno=dbsc.Sno where student.Sdept='信息系' and dbsc.isTec='选修' and Cno='C02'; update dbsc set Grade = Grade+5 where Grade<60; " #********* End *********#
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。