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","123@qq.com");
(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))。显示宽度并不限制可以在列内保存的值的范围。

整数类型大小表数范围(有符号)表数范围(无符号)作用
TINYINT1字节(-128,127)(0,255)小整数值
SMALLINT2字节(-32768,32767)(0,65535)大整数值
MEDIUMINT3字节(-8388608,8388607)(0,16777215)大整数值
INT4字节(-214748364,2147483647)(0,4294967295)大整数值
BIGINT8字节(-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个字符的变长字符串
TINYTEXT0~255字节短文本数据
TEXT0~65535字节长文本数据
MEDIUMTEXT0~16777215字节中等长度文本数据
LONGTEXT0~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’)
YEARYYYY(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 字段<m)
字段名 字段类型 check(字段>n and 字段<m)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值