数据库基础-sql基础语法-Mysql

DDL

操作数据库,表等

数据类型
  • MYSQL支持多种类型

score double(总长度,小数点后保留的位数)

MySQL DECLARE 会报错 mysql declare语法_MySQL DECLARE 会报错

删除表

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.概念

外键用来让两个表的数据建立连接,保证数据的一致性和完整性

MySQL DECLARE 会报错 mysql declare语法_数据库_02


MySQL DECLARE 会报错 mysql declare语法_后端_03