mysql数据库语句

一、回忆:

1、为什么使用数据库:

1.1、因为之前使用数组、集合存储数据都是在内存中,每一次关闭打开系统数据都会丢失;

1.2、使用文件存储数据、需要频繁打开关闭流,比较费时耗力。

1.3、使用数据库是最好的选择。

2、数据库的分类:

2.1、关系型数据库:MySQL、oracle、DB2、SqlServer、等

2.2、非关系型数据库:Redis、MongoDB等

3、数据库的关系:

数据库是提供服务,叫做DBMS,数据库管理系统

管理数据( DB)(数据库、表、表数据)

数据库操作语言加SQL

DBMS负责执行SQL语句,通过SQL语句来操作DB中的数据。

4、SQL的分类:

4.1、DDL:定义语言:create、drop、alter、对库和表的结构进行增删改

4.2、DML:操作语言:insert、delete、updata对表的数据进行增删改

4.3、DQL:查询语言:只要是select语句都是DQL,对表中数据进行查询

4.4、DCL:控制语言:授权、撤销权限、逻辑判断等。

4.5、TCL:事务控制:commit提交、rollback回滚、

5、对数据库的增删改查:

5.1、增:

create database 数据库名;

create database 数据库名 character set '字符集';

5.2、删:

drop database 数据库名;

5.3、改:

alter database 数据库名 character set '字符集';

5.4、查:

show databases;显示所有

show create database 数据库名;显示某个数据库的创建语句,包括字符集。

6、数据库创建表之前,需要先选中某个数据库

use 数据库名;

select database();查看当前数据库的名字;

7、数据库数据类型:

整形:tinyint、int 、bigint

浮点型:float、double

字符型:char、varchar(字符长度)

日期型:date、datetime

大文件:blob(二进制文件视频图片等)、text大文本

8、数据库表的增删改查:

8.1、表的创建

create table 表名(

列名 数据类型(数据长度),

列名 数据类型(数据长度),

...

);

8.2、desc 表名;查询表的结构;

二、数据库

1、约束

1)、什么是约束:在创建表的时候,可以给某些字段 添加一下相应的约束,比如某个字段不能为空。

2)、添加约束的目的:为了保证表中的数据合法、合理、有效、完整。

3)、常见约束:

非空约束:not null:表示约束的字段不能为null;账号不能为空,性别不能为空

唯一约束:unique:表示约束的字段不能重复;

主键约束:primary key:表示约束的字段不能为null,并且不能重复

外键约束:foreign key:表示当前字段与另一个表中的字段有关系,FK

(oracle数据库还有一个检查约束,mysql没有)

2、非空约束:not null 不能为空,空会报错。

drop table if exists t_user;

create table t_user(

id int,

t_name varchar(20) not null,

t_age int

);

insert into t_user (id ,t_name, t_age) values(1,'zhangsan',18); 正常

insert into t_user (t_name, t_age) values('lisi',19); 正常

insert into t_user (t_name) values('wangwu'); 正常

insert into t_user ( id,t_age) values(4,18); 会报错

ERROR 1364 (HY000): Field 't_name' doesn't have a default value

3、唯一约束:(字段的值具有唯一性,不允许重复,但是可以为null) unique

3.1、单列唯一约束:

drop table if exists t_user;

create table t_user(

id int ,

t_name varchar(20) unique,

t_phone varchar(11) unique,

t_age int

);

insert into t_user (id ,t_name, t_age) values(1,'zhangsan',18); 正常

insert into t_user (id ,t_name, t_age) values(2,'zhangsan',19); 会报错 因为值重复了

ERROR 1062 (23000): Duplicate entry 'zhangsan' for key 't_name'

insert into t_user (id ,t_name, t_age) values(2,'zhangsi',19); 正常

insert into t_user (id ,t_name, t_age) values(2,'zhangwu',19); 正常

insert into t_user (id,t_age) values(2,19); 正常,并且唯一约束的值可以为null

3.2、多列唯一约束:

drop table if exists t_user;

create table t_user(

id int ,

t_name varchar(20) ,

t_age int,

unique (id,t_name)

);

insert into t_user (id ,t_name, t_age) values(1,'zhangsan',18); 正常

insert into t_user (id ,t_name, t_age) values(2,'lisi',19); 正常

insert into t_user (id ,t_name, t_age) values(2,'lisi',20); 报错

ERROR 1062 (23000): Duplicate entry '2-lisi' for key 'id'

insert into t_user (id ,t_name, t_age) values(3,'lisi',20); 正常

4、主键约束:(primary key)(不能为null也不能重复。)

4.1、作用:主键的值 既不能为null,也不能重复

drop table if exists t_user;

create table t_user(

id int primary key ,

t_name varchar(20) ,

t_age int

);

insert into t_user (id ,t_name, t_age) values(1,'zhangsan',18); 正常

insert into t_user (id ,t_name, t_age) values(2,'lisi',19); 正常

