SQL语言的分类
-
数据定义语言:(DDL,Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop 等。
-
数据操作语言:(DML,Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update 等
-
数据控制语言:(DCL,Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户;关键字:grant 等。
-
数据查询语言:(DQL,Data Query Language),用来查询数 据库中表的记录。关键字:select,from,where 等
MySQL数据类型分类
MySQL支持多种数据类型,大致分为三类:
? 数值
? 日期/时间
-
日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和 YEAR
-
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的 MySQL不能表示的值时使用"零"值。
? 字符串(字符)类型
- 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、 BLOB、TEXT、ENUM和SETCHAR和VARCHAR类型类似,但它们保存和检索的方式不同。
- BINARY和VARBINARY类似于CHAR和VARCHAR,不同的是它 们包含二进制字符串而不要非二进制字符串。
- BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB
- 有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和 LONGTEXT。
简单的SQL语法
创建数据库
create database 数据库名;
create database 数据库名 character set 字符集;
建议字符集格式设置 utf8或gbk
查看数据库
查看数据库服务器中的所有的数据库:show databases;
查看某个数据库的定义的信息:show create database 数据库名;
删除数据库
drop database XXX
修改数据库
修改数据库默认的字符集:
alter database 数据库名 default character set 字符集
创建表
create table 表名(
-- 可以定义多个列
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);
查看数据库中的所有表:show tables;
查看表结构:desc 表名;
查看创建表的 SQL 语句:show create table 表 名;
这里要注意的是double类型在指定长度的时候,我们需要指定小数点之前的长度和小数点之后的长度。
删除表
drop table 表名;
修改表
--修改表添加列
alter table 表名 add 列名 类型(长度) 约束;
-- 修改表修改列的类型长度及约束
alter table 表名 modify 列名 类型(长度) 约束;
-- 修改表修改列名
alter table 表名 change 旧列名 新列名 类型(长度) 约束;
-- 修改表删除列
alter table 表名 drop 列名;
-- 修改表名
rename table 表名 to 新表名;
约束
主键约束
主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录
//创建表的时候添加主键
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Id_P)
)
//后期添加主键
ALTER TABLE Persons ADD PRIMARY KEY (Id_P)
//如果想添加多个列的主键
ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
//删除
ALTER TABLE Persons DROP PRIMARY KEY
ALTER TABLE Persons DROP CONSTRAINT pk_PersonID
//查看当前约束
SHOW KEYS FROM students ;
唯一约束
? 唯一约束是指定table的列或列组合不能重复,保证数据的唯一性
? 唯一约束不允许出现重复的值,但是可以为多个null
? 同一个表可以有多个唯一约束,多个列组合的约束
? 如果不给唯一约束名称,就默认和列名相同
? MySQL会给唯一约束的列上默认创建一个唯一索引
---添加唯一约束 ??
Alter?Table?stuInfo Add?Constraint?UQ_stuID?unique(stuID) ??
外键约束
---添加外键约束 ??
ALTER TABLE students
ADD CONSTRAINT FOREIGN KEY (class_Id) REFERENCES class(class_Id);
插入数据
# 插入一条数据
INSERT INTO class (class_Id,NAME) VALUES ( 3, ‘三班‘)
#插入全部数据的简写
INSERT INTO class VALUES ( 3, ‘三班‘)
# 插入多行数据
INSERT INTO class VALUES ( 5, ‘五班‘) ,(6,‘六班‘)
删除数据
//删除整个表
DELETE FROM teache;
//删除表中符合条件的某个数据
DELETE FROM students WHERE class_Id=3;
注意:
删除表中所有记录使用【delete from 表名】,还是用【truncate table 表名】? 删除方式的区别:
- delete :一条一条删除,不清空 auto_increment 记录数。只删除数据表结构还在
- truncate :直接将表删除,重新建表,auto_increment 将置为零,从新开始。
修改数据
UPDATE students SET NAME=‘王健森‘,age=24 WHERE NAME=‘王五‘