MySQL基础语法总结
目录
一:MySQL简介
1:MySQL的介绍
2:MySQL的特点
3:MySQL的版本
二:MySQL DDL语法
1:DDL解释
2:对数据库的常用操作
3:对表结构的常用操作-创建表
4:对表结构的其它操作
5:修改表结构格式
6:修改列名和类型
7:修改表删除列
8:修改表名
三:MySQL DML语法
1:基本介绍
2:数据插入
3:数据修改
4:数据删除
四:MySQL约束
1:主键约束
①:添加单列主键
②:联合主键
③:添加主键
④:删除主键
2:自增长约束
3:非空约束
4:唯一约束
5:默认约束
一:MySQL简介
1:MySQL的介绍
- MySQL数据库管理系统由瑞典的DataKonsultAB公司研发,该公司被Sun公司收购,现在Sun公司又被Oracle公司收购,因此MySQL目前属于Oracle旗下产品。
- MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小,速度快,总体拥有成本低,一般中小型网站的开发都选择MySQL作为网站数据库。
2:MySQL的特点
①:MySQL数据库是用C和C++语言编写的,以保证源码的可移植性
②:支持多个操作系统例如:Windows,Linux,Mac OS等等
③:支持多线程,可以充分的利用CPU资源
④:为多种编程语言提供API,包括C语言,Java,PHP。Python语言等
⑤:MySQL优化了SQL算法,有效的提高了查询速度。
⑥:MySQL开放源代码且无版权制约,自主新强,使用成本低。
⑦:MySQL历史悠久,社区及用户非常活跃,遇到问题,可以很快获取到帮助。
3:MySQL的版本
针对不同的用户,MySQL分为两种不同的版本;
- MySQL Comminity Server
社区版本,免费,但是MySQL不提供官方技术支持。
- MySQL Enterprise Edition
商业版,该版本是收费版本,可以使用30天,官方提供技术支持
- MySQL Cluster
集群版,开源免费,可将几个MySQL Server封装成一个Server。
- MySQL Cluster CGE
高级集群版,需付费。
- MySQL Workbench(GUI TOOL)
一款专为MySQL设计的ER/数据库建模工具。MySQL Workbench又分为两个版本,分别是社区版(MySQL Workbench OSS),商用版(MySQL Workbench SE)。
二:MySQL DDL语法
1:DDL解释
DDL(Data Definition Language) 数据定义语言,该语言部分包括以下内容。
- 对数据库的常用操作
- 对表结构的常用操作
- 修改表结构
2:对数据库的常用操作
①:show databases;
-- 1: 查看当前所有的数据库
show databases;
②:create database if not exists 数据库名称
-- 2: 创建数据库
create database school;
create database if not exists school;
③:use 数据库名称
-- 3:选择使用哪一个数据库
use school;
④:drop database 数据库名称
-- 4:删除数据库
drop database school;
drop database if exists school;
⑤:修改数据库编码
-- 5:修改数据库编码
alter database school character set utf8;
⑥:完整的SQL代码
-- DDL 数据操作语言
-- 1: 查看当前所有的数据库
show databases;
-- 2: 创建数据库
create database if not exists school;
-- 3:选择使用哪一个数据库
use school;
-- 4:删除数据库
drop database school;
drop database if exists school;
-- 5:修改数据库编码
alter database school character set utf8;
3:对表结构的常用操作-创建表
①:创建表格式
create table [if not exists] 表名(
字段1 类型[(宽度)] [约束条件] [comment '字段说明'],
字段2 类型[(宽度)] [约束条件] [comment '字段说明'],
字段3 类型[(宽度)] [约束条件] [comment '字段说明'],
)[表的一些设置];
创建表是构建一张空表,指定这个表的名字,这个表有几列,每一列叫什么名字,以及每一列存储的数据类型。
-- 创建数据表
-- 1:选择数据库
use school;
-- 2: 创建数据表
create table if not exists student(
sid int,
name varchar(20),
gender varchar(20),
age int,
birthday date,
address varchar(20)
);
4:对表结构的其它操作
①:查看当前数据库的所有表名称
-- 查看当前数据库中所有的表
show tables ;
②:查看创建数据表的语句
-- 查看数据表的创建语句
show create table student;
③:查看表结构
-- 查看表结构
desc student;
④:删除表
-- 删除表
drop table student;
5:修改表结构格式
语法格式
alter table 表名 add 列名 类型(长度) 【约束】;
例子:
-- 为student表添加一个字段为:系别dept类型为department
alter table student add column dept varchar(20);
6:修改列名和类型
语法格式
-- 修改列名和表名,alter table 表名 change 旧列名 新列名 类型(长度) [约束]
例如:
-- 修改列名和表名,alter table 表名 change 旧列名 新列名 类型(长度) [约束]
-- 为student表中的dept字段更名为department varchar(30)
alter table student change dept department varchar(30);
7:修改表删除列
语法格式:
alter table 表名 drop 列名;
例如:
# 删除student表中department这列
alter table student drop department;
8:修改表名
语法格式:
rename table 表名 to 新表名;
例如:
# 将表student改名为stu
rename table student to stu
三:MySQL DML语法
1:基本介绍
DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中标的数据几列进行更新。
关键字:
- 插入Insert
- 删除delete
- 更新update
2:数据插入
- 语法格式
insert into 表(列名1,列表2,列表3...) values(值1,值2,值3...);// 向表中插入某些
insert into 表 values(值1,值2,值3...);// 向表中插入所有列
例子:
-- 向表中插入所有列
insert into student(sid, name, gender, age, birthday, address,department)
values (1,'tom','男',18,'2000-01-01','郑州','销售部');
insert into student values (2,'jerry','女',28,'2001-01-01','北京','研发部');
-- 一次性插入多条数据
insert into student(sid, name, gender, age, birthday, address,department)
values (8,'tom1','男',18,'2000-01-01','郑州','销售部'),
(9,'corky1','女',18,'2001-01-01','北京','法务部');
insert into student values (2,'jerry','女',28,'2001-01-01','北京','研发部'),(6,'yi','男',39,'2002-01-01','上海','研发部');
insert into student(sid) values (7);
3:数据修改
语法格式
update 表名 set 字段名=值,字段名=值...;
update 表名 set 字段名=值,字段名=值... where 条件;
例子:
-- 将所有学生的地址修改为重庆
update student set address='重庆';
-- 将id为1004的学生的地址修改为北京
update student set address='北京' where id=1004;
-- 将id为1005的学生的地址修改为北京,成绩修成绩修改为100
update student set address='广州',score=100 where id=1005
4:数据删除
语法格式:
delete from 表名[where 条件];
truncate table 表名 或者truncate 表名
例子:
-- 1:删除sid为1004的学生数据
delete from student where sid=1004;
-- 2: 删除表所有数据
delete from student;
-- 3:清空表数据
truncate table student;
truncate student;
注意:delete和truncate原理不同,delete只删除内容,而truncate类似于drop table,可以理解为是将整个表删除,然后再创建该表;
四:MySQL约束
create table [if not exists] 表名(
字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
)[表的一些设置];
概念
约束英文:constraint
约束实际上就是表中数据的限制条件
作用
表再设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复。
分类
- 主键约束(primary key) PK
- 自增长约束(auto_ increment)
- 非空约束(not_null)
- 唯一性约束(unique)
- 默认约束(default)
- 零填充约束(zerofill)
- 外键约束(foreign key) FK
1:主键约束
概念
MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便再RDBMS中尽快的找到某一行。
主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值。
每个表最多只允许一个主键
主键约束的关键字是:primary key
当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。
操作
- 添加单列主键
- 添加多列联合主键
- 删除主键
①:添加单列主键
创建单列主键有两种方式,一种是在定义字段的同时指定主键,一种是定义完字段之后指定主键
方式1-语法:
-- 在 create table 语句中,通过 primary key 关键字来指定主键。
-- 在定义字段的同时指定主键,语法格式如下:
create table 表名(
...
<字段名><数据类型> primary key
...
)
方式1-实现:
-- 在定义字段之后再指定主键,语法格式如下:
create table 表名(
...
[constraint<约束名>] primary key[字段名]
)
-- 数据修改
-- 格式
create table if not exists emp(
sid int primary key,
sname varchar(20),
deptid int,
salary double
);
方式2-实现:
create table emp2(
eid INT,
name VARCHAR(20),
deptId INT,
salary double,
constraint pk1 primary key(id)
)
-- 主键不能重复
insert into emp(sid, sname, deptid, salary) VALUES (1001,'tom',1,122.34);
insert into emp(sid, sname, deptid, salary) VALUES (1002,'jerry',1,122.34);
-- 主键不能为空
insert into emp(sid, sname, deptid, salary) VALUES (null,'tom',1,122.34);
②:联合主键
所谓的联合主键,就是这个主键是由一张表中多个字段中有多个字段组成的。
注意:
1:当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。
2:一张表只能有一个主键,联合主键也是一个主键
语法:
create table 表名(
...
primary key(字段1,字段2,...,字段n)
)
实现:
create table emp3(
name varchar(20),
deptId int,
salary double,
primary key(name,deptId)
)
insert into emp3(name, deptId, salary) VALUES ('tom',1,1200.12);
insert into emp3(name, deptId, salary) VALUES ('tom',1,1200.12);
insert into emp3(name, deptId, salary) VALUES ('jerry',1,1200.12);
insert into emp3(name, deptId, salary) VALUES (null,1,1200.12);
③:添加主键
主键约束不仅可以在创建表的同时创建,也可以在修改表时添加。
语法:
create table 表名(
...
);
alter table <表名> add primary key(字段列表);
实现:
-- 添加主列主键
create table emp5(
eid int,
name varchar(20),
deptId int,
salary double
);
-- 外部添加主键
alter table emp5 add primary key(name,deptId);
④:删除主键
一个表中不需要主键约束时,就需要从表中将其删除。删除主键约束的方法要比创建主键约束容易的多。
格式:
alter table <数据表名> drop priamry key;
实现:
-- 删除单列主键
alter table emp1 drop primary key;
-- 删除联合主键
alter table emp5 drop primary key;
2:自增长约束
- 概念
在MySQL中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。
通过给字段添加auto_increment属性来实现主键自增长
- 语法
字段名 数据类型 auto_increment
- 操作
create table t_user1(
id int primary key auto_increment,
name varchar(20)
);
3:非空约束
- 概念
MySQL非空约束(not null)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。
- 语法
方式1:<字段名><数据类型> not null;
方式2:alter table 表名 modify 字段 类型 not null;
添加非空约束-方式1
方式1,创建表时指定
create table t_user6 (
id int ,
name varchar(20) not nul1
address varchar(20) not null);
添加非空约束-方式2
方式2,创建表之后指定
create table t_user7 (
id int ,
name varchar(20),
address varchar(20));
alter table t_user7 modify name varchar(20) not null;
alter table t_user7 modify address varchar(20) not null;删除非空约束
alter table 表名 modify 字段 类型
alter table t_user7 modify name varchar(20) ;
alter table t_user7 modify address varchar(20);
4:唯一约束
- 概念
唯一约束 (Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。
- 语法
方式1:<字段名> <数据类型>unique
方式2: alter table 表名add constraint 约束名unique (列) ;
添加唯一约束-方式1
-- 创建表时指定
create table t_user8(
id int
name varchar(20)phone number varchar(20) unique — 指定唯一约束
);
5:默认约束
- 概念
MysQL默认值约束用来指定某列的默认值
- 语法
方式1:<字段名> <数据类型> default <默认值>;
方式2: alter table 表名 modify 列名 类型 default 默认值;
添加默认约束-方式1
create tablet user10 (
id int
name varchar(20)
address varchar(20) default ‘北京’ — 指定默认约束);
还没有评论,来说两句吧...