insert into t_user (t_name, t_age) values('zhangsan',18); //报错了,不能为空

ERROR 1364 (HY000): Field 'id' doesn't have a default value

insert into t_user (id ,t_name, t_age) values(2,'wangwu',19); //报错了,不能重复

ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'

总结:id是主键,id字段的值,既不能为null,也不能重复。

主键叫做primary key ,主键一般是一个字段,但是也可以是多个字段联合(不建议用多个字段联合在一起表示主键,不要用违背三大范式)

drop table if exists t_user;

create table t_user(

id int ,

t_name varchar(20) ,

t_age int,

primary key(id)

);

4.2、分类:

1)、根据主键的字段数量划分为:单一主键和复合主键(不用);

2)、根据主键的性质来划分:自然主键和业务主键

自然主键:这个主键值跟业务没有任何关系,是一个自然数

业务主键:主键值跟业务相联系。(身份证号、银行卡号、学号等)

3)、推荐使用自然主键,因为业务主键可能会随着数据的变化而变化,变化之后可能与主键重复,不建议使用业务主键。

***在一张表中主键只能有一个

4.3、主键自增

只有mysql有主键自增,从1开始,每次增加1

drop table if exists t_user;

create table t_user(

id int auto_increment,

t_name varchar(20),

t_age int,

primary key(id)

);

drop table if exists t_user;

create table t_user(

id int primary key auto_increment ,

t_name varchar(20),

t_age int,

);

insert into t_user (t_name, t_age) values('zhangsan',18);

insert into t_user (t_name, t_age) values('zhangsi',10);

insert into t_user (t_name, t_age) values('zhangwu',19);

insert into t_user (t_name, t_age) values('zhangliu',29);

当主键设置的自增时,可以不为主键填值。

5、默认约束:(default默认值)

drop table if exists t_user;

create table t_user(

id int primary key auto_increment,

t_name varchar(20) ,

t_gender char(4) default'男',

t_age int

);

insert into t_user (t_name, t_age) values('zhangsan',18);

insert into t_user (t_name, t_age,t_gender) values('zhangsi',18,'女');

三、表操作语句

1、select * from t_user; 查看该表的信息

2、show ta5/5bles; 查看当前所有表

3、desc 表名;查表结构

4、show create table 表名; 查看表的创建语句;

5、修改表的结构:

数据库这种东西,是协作团队共同沟通商议确定下来的,有那些表,表中有哪些字段,字段什么类型,都是商量后确定的结果。如果需要更改说明团队早期确定数据库的时候犯了错误,没有考虑这种情况。

5.1、alter table 表名 add 列名 类型(长度) 约束;增加一列

alter table t_user add t_phone varchar(12) unique;

5.2、alter table 表名 modify 列名 类型(长度) 约束;修改现有列的类型,长度约束(很少使用)

alter table t_user modify t_phone varchar(20) unique;

5.3、alter table 表名 change 旧列名 新列名 类型(长度) 约束 ;修改现有列的名称

alter table t_user change t_phone cellphone varchar(20) unique;

5.4、alter table 表名 drop 列名 ; 删除一列

alter table t_user drop t_cellphone;

5.5、rename table 旧表名 to 新表名 ; 修改表名;(很少用)

rename table t_user to tb_user;

5.6、alter table 表名 character set 字符集; 修改表的字符集;(不到万不得已不建议修改)

alter table tb_user character set 'gbk'

6、表数据新增

insert into 表名(列名,列

名。。。。)values(值,值。。。。);(可以省略部分列名)

省略列名:insert into 表名 values(值,值,值);(所有列都需要传值,顺序不能变。)

drop table if exists t_user;

create table t_user(

id int primary key auto_increment,

t_name varchar(20) ,

t_gender char(4) default'男',

t_age int default 18

);

主键主动赋值为null,mysql会自动赋值并覆盖null;

批量添加数据:

insert into t_user values(null,'xiaobai','nv',20),(null,'111','nv',20),(null,'222','nv',20),(null,'333','nv',20);

7、update 语句(修改表记录)

写法:update 表名 set 字段名=字段值 where 条件;

不写wehre 就是把所有列数据修改。

8、delete语句(删除表中数据的语句)(删除的是行,不能删除列)

delete from 表名 where 条件;

delete from t_user where t_name='zs';

truncate table 表名; 删除表的所有记录;(删除的时候是把表删除了,然后再创建了一个相同名字的表);

四、注意:

1、删除某个表:drop table 表名; 没有这个表,会报错。

drop table if exists 表名;判断表是否存在存在就删除;推荐用这个。

2、唯一和主键约束的区别

2.1、唯一约束可以是空(null)。 但是主键约束不能为空

2.2、一张表中只能有一个主键,但是唯一约束可以有多个。

3、要慎用表数据的删除,(一般是逻辑删除),(用一个字段表示删除,删除时修改这个字段的值,不能物理删除(完全删除这条记录,不能恢复))(删除的是行,不是列。)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值