数据库基础-sql基础语法-Mysql
DDL
操作数据库,表等
数据类型
- MYSQL支持多种类型
score double(总长度,小数点后保留的位数)
删除表
Drop TABLE 表名;
删除表时判断表是否存在
Drop table if EXISTS 表名;
创建(creat)
create table 表名(
字段名1 数据类型,
…
字段名n 数据类型n
)
最后一行末尾,不能加逗号
查询(retrieve)
show table;
当前数据库下所有表得名称;
use mysql;
进入表
show mysql;
查询
desc func;
desc 表名称;
查询表的结构
修改(update)
1.修改表名
ALTER TABLE 表名 RENAME TO 新的表名;
2.添加一列
alter table 表名 ADD 列名 数据类型;
3.修改数据类型
alter table 表名 modify 列名 新数据类型;
4.修改列名称
altel table 表名 change 新列名 新数据类型;
—ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件 ALTER TABLE mytable CHANGE col col1 CHAR(32) NOT NULL DEFAULT ‘123’;
删除(delete)
5.删除列
alter table 表名 drop 列名;
DML
对表中的数据进行增删改
添加数据
1.给指定列添加数据
insert into 表名(列名1,列名2…) values(值1,2,。。。);
2.给全部列添加数据
insert into 表名 values (值1,值2,…);
3.批量添加数据
insert into 表名(列名1,列名2,…)values(值1,值2,…),(值1,)…
– 查询所有数据
SELECT
*
FROM
stu;-- 给指定列添加数据 insert into 表名(列名1,列名2,...)values(值1,值2,...);
INSERT INTO stu ( id, NAME )
VALUES
( 1, '张三' );-- 给所有列添加数据 ,列名的列表可以省略
INSERT INTO stu ( id, NAME )
VALUES
( 1, '张三' );
ALTER TABLE stu CHANGE gender sex CHAR ( 32 );
INSERT INTO stu ( id, NAME, sex, birthday, score, email, STATUS )
VALUES
( 2, '李四', '男', '1999-11-11', 88.88, 'lisi@itcaet.cn', 1 ), ( 2, '李四', '男', '1999-11-11', 88.88, 'lisi@itcaet.cn', 1 );
update stu set sex = '女' where name = '张三';
update stu set birthday = '1999-12-12',score =99.99 where name = '张三';
修改数据
1.修改表数据
update 表名 set 列名1=值1,列名2=值2,。。。[where条件];
- 修饰语句中不加条件,则所有数据都修改!
删除数据
delete from 表名 [where 条件] ;
修饰语句中不加条件,则所有数据都修改!
DQL
对表中的数据进行查询
基础查询
去除重复记录
select distinct address from stu;
SELECT DISTINCT address from stu ;
–查询姓名,数学成绩,英语成绩
–as 起别名,可以省略
select name ,math 数学成绩,english as 英语成绩 from stu;
条件查询
1.条件查询语法
select 字段列表 from 表名 where 条件列表;
- 查询年龄大于20岁的学员信息
select * from stu where age >20;
--查询年龄大于等于20岁的学员信息
select * from stu where age >=20;
-- 查询年龄大于20岁并且年龄小于等于30岁年龄的学员信息
select * from stu where age >20&& age <=30;
select * from stu where age >20 and age <=30;
select * from stu where age BETWEEN 20 and 30;
--查询入学日期在‘1998-09-01’到‘1999-09-01’之间的学员信息
select * from stu where hire_date BETWEEN '1908-09-01' AND '1999-09-01';
-- 查询年龄等于18岁
select * from stu where age = 18;
-- 查询年龄不等于18
select * from stu where age != 18;
select * from stu where age <> 18;
-- 查询年龄
select * from stu where age = 18 or age=20 or age =22;
select * from stu where age in (18,20,22);
-- 查询英语成绩为null的学员信息
-- 注意:null 值的使用不能使用=,!=。需要使用is is not
select * from stu where english is null;
select * from stu where english is not null;
– 查询姓马的学员信息
select * FROM stu where name like ‘马%’;
– 查询第二个字是花的学员信息
select * FROM stu where name like ‘_花%’;
– 查询包含德的学员信息
select * FROM stu where name like ‘%德%’;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZlPiMbnm-1653909518646)(C:\Users\liguo\AppData\Roaming\Typora\typora-user-images\image-20220524214134743.png)]
排序查询
1.排序查询语法
排序方式
- ASC:升序排列(默认值)
- DESC:降序排列
如果有多个排序条件,当前边的条件值都一样时才会根据第二·条件进行排序
- 查询学生信息,按照数学成绩降序排序
SELECT * from stu order by age ;
-- 查询学生信息,按照数学成绩降序排序
select * from stu order by math desc;
-- 查询学生信息,按照数学成绩降序排序,如果数学成绩一样,再按照英语成绩升序排序
select *from stu order by math desc , english asc ;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kz2bTI7X-1653909518646)(C:\Users\liguo\AppData\Roaming\Typora\typora-user-images\image-20220525190737061.png)]
聚合函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0WssJBOM-1653909518646)(C:\Users\liguo\AppData\Roaming\Typora\typora-user-images\image-20220525213608262.png)]
-- 一共多少个
select count(id) from stu ;
select MAX(english) from stu;
分组查询
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c6Rva9Jr-1653909518647)(C:\Users\liguo\AppData\Roaming\Typora\typora-user-images\image-20220525214658038.png)]
select name, sex, AVG(math) from stu GROUP BY sex ;
-- name 没有意义,不分组字段。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2iMMcLFp-1653909518647)(C:\Users\liguo\AppData\Roaming\Typora\typora-user-images\image-20220525215403775.png)]
分页查询
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6m2zC7lT-1653909518647)(C:\Users\liguo\AppData\Roaming\Typora\typora-user-images\image-20220528101848276.png)]
select字段列表
from 表名列表
DCL
对数据库进行权限控制
约束
约束的概念和分类
1.约束的概念
约束是作用于表中列上的规则,用于限制加入表的数据
约束的存在保证了数据库中的数据正确性,有效性和完整性
2约束的分类
约束名称 | 描述 | 关键字 |
非空约束 | 保证列中所有数据不能有null值 | NOT NULL |
唯一约束 | 保证列中所有数据各不相同 | UMIQUE |
主键约束 | 主键是一行数据的唯一标识 | PRIMARYKEY |
检查约束 | 保证列中的值满足某一条件 | CHECK |
默认约束 | 保存数据时,未指定值则采用默认值 | DEFAULT |
外键约束 | 外键用来让两个表的数据之间建立连接,保证数据的一致性和完整性 | FOREIGN KEY |
Tips :MYSQL不支持检查约束
非空约束
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yncAFFQQ-1653909518648)(C:\Users\liguo\AppData\Roaming\Typora\typora-user-images\image-20220528204547073.png)]
*约束案例
Drop table if exists emp;
CREATE table emp(
id int primary key auto_incremaent ,-- 主键且自增长
ename varchar(50) not null unique ,-- 非空且唯一
joindate date not null,
salary double(7,2) not null ,
bonus double(7,2) default 0 -- 奖金,如果没有奖金默认为0
);
select * from emp;
insert into emp(id,ename,joindate,salary,bonus) values(1,'张三','1999-11-11',8800,5000);
insert into emp(id,ename,joindate,salary,bonus) values(3,'王五','1999-11-11',8800,null);
-- 自动增长:auto_increment:当列是数字类型并且是唯一约束
在非空约束下可以省略关键字的赋值
外键约束
1.概念
外键用来让两个表的数据建立连接,保证数据的一致性和完整性