一)基础命令
1)对数据库的操作
1.使用
use 库名;
2.创建
create database 库名;
3.删除
drop database 库名;
4.显示数据库,表
show databases;
show tables;
2)对数据表的操作
1.创建表
create table 表名(字段 字段类型,id int,name varchar(32));
2.删除表
drop table 表名;
3.修改表名
alter table 旧name rename 新name;
4.查看表的基本结构
describe 表名;
3)对数据的操作
1.添加数据
insert into 表名(字段,id,name)values(值,1,“zl”);
2.修改数据
update 表名 set 字段=新值 where id=1(条件);
3.删除数据
delete from 表名 where 条件;
4)对表的字段的操作
1.修改字段名
alter table 表名 change 旧字段名 新字段名 新数据类型;
2.修改字段数据类型
alter table 表名 modify 字段名 数据类型;
3.添加字段
alter table 表名 add 新字段名 数据类型 [约束条件] [first|after] 已存在字段名;
4.删除字段
alter table 表名 drop 字段名;
二)约束
NOT NULL 约束:确保某列不能有 NULL 值。
DEFAULT 约束:当某列没有指定值时,为该列提供默认值。
UNIQUE 约束:确保某列中的所有值是不同的。
PRIMARY Key 约束:唯一标识数据库表中的各行/记录。
CHECK 约束:CHECK 约束确保某列中的所有值满足一定条件。
1)常用约束
唯一约束:unique
非空约束:not null
默认约束:default ’值‘
注意:值为字符串型使用单引号,为整型则不需要加任何符号;若加的是中文默认值,则需加上 default charset=utf8
例如:
CREATE TABLE t_emp(
id INT PRIMARY KEY,
name VARCHAR(22) not null unique,
sex VARCHAR(2) DEFAULT '男'
) DEFAULT CHARSET=utf8;
2)主键约束【primary key】
定义列同时:id int primary key
定义列之后:primary key(id)
多字段联合主键:primary key(字段1,字段2)
3)外键约束【foreign key】
语法:[CONSTRAINT 外键名] FOREIGN KEY 字段名 REFERENCES 主表名(主键名)
例如;
CREATE TABLE t_dept
(
deptId INT PRIMARY KEY,
name VARCHAR(22),
location VARCHAR(50)
);
CREATE TABLE t_emp
(
id INT PRIMARY KEY,
name VARCHAR(22),
deptId INT,
CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES t_dept(deptId)
);
4)检查约束【check】
语法:constraint check_name check(条件)
例:创建一个学生表
create table students(
id int primary key,
name varchar(32),
gender varchar(10),
birthday date,
constraint ck_gender check(gender='男' or gender='女')
);
三)查询语句
1)单表查询+条件查询
select *from 表名;
select 字段1,字段2 from 表名;
select 字段名 from 表名 where 字段名 in (n1,n2,n3);【括号内的数字必须为INT型】
select 字段名 from 表名 where 字段名 not in (n1,n2,n3);【除了括号中出现内容外的所有内容】
select 字段名 from 表名 where 字段名 between n1 and n2;
select 字段名 from 表名 where 字段名 not between n1 and n2;
select * from 表名 where 字段名 is null;【查询空值】
select distinct 字段名 from 表名;【去除重复结果】
select * from 表名 where 条件1 and 条件2;【多条件查询】
select * from 表名 where 条件1 or 条件2;
2)排序查询
select * from 表名 where 条件 order by 字段名 desc;【desc:降序,asc:升序】
例:要求显示所有雇员的信息,按照工资由高到低排序,若工资相等,则按照雇佣日期由早到晚排序
SELECT* FROM emp ORDER BY sal DESC,hiredate asc;
3)模糊查询
select 字段名 from 表名 where 字段名 like "%";【任意通配符】
select 字段名 from 表名 where 字段名 like "_";
注意:
百分号通配符%:可以匹配任意长度的字符,甚至包括零字符
下划线通配符_:只能模糊匹配1个字符
select * from 表名 limit 偏移量,记录数;
例如:
查询班级中第2名到第5名的学生信息
select * from tb_score order by score desc limit 1,4;
4)分组查询
select * from 表名 group by 字段名;【分组查询】
注意:一般情况下,group by都和聚合函数一起使用
例:
-- 查询男女学生的人数(分组和聚合函数)
select gender,count(*) from students group by gender;
5)连接查询:【join on】
1-内连接查询
语法:from 表1 join 表2 on 表1.字段名=表2.字段名
2-外连接查询
类型:左外连接查询和右外连接查询;
语法:from 表1 left/right [outer] join 表2 on 表1.字段=表2.字段
3-全外连接自然连接 FULL JOIN:根据连接条件进行连接,如果连接不上的,左右表记录为null,不丢弃数据
例:三表查询
-- 查询学生姓名、所选课程名称和成绩(连接查询)
-- 写法1:
select students.name,course.cname,score.mark from students
join score on students.id=score.id
join course on course.cnumber=score.cnumber;
-- 写法2:
select students.name,course.cname,score.mark from score
join course on course.cnumber=score.cnumber
join students on students.id=score.id;