Sql笔记

目录

1.数据库操作语句

1.1创建数据库语句

1.2修改数据库语句

2.操作表语句

2.1 建表语句

2.2查询数据表

2.3删除表

2.4修改表

2.4.1修改表名

 2.4.2设置表的字符集

2.4.3添加字段

 2.4.4修改字段

2.4.5删除字段

3.约束

3.1约束的概念

3.2常见约束

3.2.1非空约束

3.2.2唯一约束

3.2.3主键约束

3.2.4 添加主键约束

3.2.5主键自动增长 auto_increment

3.2.6 外键约束

4.dml数据操作语言

4.1插入语句

4.2修改数据

4.3删除语句

 5.DQL查询语言

5.1简单查询

5.2where条件

5.2.1单条件

5.2.2多条件查询

5.3模糊查询LIKE

5.4查询结果处理

5.5排序

5.6聚合函数

5.6.1 count

5.6.2 Max

5.6.3 Min

5.6.4 sum

5.6.5 日期函数

5.7 分组查询

5.8 分页查询

6. 关联关系

6.1 外键建立关系

6.1.1 一对一关联

6.1.2 多对多关联

6.1.3 一对多对多对一关联



1.数据库操作语句

1.1创建数据库语句

database是创建数据库的关键字 后面的数据库的名字

create  DATABASE db_test;

这条语句是查看MySQL的所有数据库

查看所有数据库

SHOW DATABASES

这个是查看创建数据库的语句

show CREATE DATABASE db_ssm

这条语句是判断当前要创建的数据库是否存在如果存在就不创建反之就创建

CREATE DATABASE  if NOT EXISTS db_test

 这条sql是在创建数据库的同时指定数据库的字符集 CHARACTER SET 'utf8';

CREATE DATABASE IF NOT EXISTS  db_ssm
CHARACTER SET utf8;

1.2修改数据库语句

alter这个是修改数据库的关键字 修改数据库的字符集

ALTER  DATABASE db_test CHARACTER SET gbk

drop这个是删除数据库的关键字删除数据库

DROP DATABASE db_wwww

判断一下是否存在

DROP DATABASE IF EXISTS db_wwww

切换数据库

use db_test

2.操作表语句

2.1 建表语句

student是表名 stu_id是字段后面的char是数据类型 not null是不能为空 unique是不能重复

CREATE TABLE student(stu_id CHAR(8) not null UNIQUE,
stu_name varchar(20) NOT NULL,
stu_sex  char(4)not null,
stu_age INT not null,
stu_phone char(11) NOT NULL  UNIQUE,
stu_qq varchar(11)
);

2.2查询数据表

查询表
show TABLES
查看表结构
desc student

2.3删除表

删除表
drop TABLE tableName
判断表是否存在然后删除
drop table if EXISTS tableName

2.4修改表

2.4.1修改表名

            原表名            修改后表名
alter table student RENAME TO stu

 2.4.2设置表的字符集

ALTER TABLE stu CHARACTER set utf8

2.4.3添加字段

ALTER table stu ADD stu_hhh VARCHAR(200) NOT NULL 

 2.4.4修改字段

alter table stu change stu_remark  stu_desc text;

2.4.5删除字段

                     字段名
alter table stu drop stu_remark

3.约束

3.1约束的概念

约束是对表字段的一种限制,约束是为了保证数据的有效性,完整性,正确性

3.2常见约束

3.2.1非空约束

非空约束(not null):限制此列的值不能为空

not null

3.2.2唯一约束

唯一约束(unique): 限制此列的值不能重复

unique

3.2.3主键约束

主键约束(primary key):非空+唯一,能够表示唯一的一条数据

PRIMARY key

在一张表中最多只能有一个主键,主键可以是一个字段,也可以是多个列的组合

3.2.4 添加主键约束

定义主键方式在创建表的时候定义

CREATE table book(
book_id int PRIMARY key,
book_name VARCHAR(10) not null,
book_author CHAR(4)
)
CREATE table book(
book_id int ,
book_name VARCHAR(10) not null,
book_author CHAR(4),
PRIMARY key(book_id)
)

 book_id key有个prl

去除表的主键


ALTER TABLE book DROP primary key

创建表后添加主键

ALTER table book MODIFY book_id int PRIMARY key

3.2.5主键自动增长 auto_increment

create table types(
id int PRIMARY key auto_increment,
types_name VARCHAR(20)not null,
types_remark VARCHAR(100)
)

 设置联合主键

create table types(
stu_num char(8),
course_id int,
score int,
PRIMARY key(stu_num,course_id)
)

3.2.6 外键约束

外键约束(foregin key):用来建立和其他表的连接关系

