MySQL,DDL,DML,MySQL约束

1,数据库

名称全称简称
数据库存储数据的仓库,数据是有组织的进行存储DataBase (DB)
数据库管理系统操纵和管理数据库的大型软件DataBase Management System (DBMS)
sQL操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准Structured Query Language (SQL)

2,MySQL

通用语法:

1,SQL语句可以单行或多行书写,以分号结尾

2,SQL语句可以使用空格/缩进来增强语句的可读性

3,MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

4,注释:  单行注释:--注释内容或#注释内容(MySQL特有)

                   多行注释:/*注释内容*/

3,SQL的分类

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language

数据控制语言,用来创建数据库用户、控制数据库的访问权限

1)DDL

【1】DDL-数据库操作

查询查询所有数据库:SHOW DATABASES;
查询当前数据库:SELECT DATABASE();
创建CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
删除DROP DATABASE [IF EXISTS]数据库名;
使用USE 数据库名;
修改修改数据库编码:ALTER DATABASE MYDB1 CHARACTER SET UTF8;

【2】DDL-表创建-查询

查询当前数据库所有表SHOW TABLES;
查询表结构DESC表名;
查询指定表的建表语句SHOW CREATE TABLE表名;

 【3】DDL-表创建-创建

create table [if not exists] 表名(
    字段1 字段1类型[(宽度)] [约束条件] [comment 字段1注释],
    字段2 字段2类型[(宽度)] [约束条件] [comment 字段2注释],
    字段3 字段3类型[(宽度)] [约束条件] [comment 字段3注释],
    ...
    字段n 字段n类型[comment 字段n注释]
)[表的一些设置];

注意:[ ...]为可选参数,最后一个字段后面没有逗号

【4】数据类型

1,数值类型

类型大小范围(有符号)范围(无符号)用途
TINYINT1 byte(-128,127)(0,255)小整数值
SMALLINT2 bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 bytes(-2 147 483648,2 147.483647)(0,4 294 967 295)大整数值
BIGINT8 bytes(-9,223,372,036,854,775,808,92233036 854 775 807)(0,18446 744073 709551615)极大整数值
FLOAT4 bytes(-3.402823466 E+38,3.402 823 466 351E+38)0,(1.175 494 351E-38,3.402 823 466E+38)单精度浮点数值
DOUBLE8 bytes(-1.797693 134862315了E+308。1.797693 134862 315 7E+308)0,(2.225 073 858 5072014 E-308,1.797693134862 315 7E+308)双精度浮点数值

DECIMAL

decimal(M,D)

decimal(5,2)

一共5位,保留2位

 依赖于M和D的值依赖于M和D的值小数值

 2,字符串类型

类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65 535 bytes变长字符串
TINYBLOB0-255 bytes不超过255个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16777215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes-中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967295 bytes极大文本数据

3,日期类型

类型大小( bytes)范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59/'838:59:59"HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP4

1970-01-0100:00:00/2038

结束时间是第2147483647秒,北京时间2038-1-1911:14:07,格林尼治时间2038年1月19日凌晨03:14:07

YYYYMMDD HHMMSS混合日期和时间值,时间戳

【5】DDL-对表结构的常用操作

1,修改表添加列

语法格式

alter table 表名 add 列名 类型(长度) [约束];

例子:

#为student表添加一个新的字段为:系别dept类型为varchar(20)

ALTER TABLE student ADD dept VARCHAR(20);

2,修改列名和类型

语法格式

alter table 表名 change 旧列名 新列名 类型(长度) 约束;

例子:

#为student表的dept字段更换为department varchar(30)

ALTER TABLE student change dept department VARCHAR(30);

3,修改表删除列

语法格式:

alter table 表名 drop 列名;

例子:

#删除student表中department这列

ALTER TABLE student DROP department;

4,修改表名

语法格式:

rename table 表名 to 新表名;

例子:

#将表student改名成stu

rename table student to stu;

2)DML

DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新

关键字:

插入insert     删除delete  truncate     更新update

【1】数据插入

语法格式:

insert into 表(列名1,列名2,列名3...) values (值1 ,值2,值3...);//向表中插入某些

insert into 表values(值1,值2,值3... );//向表中插入所有列

例子:

insert into student(sid,name,gender ,age ,birth ,address,score)values (1001,男',18, ' 1996-12-23','北京',83.5);

insert into student values (1001, '男',18,'1996-12-23','北京',83.5);

【2】数据修改

语法格式:

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

【3】数据删除

语法格式:

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,可以理解为是将整个表删然后再创建该表;

4,MySQL约束

概念:

约束英文: constraint

约束实际上就是表中数据的限制条件

作用:

表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复

分类:

主键约束(primary key) PK

自增长约束(auto_increment)

非空约束(not null)

唯一性约束(unique)

默认约束(default)

零填充约束(zerofill)

外键约束(foreign key) FK

(1)主键约束

概念:

1,MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便在RDBMS中尽快的找到某一行

2,主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值

3,每个表最多只允许一个主键

4,主键约束的关键字是:primary key

5,当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引

操作:

添加单列主键

添加多列联合主键

删除主键

1)创建单列主键

创建单列主键有两种方式,一种是在定义字段的同时指定主键,一种是定义完字段之后指定主键

方法一:

--在 create table 语句中,通过 PRIMARY KEY 关键字来指定主键

--在定义字段的同时指定主键,语法格式如下:

create table表名(

        ...

        <字段名> <数据类型> primary key

        ...

)

create table emp1 (
    eid int primay key ,
    name VARCHAR(20),
    deptId int,
    salary double
);

方法二:

--在定义字段之后再指定主键,语法格式如下:

create table表名(

        ...

        [constraint <约束名>] primary key [字段名]

);

create table emp2 (
    eid INT,
    name VARCHAR(20),
    deptId INT,
    salary double,
    (constraint pkl)(可以不写) primary key (id)
);

2)创建多列主键(联合主键)

所谓的联合主键,就是这个主键是由一张表中多个字段组成的。

注意:

1,当主键是由多个字段组成时,不能直接在字段名后面声明主键约束

2,一张表只能有一个主键,联合主键也是一个主键

语法:

create table表名(

        ...

        primary key(字段1,字段2,...,字段n)

) ;

create table emp3 (
    name varchar (20),
    deptId int,
    salary double,
    primary key (name,deptId)
);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值