1.CURD的含义
C(Create):创建 R(Read):查询 U(Update):修改 D(Delete):删除
2.SQL语句分类
1) Data Definition Language (DDL 数据定义语言) 如:建库,建表
2) Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改
3) Data Query Language(DQL 数据查询语言),如:对表中的查询操作
4) Data Control Language(DCL 数据控制语言),如:对用户权限的设置
3.DDL操作数据库
1)创建数据库
--直接创建数据库db1
create databasedb1;--判断是否存在,如果不存在则创建数据库db2
create database if not existsdb2;--创建数据库并指定字符集为gbk
create database db3 default character set gbk;
2)查看数据库
--查看所有的数据库
show databases;--查看某个数据库的定义信息
show create databasedb3;
showcreate database db1;
3)修改数据库
--将 db3 数据库的字符集改成
utf8 alter database db3 character set utf8;
4)删除数据库
--删除 db2 数据库
drop database db2;
5)使用数据库
--查看正在使用的数据库
select database();--改变要使用的数据库
use db4
4.DDL操作表结构
前提先使用某个数据库
1)创建表
--创建 student 表包含 id,name,birthday 字段
create tablestudent (
idint, --整数
name varchar(20), --字符串
birthday date --生日,最后没有逗号
);
2)查看表
--查看 day21 数据库中的所有表
useday21;
show tables;--查看 student 表的结构
desc student;
--查看 student 的创建表 SQL 语句
show create table student;
3)快速创建一个表结构相同的表
--创建一个s1的表与student结构相同
create table s1 likestudent;desc s1;
4)删除表
--直接删除表s1表
drop tables1;--判断表是否存在并删除s1表
drop table if exists s1;
5).修改表结构
--为学生表添加一个新的字段 remark,类型为 varchar(20)
alter table student add remark varchar(20);--将 student 表中的 remark 字段的改成 varchar(100)
alter table student modify remark varchar(100);--将 student 表中的 remark 字段名改成 intro,类型 varchar(30)
alter table student change remark intro varchar(30);--删除 student 表中的字段 intro
alter table student change remark intro varchar(30);
将学生表 student 改名成 student2
renametable student tostudent2;
将 student2 表的编码修改成 gbkalter table student2 character set gbk;
5.DML操作表中的数据
1) 插入数据
--插入所有的列,向学生表中
insert into student (id,name,age,sex) values (1, 'aa', 20, '男');insert into student (id,name,age,sex) values (2, 'bb', 16, '男');--插入所有列
insert into student values (3, 'cc', 18, '男', 'zzz');--如果只插入部分列,必须写列名
insert into student values (4, 'dd', 18, '男');
2)更新表记录
--不带条件修改数据,将所有的性别改成女
update student set sex = '女';--带条件修改数据,将id号为2的学生性别改成男
update student set sex='男' where id=2;--一次修改多个列,把id为3的学生,年龄改成26岁,address改成北京
update student set age=26, address='北京' where id=3;
3)删除表记录
--带条件删除数据,删除id为1的记录
delete from student where id=1;--不带条件删除数据,删除表中的所有数据
delete from student;
6.DQL查询表中的数据
1)简单查询
--查询所有的学生:
select * fromstudent;--查询 student 表中的 name 和 age 列
select name,age fromstudent;
2)指定列的别名进行查询
--使用别名
select name as 姓名,age as 年龄 fromstudent;--表使用别名
select st.name as 姓名,age as 年龄 from student as st
3)清除重复值
--查询学生来至于哪些地方
select address fromstudent;--去掉重复的记录
select distinct address from student;
4)查询结果参与运算
select * fromstudent;--给所有的数学加 5 分
select math+5 fromstudent;--查询 math + english 的和
select * fromstudent;select *,(math+english) as 总成绩 fromstudent;--as 可以省略
select *,(math+english) 总成绩 from student;
5)条件查询
--查询math分数大于80分的学生
select * from student3 where math>80;--查询english分数小于或等于80分的学生
select * from student3 where english <=80;--查询age等于20岁的学生
select * from student3 where age = 20;--查询age不等于20岁的学生,注:不等于有两种写法
select * from student3 where age <> 20;select * from student3 where age != 20;
-- 逻辑运算符
--查询 age 大于 35 且性别为男的学生(两个条件同时满足)
select * from student3 where age>35 and sex='男';--查询 age 大于 35 或性别为男的学生(两个条件其中一个满足)
select * from student3 where age>35 or sex='男';--查询 id 是 1 或 3 或 5 的学生
select * from student3 where id=1 or id=3 or id=5;
-- in关键字
--查询id是1或3或5的学生
select * from student3 where id in(1,3,5);--查询id不是1或3或5的学生
select * from student3 where id not in(1,3,5);
-- 范围查询
--english 成绩大于等于 75,且小于等于 90 的学生
select * from student3 where english between 75 and 90;
-- like模糊查询
--查询姓马的学生
select * from student3 where name like '马%';select * from student3 where name like '马';--查询姓名中包含'德'字的学生
select * from student3 where name like '%德%';--查询姓马,且姓名有两个字的学生
select * from student3 where name like '马_';