1.基本表的定义
#创建学生表
create table student(
stu_id char(11) PRIMARY KEY, #主键
stu_name VARCHAR(10) NOT NULL, #不为空
stu_gender TINYINT(1) DEFAULT 1, #设置默认值
stu_birth VARCHAR(10)
);
#创建课程表
create table course(
c_id char(11) PRIMARY KEY,
c_name varchar(20)
);
#创建分数表
create table sorce(
c_id CHAR(11),
stu_id CHAR(11),
sorce FLOAT,
PRIMARY KEY(c_id,stu_id), #主键为两个属性
FOREIGN KEY (c_id) references course(c_id), #外键依赖
FOREIGN KEY (stu_id) REFERENCES student(stu_id)
);
2.表修改
#student表添加一列班级信息
ALTER TABLE student ADD stu_class VARCHAR(10);
#给student表的stu_class列添加约束
ALTER TABLE student ADD UNIQUE(stu_class);
#修改列名
ALTER TABLE student ALTER COLUMN stu_class CHAR(10);
#删除列约束
ALTER TABLE student DROP CONSTRAINT UNIQUE;
#删除列
ALTER TABLE student DROP stu_class;
#清空表 没有
TRUNCATE TABLE course;
#• Truncate table语句用来删除/截断表里的所有数据
#• 和delete删除所有表数据在逻辑上含义相同,但性能更快
#• 类似执行了drop table和create table两个语句
3.数据查询
SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]...
FROM <表名或视图名> [,<表名或视图名>...] |(<SELECT 语句>)[AS]<别名>
[WHERE<条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2>[ASC|DESC]]
where
WHERE 常用查询条件
比较 =,>,<,>=,<=,!=,<>,!>,!<
确定范围 BETWEEN AND ,NOT BETWEEN AND
确定集合 IN ,NOT IN
字符匹配 LIKE ,NOT LIKE
空值 NULL, NOT NULL
多重条件 AND,OR ,NOT
like 'a_b' 和like'a%b'
'_'代表任意单个字符
‘%’代表任意个字符(长度可以为0)
where作用域基本表和视图,从中选择满足条件的元组,group by中的HAVING,为了选择满足条件的组。
order by
默认为升序排序,desc为降序。
如果按升序排序,则空值元组最后显示
如果按降序排序,则空值元组最先显示
子查询中不能使用order by ,order by只作用于最终结果排序。
聚集函数
COUNT(*)
COUNT([ALL|DISTINCT]<列名>)
MIN([ALL|DISTINCT]<列名>)
MAX([ALL|DISTINCT]<列名>)
AVG([ALL|DISTINCT]<列名>)
SUM([ALL|DISTINCT]<列名>)
注意:
1.聚集函数遇到空值时,除了count(*)之外,都跳过空值处理非空值。
2.where子句中不能使用聚集函数,聚集函数只能用在select子句和group by中的HAVING子句中。
3.如果查询没有分组,则聚集函数就作用在整个查询结果,有分组,聚集函数就作用在每一个分组中
4.插入数据
INSERT INTO student VALUES('20001','张三',0,'1999-02-12');
insert into student set id='20001',name='张三',.......;
insert into student select查询;
5.修改数据
UPDATE student SET stu_gender=1 WHERE stu_id = '20001';
6.删除数据
DELETE FROM student where stu_id = '20001';