~创建数据库
create database 数据库名称;
~创建数据库,判断不存在,再创建
create database if not exists 数据库名称;
~删除数据库
drop database 数据库名称;
drop database if exists 数据库名称;
~删除表
drop table 表名;
drop table if exists 表名 ;
~使用数据库
use 数据库名称;
~创建表
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
…
列名n 数据类型n
);
~查询表结构
DESC student3
~查询某个数据库中所有的表名称
show tables;
~往表中添加数据
insert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n)
~删除数据
delete from 表名 [where 条件]
~修改数据
update 表名 set 列名1 = 值1, 列名2 = 值2,… [where 条件]
~查询表中的记录语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
~查询去除重复数据
select distinct 字段名1 from 表名
~查询年龄大于等于20 小于等于30
SELECT * FROM student WHERE age >= 20 AND age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
~查询年龄22岁,18岁,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);
~查询英语成绩为null
SELECT * FROM student WHERE english IS NULL;
~查询英语成绩不为null
SELECT * FROM student WHERE english IS NOT NULL;
~查询名字中第一个字是’马’的有哪些? like
SELECT * FROM student WHERE NAME LIKE ‘马%’;
~查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE “_化%”;
~查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE ‘___’;
~查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE ‘%德%’;
~聚合函数
- count:计算个数
一般选择非空的列:主键
count(*)
2. max:计算最大值
3. min:计算最小值
4. sum:计算和
5. avg:计算平均值
SELECT MAX(age) FROM student3–最大年龄
~根据年龄降序排列
SELECT * FROM student3 ORDER BY age DESC
–ASC升序(默认值)
–DESC降序
~分组查询
where 和 having 的区别?
---- where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
---- where 后不可以跟聚合函数,having可以进行聚合函数的判断。
– 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;
– 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
~分页查询
SELECT*FROM student3 LIMIT 3,3
第一个参数表示从第几条数据开始查
第二个数据表示查几条数据
————————————————————
~约束
概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。
- 分类:
- 主键约束:primary key
- 非空约束:not null
- 唯一约束:unique
- 外键约束:foreign key
非空约束:not null,某一列的值不能为null
CREATE TABLE stu(
id INT,
NAME VARCHAR(20) NOT NULL – name为非空
);
创建表完后,添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
删除name的非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
唯一约束:unique,某一列的值不能重复
CREATE TABLE stu(
id INT,
phone_number VARCHAR(20) UNIQUE – 手机号
);
删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;
在表创建完后,添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
主键约束:primary key。非空且唯一
删除主键
ALTER TABLE stu DROP PRIMARY KEY;
创建完表后,添加主键
ALTER TABLE stu MODIFY id INT PRIMARY KEY
自动增长:
1. 概念:如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长
在创建表时,添加主键约束,并且完成主键自增长
create table stu(
id int primary key auto_increment,-- 给id添加主键约束
name varchar(20)
);
内连接
通过条件将两个表中符合条件的数据列出来。
SELECT * FROM 表1 JOIN 表2 ON emp.dept_id
= dept.id
;
左连接
以左边的表为基准,列出左表所有记录,右表中若无记录,用NULL表示
SELECT*FROM 表1 LEFT JOIN 表2 ON t1.dept_id
= t2.id
;
右连接
和左连接相反
SELECT*FROM 表1 RIGHT JOIN 表2 ON t1.dept_id
= t2.id
;
创建索引
CREATE INDEX index_name ON table(column)
修改表的索引
ALTER TABLE table_name ADD INDEX (column)
删除索引
DROP INDEX index_name ON table
查看表中存在的索引
show index from mytable