MySQL

一、SQL分类

1.DDL数据定义语言,用来维护存储数据结构,例如:create,drop,alter

2.DML数据操控语言,用来对数据进行操作,例如:insert,delete,update

    2.2.DML中又单独分了一个DQL,数据查询语言,代表指令: select

3.DCL数据控制语言,主要负责权限管理和事务 代表指令: grantrevokecommit

二、DDL

(1)显示数据库:     SHOW DATABASES
(2)创建数据库:  if not exists 表示系统中有该库则不创建          
CREATE DATABASE [IF NOT EXISTS] 数据库名 CHARACTER SET 字符集名;
CREATE DATABASE bjsxt01;
(3)选中数据库: use 数据库名
USE bjsxt01;
(4)删除数据库:DROP DATABASE [IF EXISTS] 数据库名     if exists 表示如果系统中有此库则删除
DROP DATABASE bjsxt01;
(5)创建表:
CREATE TABLE 表名(
        字段名  字段类型  约束,
        [字段名  字段类型 约束]
CREATE TABLE demo01(
    username VARCHAR(5),
    age int
);
(6)查看表结构:DESC 表名
DESC demo01;
(7)查看建表语句:SHOW  CREATE TABLE 表名
SHOW CREATE TABLE demo01;
(8)查看表:SHOW TABLES;
(9)删除表:DROP  TABLE [IF EXISTS] 表名;
DROP TABLE demo01;
(10)修改表名:RENAME TABLE 旧表名 to 新表名;
RENAME TABLE student to stu;
(11)向表中添加字段:ALTER TABLE 表名 ADD 字段名 字段类型 约束 [添加位置];

-- 向创建完成的表中添加字段
ALTER TABLE stu ADD addr VARCHAR(20);

-- 添加为第一个字段
ALTER TABLE stu ADD addr VARCHAR(20) FIRST;

-- 添加到sid的后面
ALTER TABLE stu ADD addr VARCHAR(20) AFTER sid;

(12)修改字段的类型和长度:ALTER TABLE 表名 MODIFY 字段名 字段类型;
ALTER TABLE stu MODIFY addr INT;
(13)修改字段名(类型 和 长度):ALTER TABLE 表名 CHANGE 旧字段名 新字段名 字段类型;
ALTER TABLE stu CHANGE addr hobby VARCHAR(20);
(14)删除字段:ALTER TABLE 表名 DROP 字段名;
ALTER TABLE stu DROP hobby;
(15)删除表中数据:TRUNCATE TABLE 表名;
TRUNCATE TABLE stu;

三、DML

(1)增加数据:INSERT INTO 表名(字段名)VALUES(数据值);
INSERT INTO stu (sid,sname,sex,createDate,clazz,email)
                  VALUES(1,'陈','男',"2022-09-03","SJ129","[email protected]");
(2)查询数据:

SELECT 想要映射的字段名
[DISTINCT]           //去重
FROM 表名
WHERE 查询条件
[ORDER BY 根据什么字段排序 ASC|DESC]    //默认升序(ASC)
[LIMIT  n   OFFSET   m]  //从第m+1条开始显示n条
(3)修改数据:UPDATE 表名 SET 想要修改的数局 [WHERE] [ORDER BY] [LIMIT]
UPDATE stu SET sex = "女" WHERE sname="陈";
(4)删除数据:DELETE FROM 表名 [WHERE] [ORDER BY] [LIMIT]
DELETE FROM stu WHERE sid=1;

四、字段类型

(2)常见数据类型:int整型,double浮点型,varchar字符串,date日期类型。

(3)整数类型:MySQL支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。显示宽度并不限制可以在列内保存的值的范围。

整数类型 大小 表数范围(有符号) 表数范围(无符号) 作用
TINYINT 1字节 (-128,127) (0,255) 小整数值
SMALLINT 2字节 (-32768,32767) (0,65535) 大整数值
MEDIUMINT 3字节 (-8388608,8388607) (0,16777215) 大整数值
INT 4字节 (-214748364,2147483647) (0,4294967295) 大整数值
BIGINT 8字节 (-9233372036854775808,9223372036854775807) (0,18446744073709551615) 极大整数值
(4)浮点类型:浮点数类型的宽度不会自动扩充,使用时需要指定长度。如:score double(4,1) 总体长度是4 精度为1位。
浮点数类型 大小 作用
FLOAT(m,d) 4字节 单精度浮点数值, m总个数,d小数位
DOUBLE(m,d) 8字节 双精度浮点数值, m总个数,d小数位

(5)字符串类型:必须指定长度

1. char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定长。

2. varchar可变长度,可以设置最大长度, VARCHAR类型能够根据字符串的实际长度来动态改变所占字节的大小,所以在不能明确该字段具体需要多少字符时推荐使用VARCHAR类型,这样可以大大地节约磁盘空间、提高存储效率。

3. CHAR和VARCHAR表示的是字符的个数,而不是字节的个数。

4. text不设置长度, 当不知道属性的最大长度时,适合用text。    

按照查询速度: char最快, varchar次之,text最慢。

字符串类型 大小 描述
CHAR(M) 0~255字符 允许长度0~M个字符的定长字符串
VARCHAR(M) 0~65535字符 允许长度0~M个字符的变长字符串
TINYTEXT 0~255字节 短文本数据
TEXT 0~65535字节 长文本数据
MEDIUMTEXT 0~16777215字节 中等长度文本数据
LONGTEXT 0~4294967295字节 极大文本数据
BLOB(M) 最大65K 以二进制存储图片,文件等数据

(6)日期和时间类型: 

日期时间函数:获取当前时间:now(),sysdate(),curdate()。

TIMESTEMP类型的数据指定方式与DATETIME基本相同,两者不同之处在于以下几点: 

(1) 数据的取值范围不同,TIMESTEMP类型的取值范围更小

(2) 如果我们对TIMESTAMP类型的字段没有明确赋值,或是被赋与了NULL值,MySQL会自动将该字段赋值为系统当前的日期与时间

类型 格式 取值范围
TIME ‘HH:MM:SS’ (‘-838:59:59’, ‘838:59:59’)
DATE ‘YYYY-MM-DD’ (‘1000-01-01’, ‘9999-12-31’)
YEAR YYYY (1901, 2155), 0000
DATETIME ‘YYYY-MM-DD HH:MM:SS’ (‘1000-01-01 00:00:00’, ‘9999-12-31 23:59:59’)
TIMESTAMP ‘YYYY-MM-DD HH:MM:SS’ (‘1970-01-01 00:00:01’ UTC, ‘2038-01-19 03:14:07’ UTC)

五、约束

约束名 关键字 作用
主键 primary key 不可重复, 不能为空,即唯一 + 非空
唯一 unique 不可重复
非空 not null 不能为空
默认值 default 赋予默认值
检查(Mysql8提供) check 取值范围
外键 foreign key 表与表之间的关系

 (1)主键约束:PRIMARY KEY

特点:非空、唯一、并且一个表中只能有一个主键约束。

-- 方式一

CREATE TABLE stu(
    sid int PRIMARY KEY,
    sname VARCHAR(10),
    age int,
    sex CHAR(1)
);

-- 方式二
CREATE TABLE stu(
    sid int,
    sname VARCHAR(10),
    age int,
    sex CHAR(1),
    PRIMARY KEY(sid)
);

-- 方式三:ALTER TABLE 表名 add PRIMARY KEY(字段名);
ALTER TABLE stu add PRIMARY KEY(sid);

-- 删除主键约束,不会删除唯一约束
ALTER TABLE stu DROP PRIMARY KEY;

-- 删除唯一约束
alter table stu modify sid int;

(2)自增:auto_increment 

特点:自己添加数据可能出现重复, 我们通常希望在每次插入新记录时, 数据库自动生成主键字段的值。

CREATE TABLE stu(
    sid int PRIMARY KEY auto_increment,
    sname VARCHAR(10),
    age int,
    sex CHAR(1)
);

 (3)唯一约束:字段名 字段类型 unique

特点:不允许有重复的值,允许有多个空值。

(4)非空约束:字段名 字段类型 not null

特点:不允许出现空值。

(5)默认值:字段名 字段类型 default '值'

特点:不指定该字段时,添加为默认值,注意添加时指定为null默认值失效。

(6)检查约束:

字段名 字段类型 check(字段='值' or 字段='值')
字段名 字段类型 check(字段>n or 字段 字段名 字段类型 check(字段>n and 字段

你可能感兴趣的:(java,开发语言,后端)