第一章.DDL库和表的操作

1. 对库操作

  1. #创建库
  2. create database [if not exists] 库名 [character set 编码集]
  3. #if not exists :如果库不存在则创建,存在则不创建。如果没有该字段库存在则报错。
  4. #character set 编码集 :设置库的编码集
  5. #指定库的编码集
  6. create database 库名 character set 编码集
  7. #修改库的编码集
  8. alter database 库名 character set 编码集
  9. #删除库
  10. drop database 库名
  11. #选库
  12. use 库名
  13. #查看库的信息
  14. show create database 库名

2.对表操作

  1. #注意 :所有表名前都可以加库名。
  2. #查看所有表
  3. show tables;
  4. #查看表信息
  5. show create table 表名;
  6. #创建表:方式一 :白手起家
  7. create table [if not exists] 表名(
  8. 字段名 类型,
  9. 字段名 类型,
  10. ......
  11. ) [character set 编码集]
  12. #创建表:方式二 :基于现有的表结构创建新表
  13. create table 库名.表名 like 库名.表名
  14. #创建表:方式三 :基于查询结果创建一张新表
  15. create table 表名
  16. sql查询语句
  17. #删除表:
  18. drop table 表名;

3.对表中的列进行增,删,改的操作

  1. /*
  2. 格式:
  3. alter table 表名 add/drop/change/modify [column] .......
  4. */
  5. #添加字段 :ALTER TABLE emp ADD COLUMN 字段名 字段类型;
  6. ALTER TABLE emp ADD COLUMN eage INT;
  7. #删除字段:ALTER TABLE emp DROP COLUMN 字段名;
  8. ALTER TABLE emp DROP COLUMN eage;
  9. #修改字段的名字:ALTER TABLE emp CHANGE COLUMN 原字段名 新字段名 字段类型;
  10. ALTER TABLE emp CHANGE COLUMN ename ename2 VARCHAR(20);
  11. #修改字段的类型:ALTER TABLE emp MODIFY COLUMN 字段名 类型;
  12. #注意:修改的类型和原数据类型是否能转换。
  13. #通常情况下不建议修改
  14. ALTER TABLE emp MODIFY COLUMN ename2 INT;

4.清空表

  1. TRUNCATE TABLE emp;

5.修改表的名字

  1. alter table 原表名 rename to 新表名

第二章.DCL 数据库事务

1.说明:

事务:将一组逻辑操作单元从一种状态变换到另外一种状态

案例 :AA给BB转账1000

  1. AA账户要减钱
  2. BB账户要加钱

上面遇到的问题 :可能发生AA账户减钱成功,BB账户加钱失败

解决思路:

  1. try{
  2. 开启事务;
  3. AA账户要减钱
  4. BB账户要加钱
  5. 事务提交;
  6. }catch(Exception e){
  7. 事务回滚;
  8. }

2.MySQL中的操作

  1. 禁止自动提交 :set autocommit=false
  2. 提交事务 :commit
  3. 回滚事务 : rollback

第三章.表中数据的增,删,改

1.向表中插入数据

  1. #插入单行数据
  2. insert into 表名(字段名1,字段名2...) values(值1,值2...)
  3. #如果插入的是全字段---所有字段内容全部插入
  4. insert into 表名 values(值1,值2...)
  5. #插入多行数据
  6. insert into 表名(字段名1,字段名2...) values(值1,值2...),(值1,值2...),(值1,值2...)....
  7. #基于查询结果插入到当前表中
  8. insert into 表名(字段名1,字段名2....)
  9. sql查询语句 #注意:查询语句中字段的类型和字段的个数。

2.删除数据

  1. delete from 表名; #删除全部内容
  2. delete from 表名 where 过滤条件;

3.修改数据

  1. update 表名 set 字段名1=值1,字段名2=值2 ...... #修改表中所有的内容
  2. update 表名 set 字段名1=值1,字段名2=值2 ...... where 过滤条件

4.truncate table 和 delete from的区别

  1. #1.事务:delete可以事务回滚,truncate不能事务回滚
  2. #2.效率: truncate效率高,delete效率低。如果可以确定内容就是要全部删除
  3. # 那么使用truncate

第四章.约束

1.有哪些约束?

  1. /*
  2. NOT NULL 非空约束,规定某个字段不能为空
  3. UNIQUE 唯一约束,规定某个字段在整个表中是唯一的
  4. PRIMARY KEY 主键(非空且唯一)
  5. FOREIGN KEY 外键
  6. CHECK 检查约束(mysql不支持)
  7. DEFAULT 默认值
  8. */

2.约束分类 :列级约束 vs 表级约束

  1. /*
  2. 列级约束:对单独的某列进行约束
  3. 表级约束:可以对多列组合进行约束
  4. 注意:not null和default只能是列级约束
  5. */

