1.什么是SQL?
结构化查询语言,其实就是定义了操作所有关系型数据库的规则
2.SQL通用语法:
1.SQL语句可以单行或多行书写,以分号结尾。
2.使用空格或缩进来增强语句的可读性
3.MySql的SQL语句不区分大小写,关键字建议大写
SQL语言的分类:
DDL:操作数据库、表
DQL:查询表中数据
DML:增删改表中的数据
DCL:授权
DDL:
1.操作数据库:CRUD
1.Create:创建
create database 数据库名称;创建数据库
create database if not exists 数据库名称;创建一个数据库,创建前
先判断指定的数据库名称是否已经存在,已经存在则不创建,不存在则创建
create database 数据库名称 character set 码表;
创建一个指定字符集的数据库
2.Retrieve:查询
show databases; 查看所有数据库
show create database 数据库的名称; 查看某一数据库的字符集:查看某个数据库的创建语句
3.Update:修改
alter database 数据库名称 character set 字符集名称;
修改指定数据库的字符集
4.Delete:删除
drop database 数据库名称;删除数据库
drop database if exists 数据库名称;
判断数据库是否存在,存在就删除
5.使用数据库
select database(); 查询当前正在使用的数据库名称
use 数据库名称;使用数据库
聚合函数的计算是排除null值的
判断where后的条件是否为null,不能使用 = 号,只能使用 is null
在已创建的表中添加主键:
1.alter table 表名 modify 字段名 字段类型 primary key;
2.ALTER TABLE 表名 ADD PRIMARY KEY 字段名;
重点记忆
**自动增长(字段必须是整数类型)
默认地 AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,可以设置自增的初始值:
CREATE TABLE 表名(
列名 int primary key AUTO_INCREMENT
) AUTO_INCREMENT=起始值;
DELETE 和 TRUNCATE 对自增长的影响:
DELETE:删除所有的记录之后,自增长没有影响
TRUNCATE:删除以后,自增长又重新开始。
对一列设置唯一约束,不能出现同名的学生,重复插入多个 null 会怎样?
null 没有数据,不存在重复的问题
疑问:如果一个字段设置了非空与唯一约束,该字段与主键的区别?
1)主键数在一个表中,只能有一个。不能出现多个主键。主键可以单列,也可以是多列。
2)自增长只能用在主键上
外键关联过之后可以为null,但是不能为不存在的外键值
主键约束自增长:
在添加元素时,可以添加null,会根据上一条数据自动加1,也可以自己自定数据
删除自动增长,可以使用
alter table 表名 modify 列名 数据类型;
该语句只能把自增删除,不能删除主键**
约束语句:
主键(primary key):
1.创建表时设置主键约束:
create table 表名(
字段 数据类型 primary key,
);
2.创建表后设置主键约束:
1.alter table 表名 modify 字段 数据类型 primary key;
2.ALTER TABLE 表名 change 字段 字段 数据类型 PRIMARY KEY;
3.ALTER TABLE 表名 ADD PRIMARY KEY (字段名);
3.删除主键:
alter table 表名 drop primary key;
非空(not null):
1.创建表时设置非空约束:
create table 表名(
字段 数据类型 not null,
);
2.创建表后设置非空约束:
1.alter table 表名 modify 字段 数据类型 not null;
2.alter table 表名 change 字段 字段 数据类型 not null;
3.删除非空约束:
1.alter table 表名 modify 字段 数据类型
2.alter table 表名 change 字段 字段 数据类型
唯一(unique):
1.创建时设置唯一约束:
create table 表名(
字段 数据类型 unique,
);
2.创建表后设置唯一约束:
1.alter table 表名 modify 字段 数据类型 unique;
2.alter table 表名 change 字段 字段 数据类型 unique;
3.去除唯一约束:
alter table 表名 drop index 字段;
外键约束(foreign key):
1.创建表时设置外键约束、更新级联、删除级联:
create table 表名(
字段 数据类型,
constraint 外键名 foreign key (字段) references 要关联的表(要关联的字段:一般为主键) on update cascade on delete cascade
);
2.创建表后设置外键约束、更新级联、删除级联:
alter table 表名 add constraint 外键名 foreign key (字段) references 要关联的表(要关联的字段:一般为主键) on update cascade on delete cascade
3.删除外键约束、更新级联、删除级联:
alter table 表名 drop foreign key 外键名称;