MYSQL的基本操作

1、创建表

        在创建表之前要先选择数据库,在选择的数据库下创建表。选择数据库在上一篇博文中已经提及到(use 数据库名)。

create table table_name(属性名 属性类型[完整性约束],

                                        属性名 属性类型[完整性约束],

                                        ......

                                      属性名 属性类型[完整性约束]

                                     );

注意:创建表的时候选取合适的数据类,给定字段完整性约束,比如:逐渐、外键、非空

约束条件   说明
PRIMARY KEY   修饰的属性是该表的主键
FOREIGN KEY    修饰的属性是该表的外键(是另一张表的之间,和当前表建立连接)
NOT NULL     表示该属性不能为NULL
UNIQUE     表示该属性的值具有唯一性
AUTO_IINCREMENT表示该属性的值是自增的,整数类型(MYSQL的特色)
DEFAULT   给属性设置默认值

2、查看表

2.1 通过desc关键字查看表的字段名称、类型、是否为Null、约束条件、默认值、备注信息 

desc table_name;

2.2 展示创建表的SQL语句,并且打印了存储引擎以及字符集编码(默认的是拉丁码)

show create table table_name;

2.3 展示添加进表中的内容

select * from table_name;

3、删除表

delect table table_name;

4、插入数据

insert into table_name(属性1,属性2,...,属性n) values

(v1,v1,...vn);

5、删除数据

delecte from table_name[where 属性名=values];

6、修改表

在使用过程中不满足使用情况下修改,用alter命令修改

6.1 修改表名

alter table old_name RENAME new_table;

6.2 修改属性类型

alter table table_name MODIFY 属性名 属性类型

6.3 修改属性名

alter table table_name CHANGE 旧属性名 新属性名 属性类型

6.4 增加字段

alter table table_name ADD 属性名 属性类型[完整性约束]

6.5 删除字段

alter table table_name DROP 属性名;

6.6 修改属性排列位置

alter table table_name MODIFY 属性名 属性类型 FIRST;//将当前属性放在表的第一个位置

alter table table_name MODIFY 属性名1 属性类型1 AFTER 属性名2;//将属性1 排列在属性2的后面

6.7 修改表的存储引擎

alter table table_name ENGINE=存储引擎名;

7、查询表

 select 属性列表 from table_name[where 条件表达式1]

7.1 带int的子查询

[not] in(元素1,元素2,...,元素n);

7.2 带between and的范围查询

[not]between 取值1 and 取值2;

7.3 带like的通配符匹配字符串

[not]like '字符串';

通配符:%:表示0个或任意长度的字符串

              _:表示一个字符

7.4 空值查询

is [not]null;

7.5 带and的多条件查询

条件表达式1 and 条件表达式2[... and 条件表达式n];

7.6 带or的多条件查询

条件表达式1 or条件表达式2[... or 条件表达式n];

7.7 去重复查询

select distinct 属性名;

7.8 分组查询

group by 属性名[having 表达式];

7.9 对结果排序

order by 属性名[desc/asc];

7.10 union联合查询

select 属性列表 from table_name1[where 条件表达式] union

select 属性列表 from table_name2[where 条件表达式]

联合查询默认的结果数据进行了去重(相当于dinstict)

7.11 limit分页查询

select * from table_name limit len;//一个参数指的是从起始0号位置开始读取指定长度len的数据

select * from table_name limit start,len;//第一个参数指的是起始位置start,第二个参数指的是读取指定长度len的数据

7.12 联合查询

左连接:select * from table_name1 a left join table_name1 b on a.属性名=b.属性名;//a,b是表的别名

左连接返回的是左边表的所有数据以及右边表和左边表相同的数据

内连接:select * from table_name1 a inner join table_name1 b on a.属性名=b.属性名;//a,b是表的别名

内连接返回的是左右表都同时存在的数据

右连接:select * from table_name1 a right join table_name1 b on a.属性名=b.属性名;//a,b是表的别名

右连接返回的是右边表的所有数据以及左边表和右边表相同的数据

8、SQL练习题

1、学生表
Student(SID,Sname,Sage,Ssex) 
--SID 学生编号,Sname 学生姓名,Sage 年龄,Ssex 学生性别

2.课程表
Course(CID,Cname,TID) 
--CID --课程编号,Cname 课程名称,TID 教师编号

3.教师表
Teacher(TID,Tname) 
--TID 教师编号,Tname 教师姓名

4.成绩表
SC(SID,CID,score) 
--SID 学生编号,CID 课程编号,score 分数

学生表:
编号  姓名  年龄  性别
1    赵雷  20    男
2    钱电  20    男
3    孙风  21    男
4    吴兰  18    女
5    孙兰  17    女
课程表:
课程号  课程名称  教师编号
1       语文     2
2       数学     1
3       英语     3
教师表:
教师编号   教师名
1         张三
2         李四
3         王五
成绩表:
学生编号   课程编号   分数
1         1         80
1         2         71
1         3         87
2         1         88
2         2         70
2         3         89
3         1         68
3         2         78
3         3         87
4         1         67
4         2         58
4         3         89
5         1         56
5         2         89
6         3         38

首先创建这四个表。
1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数
select a.*,b.score as ‘01课程分数’,c.score as ‘02课程分数’ from Student a,SC b,SC c where a.SID = b.SID and a.SID = c.SID and b.CID = 1 and c.CID = 2 and b.score > c.score;

2、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
select a.SID , a.Sname ,avg(b.score) avg_score from Student a,SC b where a.SID = b.SID group by a.SID  having avg(b.score) >= 60;

3、查询在sc表中不存在成绩的学生信息。
select * from Student where SID not in (select distinct SID from SC);

4、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
select a.SID, a.Sname,count(b.CID) as count, sum(b.score) as sum_score
from Student a, SC b where a.SID = b.SID group by a.SID; 

5、查询"李"姓老师的数量
select count(TID) from Teacher where like '李%';

6、查询学过"张三"老师授课的同学的信息
  select * from Student where SID in ( 
  select distinct SID from SC where SID in( 
  select distinct CID from Course where TID in(
  select TID from Teacher where Tnamec like '张三')));


更多SQL的练习可以参考:http://www.cnblogs.com/luo813/p/8993727.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值