SQL笔记二

DML语言

插入

#语法,方式一,可以进行子查询
insert into 表名
values#实例
#省略列名就是列名全写,必须按照顺序写
#个数必须一致,必须类型相同
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES (13,'唐艺昕','女','1999-4-23','18888888888',NULL,2),
(13,'唐艺昕','女','1999-4-23','18888888888',NULL,2),
(13,'唐艺昕','女','1999-4-23','18888888888',NULL,2);#可以同时插入多行
#语法,方式二
insert into 表名
set 列名=,....
#实例
INSERT INTO beauty
SET id=50,NAME='堂行',phone='1823';

修改

#修改单表的语法
update *
set=新值,...
where 条件
#实例
UPDATE beauty
SET phone = '123'
WHERE id='20';
#修改多表
#92
update1,表2
set=新值,...
where 条件
and 条件
#99
update1,表2
inner|left|right join2
on 条件
set=新值,...
where 条件
#实例
UPDATE boys bo
INNER JOIN beauty b
ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='114'
WHERE bo.`boyName`='张无忌';

删除

#delete语法
#单表
delete fromwhere 条件
limit 条目数
#实例
DELETE FROM beauty
WHERE phone LIKE '%9';
#多表
#92
delete1的别名,表2的别名(看你选择删那个)
from1 别名,表二 别名
where 连接方式
and 筛选方式;
#99
delete1的别名,表2的别名(看你选择删那个)
from1 别名
inner|left|right join2
on 条件
where 条件
#实例
DELETE b
FROM beauty b
INNER JOIN boys bo ON b.`boyfriend_id`=bo.id
WHERE bo.`boyName`='张无忌';
#truncate语法全部删除
truncate table 表名
#实例
TRUNCATE TABLE boys

DDL语言

数据定义语言

通用写法

DROP DATABASE IF EXISTS *;
CREATE DATABASE IF NOT EXISTS *;
库的管理
创建(create)
#语法
create database 库名;
#案列
CREATE DATABASE IF NOT EXISTS books;
#IF NOT EXISTS判断是否存在
修改(alter)
ALTER DATABASE books CHARACTER SET gbk;#修改库的字符集
删除(drop)
DROP DATABASE IF EXISTS books;
#IF EXISTS判断是否存在
表的管理
创建(create)
#语法
create tables 表名(
	列名 列的类型{(长度) 约束},
    ....
);
#案列
CREATE TABLE book(
	id INT,
	bName VARCHAR(20),
	price DOUBLE,
	authorid INT,
	publishDate DATETIME
);
修改(alter)
#列名,
ALTER TABLE book CHANGE COLUMN publishDate pubDate DATETIME;
#类型或约束,
ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP;
#添加,
ALTER TABLE book ADD COLUMN annual DOUBLE {first|after  字段名};
#删除,
ALTER TABLE book DROP COLUMN annual;
#改表名
ALTER TABLE author RENAME TO book_author;
删除(drop)
DROP TABLE IF EXISTS book_author;
#IF EXISTS判断是否存在
复制
#仅仅复制表的结构
CREATE TABLE copy LIKE author;
#复制表的结构+数据
CREATE TABLE copy3
SELECT * FROM author
WHERE nation='中';

常见约束

#一种限制表中的数据
#六大约束
NOT NULL#非空
DEFAULT#默认值
PRIMARY KEY#主键,保证字符值具有唯一性,非空,一个表中只有一个,多个元素可以组成一个主键,称为组合主键
PRIMARY KEY(id,al);
UNIQUE#唯一性,可为空,可以多个,也允许组合
UNIQUE(seat,ll)
CHECK#检测约束 添加限制条件 mysql不可用
FOREIGN KEY#外键,限制两个表的关系,在从表添加外键约束,用于主表中的某列的值,要求从表设置外键关系,从表的外键列属性必须和主表的一致或者兼容,主表关联列必须是一个key(一般是主键或者唯一),插入数据先主表后从表,删除从表在主表
#约束分类
#列级约束 六大约束语法都支持,但是外键约束没有效果
#表级约束 除了非空,其他都可
#通用写法
CREATE TABLE students(
	id INT PRIMARY KEY,
	stuname VARCHAR(20) NOT NULL,
	gender CHAR(1) CHECK(gender='男' OR gender = '女'),
	seat INT UNIQUE,
	age INT DEFAULT 18,
	majorid INT ,
    CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
);
#列级约束
#案例
CREATE TABLE students(
	id INT PRIMARY KEY,
	stuname VARCHAR(20) NOT NULL,
	gender CHAR(1) CHECK(gender='男' OR gender = '女'),
	seat INT UNIQUE,
	age INT DEFAULT 18,
	majorid INT REFERENCES major(id)
);
#表级约束
{constraint 约束名} 约束类型(字段名)
#案例
CREATE TABLE stuinfo(
	id INT,
	stuname VARCHAR(20),
	gender CHAR(1),
	seat INT,
	age INT,
	majorid INT,
	
	CONSTRAINT pk PRIMARY KEY(id),
	CONSTRAINT uq UNIQUE(seat),
	CONSTRAINT ck CHECK(gender='男' OR gender = '女'),
	CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
);
#修改表的约束
#列级约束
alter table stuinfo modify column stuname varchar(20) not null;
#表级约束
alter table stuinfo add column primary key(id);
#删除
#列级约束
alter table stuinfo modify column stuname varchar(20) null;
#表级约束
alter table stuinfo drop column primary key;

标识列

AUTO_INCREMENT,可以不用手动插入值,系统提供默认的序列号

特点:必须是一个key,一个表只能有一个标识列,标识列只能是数值型,可以设置步长

CREATE TABLE tab_i(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20)
);
SET auto_increment_increment = 3;#修改标识列增长值
INSERT INTO tab_i(id,NAME) VALUES(5,'lucy');#可以直接先插入一个值为开头
INSERT INTO tab_i(NAME) VALUES('lucy');#直接插入后自动排序
alter table tab_i modify column id int PRIMARY KEY AUTO_INCREMENT;#修改
alter table tab_i modify column id int;#删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值