FOREIGN key

4.dml数据操作语言

4.1插入语句

insert into<表名>(字段名字)values<字段值>;

值和字段顺序要一致

insert into stu(stu_id,stu_name,stu_sex,stu_age,stu_phone) values (
'123456789','张三','男',20,'12345678901'
)

如果是所有字段添加的话也可以不写字段名(但是为了代码的可读性还是建议加上)

insert into stu values
('201309793','张安','男',20,'17770583757','2368044269')

4.2修改数据

语法

update <表名> set <列名>='修改值' where 条件

把电话为 17770583757的名字改为李四

update stu set stu_name = '李四' where
stu_phone = '17770583757'

修改多列
update stu set stu_name = '李四', stu_sex = '女',stu_qq =NULL where
stu_phone = '17770583757'

4.3删除语句

语法

delete from<表名> where 条件

条件删除

delete FROM stu where stu_name='张安';
删除年纪大于等于30的
delete FROM stu where stu_age>=30;

全部删除

delete FROM stu;

 5.DQL查询语言

5.1简单查询

语法(*是查询所有列)

select (字段名字)或者* from where<条件>

5.2where条件

5.2.1单条件

/* 查询年龄大于12的用户*/
select * from stu where stu_age>12
/* 查询年龄大于等于12的用户*/
select * from stu where stu_age>=12
/* 查询年龄不等于12的用户*/
select * from stu where stu_age<>12
/* 查询年龄不等于12的用户*/
select * from stu where stu_age!=12
/* 查询年龄小于20的用户*/
select * from stu where stu_age<20
/* 查询年龄小于等于12的用户*/
select * from stu where stu_age<=20

5.2.2多条件查询

and 同时满足两个或多个条件用and连接  案例查询年龄小于30且性别为男

select* from stu where stu_age<30 and stu_sex='男'

or 或者只需要满足其中一个条件即可 案例是查询年龄小于30或者性别为女

select* from stu where stu_age<30 or stu_sex='女'

between 区间取法  案例是查询年龄在19到39之间的

select* from stu where stu_age between 19 and 39

not  取反 案例是查询年龄不在19到39之间的

select* from stu where stu_age between 19 and 39

5.3模糊查询LIKE

like 后面%表示多个字符

查询名字以李开头的用户
select*  from stu where stu_name like '李%'

_ 下划线表示一个字母或汉字 

查询名字中第二个字为雨的后面可以跟字符
select*  from stu where stu_name like '_雨%'

5.4查询结果处理

这里我们用当前年份减去年龄得到出生年

查询出生年和名字
select stu_name,2022-stu_age from stu

as 关键字 给查询结果的列取别名 

select stu_name as '名字',2022-stu_age as '出生年龄' from stu

 

 distinct 关键字 消除结果的重复行

select distinct stu_age as "年龄" from stu

5.5排序

将查询的结果排序默认是升序

desc是降序asc是升序

根据性别来排序
select * from stu where stu_age>16 order by stu_sex

5.6聚合函数

5.6.1 count

count函数是统计满足条件的个数

案例是统计表中年龄超过20的用户个数

select COUNT(stu_id) from stu where stu_age>20

5.6.2 Max

max 获取最大值

查询年龄最大的年龄

select MAX(stu_age)  from stu

5.6.3 Min

Min 获取最小值

查询年龄最小的年龄

select min(stu_age)  from stu 

5.6.4 sum

sum 指定字段的和

案例为所有用户的年龄和

select SUM(stu_age) from stu

5.6.5 日期函数

NOW() 代表的是系统当前时间 这里now()代表的是系统当前时间

insert into stu(stu_id,stu_name,stu_sex,stu_age,stu_phone,stu_time)values(
'201408073','小p','男',37,'17775776847',NOW())

5.7 分组查询

group by 分组示例为查看男生女生的个数

select stu_sex as '性别',count(stu_age) as '年龄' from stu group by stu_sex

5.8 分页查询

limit 案例是查询第一页每页五条数据

select * from stu  limit 0,5

6.外键约束

案例学生表和班级表

先创建班级表

CREATE table class(
class_id int PRIMARY key auto_increment,
class_name VARCHAR(40) not null UNIQUE,
class_remarl VARCHAR(200),
)

学生表

CREATE table stu(
stu_id CHAR(8) PRIMARY key,
stu_name VARCHAR(20) not null,
stu_sex char(2) not null,
set_age int not null,
cid int,
添加外键约束,把cid添加成外键,与class_id字段绑定
 constraint foreign key(cid) references class(class_id)
)

添加数据,如果添加的数据cid班级表中没有对应的列时是添加不进去的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值