3.创建表时添加约束

3.1方式一 :在字段后面添加约束,只对一个字段有效(default , not null 只有列级约束)

  1. CREATE TABLE stu(
  2. id INT PRIMARY KEY,#主键(非空且唯一)
  3. sname VARCHAR(20) NOT NULL,#非空约束
  4. sid INT UNIQUE,#唯一约束
  5. sex INT DEFAULT 1 #默认约束
  6. );

3.2方式二 :如果需要对多个字段进行约束

  1. CREATE TABLE stu2(
  2. id INT,
  3. sname VARCHAR(20),
  4. sid INT,
  5. sex INT,
  6. #在mysql的约束中primary key和unique会自动创建索引。
  7. #格式:CONSTRAINT 索引名 PRIMARY KEY(字段名1,字段名2.....)
  8. #CONSTRAINT stu2_id_sid PRIMARY KEY(id,sid)
  9. CONSTRAINT stu2_id_sid UNIQUE(id,sid)
  10. );

4.表创建成功以后添加约束(了解一下)

  1. /*
  2. primary key
  3. 添加约束 : alter table 表名 add primary key (字段名)
  4. 修改约束 : alter table 表名 modify 字段名 类型 primary key
  5. 删除约束 : alter table 表名 drop primary key
  6. */
  7. ALTER TABLE stu3 ADD PRIMARY KEY(id);
  8. ALTER TABLE stu3 DROP PRIMARY KEY;#每张表中只有一个主键,所以不需字段
  9. ALTER TABLE stu3 MODIFY id INT PRIMARY KEY;
  10. /*
  11. unique:
  12. 添加约束 : alter table 表名 add unique(字段名)
  13. 添加约束 : alter table 表名 add constraint 索引名 unique(字段名)
  14. 修改约束 :alter table 表名 modify 字段名 类型 unique
  15. 删除约束 :alter table 表名 drop index 索引名
  16. */
  17. ALTER TABLE stu3 ADD UNIQUE(sid);#索引名默认就是字段名
  18. ALTER TABLE stu3 DROP INDEX sid;
  19. #查看表中的索引
  20. SHOW INDEX FROM stu3;
  21. #通过修改字段类型的方式添加约束
  22. ALTER TABLE stu3 MODIFY COLUMN sid INT UNIQUE;
  23. #添加表级约束
  24. ALTER TABLE stu3 ADD CONSTRAINT stu3_id_sid UNIQUE(id,sid);
  25. /*
  26. not null
  27. 添加约束:alter table 表名 modify 字段名 字段类型 not null
  28. 删除约束 :alter table 表名 modify 字段名 字段类型 null
  29. default:
  30. 设置默认约束 : alter table tb_name alter 字段名 set default value;
  31. 删除默认约束 : alter table tb_name alter 字段名 **drop** default;
  32. foreign key:
  33. 添加约束 : ALTER TABLE 表名 ADD [CONSTRAINT emp_dept_id_fk] FOREIGN KEY(dept_id)
  34. REFERENCES dept(dept_id);
  35. 删除约束 :alter table 表名 drop foreign key 索引名
  36. */

5.外键约束

5.1案例

  1. #主表
  2. CREATE TABLE classes( #班级表
  3. cid INT PRIMARY KEY AUTO_INCREMENT,
  4. NAME VARCHAR(20)
  5. );
  6. #从表
  7. CREATE TABLE student(
  8. sid INT AUTO_INCREMENT PRIMARY KEY,
  9. classes_name VARCHAR(20),
  10. cid INT,
  11. #将当前表中的cid和classes表中的cid作一个外键约束
  12. FOREIGN KEY(cid) REFERENCES classes(cid)
  13. );

5.2注意事项

  1. 创建表时:先创建主表再创建从表
  2. 插入数据:先往主表中插入数据再往从表中插入数据
  3. 删除数据:先删除从表中的数据再删除主表中的数据

5.3级联删除

  1. #主表
  2. CREATE TABLE classes( #班级表
  3. cid INT PRIMARY KEY AUTO_INCREMENT,
  4. NAME VARCHAR(20)
  5. );
  6. #从表
  7. CREATE TABLE student(
  8. sid INT AUTO_INCREMENT PRIMARY KEY,
  9. classes_name VARCHAR(20),
  10. cid INT,
  11. #将当前表中的cid和classes表中的cid作一个外键约束
  12. FOREIGN KEY(cid) REFERENCES classes(cid) on delete cascade
  13. );

第五章.limit

1.格式:

  1. limit 索引,数据的条数

2.注意:

  1. 索引是从0开始的

3.分页公式:

  1. limit (当前页数-1)*每页条数,每页条数