第一章.DDL库和表的操作
1. 对库操作
#创建库create database [if not exists] 库名 [character set 编码集]#if not exists :如果库不存在则创建,存在则不创建。如果没有该字段库存在则报错。#character set 编码集 :设置库的编码集#指定库的编码集create database 库名 character set 编码集#修改库的编码集alter database 库名 character set 编码集#删除库drop database 库名#选库use 库名#查看库的信息show create database 库名
2.对表操作
#注意 :所有表名前都可以加库名。#查看所有表show tables;#查看表信息show create table 表名;#创建表:方式一 :白手起家create table [if not exists] 表名(字段名 类型,字段名 类型,......) [character set 编码集]#创建表:方式二 :基于现有的表结构创建新表create table 库名.表名 like 库名.表名#创建表:方式三 :基于查询结果创建一张新表create table 表名sql查询语句#删除表:drop table 表名;
3.对表中的列进行增,删,改的操作
/*格式:alter table 表名 add/drop/change/modify [column] .......*/#添加字段 :ALTER TABLE emp ADD COLUMN 字段名 字段类型;ALTER TABLE emp ADD COLUMN eage INT;#删除字段:ALTER TABLE emp DROP COLUMN 字段名;ALTER TABLE emp DROP COLUMN eage;#修改字段的名字:ALTER TABLE emp CHANGE COLUMN 原字段名 新字段名 字段类型;ALTER TABLE emp CHANGE COLUMN ename ename2 VARCHAR(20);#修改字段的类型:ALTER TABLE emp MODIFY COLUMN 字段名 类型;#注意:修改的类型和原数据类型是否能转换。#通常情况下不建议修改ALTER TABLE emp MODIFY COLUMN ename2 INT;
4.清空表
TRUNCATE TABLE emp;
5.修改表的名字
alter table 原表名 rename to 新表名
第二章.DCL 数据库事务
1.说明:
事务:将一组逻辑操作单元从一种状态变换到另外一种状态
案例 :AA给BB转账1000
AA账户要减钱BB账户要加钱
上面遇到的问题 :可能发生AA账户减钱成功,BB账户加钱失败
解决思路:
try{开启事务;AA账户要减钱BB账户要加钱事务提交;}catch(Exception e){事务回滚;}
2.MySQL中的操作
禁止自动提交 :set autocommit=false提交事务 :commit回滚事务 : rollback
第三章.表中数据的增,删,改
1.向表中插入数据
#插入单行数据insert into 表名(字段名1,字段名2...) values(值1,值2...)#如果插入的是全字段---所有字段内容全部插入insert into 表名 values(值1,值2...)#插入多行数据insert into 表名(字段名1,字段名2...) values(值1,值2...),(值1,值2...),(值1,值2...)....#基于查询结果插入到当前表中insert into 表名(字段名1,字段名2....)sql查询语句 #注意:查询语句中字段的类型和字段的个数。
2.删除数据
delete from 表名; #删除全部内容delete from 表名 where 过滤条件;
3.修改数据
update 表名 set 字段名1=值1,字段名2=值2 ...... #修改表中所有的内容update 表名 set 字段名1=值1,字段名2=值2 ...... where 过滤条件
4.truncate table 和 delete from的区别
#1.事务:delete可以事务回滚,truncate不能事务回滚#2.效率: truncate效率高,delete效率低。如果可以确定内容就是要全部删除# 那么使用truncate
第四章.约束
1.有哪些约束?
/*NOT NULL 非空约束,规定某个字段不能为空UNIQUE 唯一约束,规定某个字段在整个表中是唯一的PRIMARY KEY 主键(非空且唯一)FOREIGN KEY 外键CHECK 检查约束(mysql不支持)DEFAULT 默认值*/
2.约束分类 :列级约束 vs 表级约束
/*列级约束:对单独的某列进行约束表级约束:可以对多列组合进行约束注意:not null和default只能是列级约束*/
3.创建表时添加约束
3.1方式一 :在字段后面添加约束,只对一个字段有效(default , not null 只有列级约束)
CREATE TABLE stu(id INT PRIMARY KEY,#主键(非空且唯一)sname VARCHAR(20) NOT NULL,#非空约束sid INT UNIQUE,#唯一约束sex INT DEFAULT 1 #默认约束);
3.2方式二 :如果需要对多个字段进行约束
CREATE TABLE stu2(id INT,sname VARCHAR(20),sid INT,sex INT,#在mysql的约束中primary key和unique会自动创建索引。#格式:CONSTRAINT 索引名 PRIMARY KEY(字段名1,字段名2.....)#CONSTRAINT stu2_id_sid PRIMARY KEY(id,sid)CONSTRAINT stu2_id_sid UNIQUE(id,sid));
4.表创建成功以后添加约束(了解一下)
/*primary key添加约束 : alter table 表名 add primary key (字段名)修改约束 : alter table 表名 modify 字段名 类型 primary key删除约束 : alter table 表名 drop primary key*/ALTER TABLE stu3 ADD PRIMARY KEY(id);ALTER TABLE stu3 DROP PRIMARY KEY;#每张表中只有一个主键,所以不需字段ALTER TABLE stu3 MODIFY id INT PRIMARY KEY;/*unique:添加约束 : alter table 表名 add unique(字段名)添加约束 : alter table 表名 add constraint 索引名 unique(字段名)修改约束 :alter table 表名 modify 字段名 类型 unique删除约束 :alter table 表名 drop index 索引名*/ALTER TABLE stu3 ADD UNIQUE(sid);#索引名默认就是字段名ALTER TABLE stu3 DROP INDEX sid;#查看表中的索引SHOW INDEX FROM stu3;#通过修改字段类型的方式添加约束ALTER TABLE stu3 MODIFY COLUMN sid INT UNIQUE;#添加表级约束ALTER TABLE stu3 ADD CONSTRAINT stu3_id_sid UNIQUE(id,sid);/*not null添加约束:alter table 表名 modify 字段名 字段类型 not null删除约束 :alter table 表名 modify 字段名 字段类型 nulldefault:设置默认约束 : alter table tb_name alter 字段名 set default value;删除默认约束 : alter table tb_name alter 字段名 **drop** default;foreign key:添加约束 : ALTER TABLE 表名 ADD [CONSTRAINT emp_dept_id_fk] FOREIGN KEY(dept_id)REFERENCES dept(dept_id);删除约束 :alter table 表名 drop foreign key 索引名*/
5.外键约束
5.1案例
#主表CREATE TABLE classes( #班级表cid INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20));#从表CREATE TABLE student(sid INT AUTO_INCREMENT PRIMARY KEY,classes_name VARCHAR(20),cid INT,#将当前表中的cid和classes表中的cid作一个外键约束FOREIGN KEY(cid) REFERENCES classes(cid));
5.2注意事项
创建表时:先创建主表再创建从表插入数据:先往主表中插入数据再往从表中插入数据删除数据:先删除从表中的数据再删除主表中的数据
5.3级联删除
#主表CREATE TABLE classes( #班级表cid INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20));#从表CREATE TABLE student(sid INT AUTO_INCREMENT PRIMARY KEY,classes_name VARCHAR(20),cid INT,#将当前表中的cid和classes表中的cid作一个外键约束FOREIGN KEY(cid) REFERENCES classes(cid) on delete cascade);
第五章.limit
1.格式:
limit 索引,数据的条数
2.注意:
索引是从0开始的
3.分页公式:
limit (当前页数-1)*每页条数,每页条数
