mysql基础一

1.不管是啥类型的 关系型 数据库,都需要使用sql语言
2.概述:其实所有关系型数据库都要遵守的一种规范,这个规范规定了sql语句的基本组成结构,包括用什么关键字,sql语句怎么写都规定了 -> sql语言
但是所有关系型数据库都遵守sql语言规范的基础上都会有不同的语法,这些不同之处叫做sql方言

sql语言分类

  • 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等

  • 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行操作。关键字:insert,delete,update等

  • 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。

  • 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等

sql中的数据类型

int整数类型
double小数类型
decimal(m,d)指定整数位与小数位长度的小数类型
date日期类型,格式为yyyy-MM-dd,包含年月日,不包含时分秒 2020-01-01
datetime日期类型,格式为 YYYY-MM-DD HH:MM:SS,包含年月日时分秒 到9999年
timestamp日期类型,时间戳 从1970年到2038年
varchar(字符串长度)文本类型, M为0~65535之间的整数

DDL

创建数据库 -> 数据库默认字符集Latin-1,所以我们创建库的时候加上U8编码
CREATE DATABASE 数据库名 CHARSET utf8;
查看数据库
SHOW DATABASES;
删除数据库
DROP DATABASE 数据库名;
使用数据库(切换数据库)
USE 数据库名;
# 创建表
1.语法:
  create table 表名(
    列名 数据类型(长度) [约束],
    列名 数据类型(长度) [约束],
    列名 数据类型(长度) [约束]  
  );
2.注意:
  如果在创建表的时候,最后一列下面没有其他语句了,就不要写,
  
# 查看所有表
show tables;

# 查看表结构
desc 表名;

# 删除表
drop table 表名

进阶

# 添加列
alter table 表名 add 列名 类型(长度) [约束];
# 修改列的类型,长度及约束
alter table 表名 modify 列名 类型(长度) [约束];
# 修改列名
alter table 表名 change 旧列名 新列名 类型(长度) [约束]; 
# 修改表_删除列.
alter table 表名 drop 列名; 
# 修改表名
rename table 表名 to 新表名; 

DML

插入数据

a.insert into 表名 (列名,列名) values (1,2);
/*
  注意:如果数据为varchar类型,在操作数据时,数据不要加""
  原因:将来我们不可能直接在mysql中写sql语句,我们要将sql语句放到
       java代码中,所以将sql语句放到java代码中怎么表示?
       String sql = "INSERT INTO category (cid,cname,`desc`) VALUES (1,"蔬菜","有机");"->SQL错误
       
  所以:我们写sql语句的时候如果数据为varchar类型,请用''    
 
       String sql = "INSERT INTO category (cid,cname,`desc`) VALUES (1,'蔬菜','有机');" 
*/
b.insert into 表名 (列名,列名) values (1,2),(1,2),(1,2)-> 一把添加多行数据
c.insert into 表名 values (1,2); -> 这种格式,需要将所有列的所有值都写上

删除数据

 a.delete from 表名 -> 全部删除
  b.delete from 表名 where 条件

修改数据

 a.update 表名 set 列名 = 新值 -> 一下子修改所有的数据
  b.update 表名 set 列名 = 新值 where 条件

约束

1.关键字:primary key
2.注意: a.主键列的数据不能为NULL b.主键列的数据不能重复 c.每个表都应该有一个主键,主键列的数据代表一条数据,相当于人的身份证号

创建约束

-- 1.在创建表的时候直接指定主键约束
create table 表名(
  列名 数据类型(长度)[约束],
  列名 数据类型(长度)[约束],
  列名 数据类型(长度)[约束]  
)
-- 2.在constraint约束区域,去指定主键约束
1.什么叫做constraint域
  创建表的时候,最后一列和右半个小括号之间的区域
2.语法:
  [constraint 名字] primary key (字段名)
3.注意:[constraint 名字]:可写可不写  
-- 3.通过修改表结构的方式 
1.格式:ALTER TABLE 表名 ADD [CONSTRAINT 名称] PRIMARY KEY (字段列表)
2.注意:[CONSTRAINT 名称]可以省略不写

联合主键

1.什么叫做联合主键: 多个列合称为一个主键
2.特点: 多个列中的数据不能为NULL,不能完全一样

删除主键约束

ALTER TABLE 表名 DROP PRIMARY KEY->删除主键约束

自增长约束

1.关键字: auto_increment
2.使用:都是和主键结合使用
3.特点: 主键自增长列的值,不用单独维护,会自动编号

truncate和delete区别?
delete:如果删除的是主键自增数据,再次添加不会从头编号,而是从最后一个id开始继续往下编号
truncate:摧毁表结构,删除所有数据,再次添加会重新编号

非空约束

1.关键字:NOT NULL
2.特点: 此列中的数据不能为NULL

唯一约束

1.关键字:UNIQUE
2.特点:
此列中的数据不能重复
3.唯一约束和主键约束有啥区别:
a.主键约束:每个表都应该有,能代表一条数据,每个表中只有一个
b.唯一约束:每个表中可以有多个

非空约束

1.关键字:NOT NULL
2.特点: 此列中的数据不能为NULL

唯一约束

1.关键字:UNIQUE
2.特点: 此列中的数据不能重复
3.唯一约束和主键约束有啥区别:
a.主键约束:每个表都应该有,能代表一条数据,每个表中只有一个
b.唯一约束:每个表中可以有多个

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值