MySQL数据库增删改

一:数据库

数据库(数据库管理系统:)其底层原理和io流有关,方便我们对数据进行CRUD操作

常见的数据库

oracle:银行,政府

MySQL:互联网公司

DB2 , Sybase , “Ms sqlServer”

1.sql,DB,DBMS的含义

DB:DateBase(数据库,数据库实际上在硬盘以文件的形式存在)

DBMS:(数据库管系统,是一个软件,常见的有oracle mysql DB2 sqlserver…)

SQL:结构化查询语言,是一门通用的语言,标准的sql适合于所有的数据库产品;

DBMS -(执行)->SQL-(操作)-DB;

2.数据库的基本组成单元:table

一个table包括行和列:

​ 行:被称为数据/记录(data)

​ 列:被称为字段(column)

字段包括:字段名 数据类型 相关约束!

3.SQL语句的分类:

DQL(数据查询语言) : 查询语句,select 语句都是

DML(数据操作语言) : insert delete update ,对表中数据进行增删改

DDL(数据定义语言) : create drop alter ,对表结构进行增删改

TCL(事务控制语言) :commit 提交事务, rollback回滚事务

DCL(数据控制语言) : grant授权/revoke撤销权限等.

二:MySQL数据库

一:下载及安装数据库软件到电脑

MYSQL官网社区版下载:https://downloads.mysql.com/archives/installer/

安装时选择语言为utf8;

二:Mysql数据库的数据类型

1.整型

  1. tinyint:-----------------1字节
  2. smallint:---------------2字节
  3. mediumint:----------3字节
  4. int:----------------------4字节

2.字符型

  1. char:不管内容长度,都占据原来定义所有的长度,它虽然浪费空间多,但是查询效率较高;
  2. varchar:变长类型,根据实际存放的内容决定其长度,但是其查询效率较低;
  3. 分配给CHAR或VARCHAR列的值超过列的最大长度,则对值进行裁剪以使其适合

3.日期型

  1. date:只存放年月日形态,不存放时间,范围为’1000-01-01’到’9999-12-31’
  2. time:只存放时分秒形态,不存放日期,范围是’-838:59:59’到’838:59:59’。
  3. datetime:存放年月日时分秒的形态,范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。

4.小数型:

  1. decimal型:可以指定小数位数:decimal(3,5)---->总共5位,小数是后三位
  2. floar/double:主要存放浮点数,精度上的差距:double(5,2)------>总共5位,小数后两位

三:Mysql数据库启动及登录(DOS命令)

1.服务器的启动

  1. 进入window服务管理器--------->开启Mysql服务
  2. DOS进入====>输入命令:net start mysql;

2.客户端的登录

  1. 第一种:DOS---------->mysql -uroot -p123
  2. 第二种:DOS----------->mysql -uroot -p------------->密码:123

四:一些数据库的基本查看命令

  1. show databases:------------------->查看当前数据库管理系统中所有的数据库
  2. use 数据库名:------------------------>切换到指定数据库中
  3. show tables;--------------------------->查看当前数据库下的所有的表
  4. set names gbk;------------------------>将当前内容转换编码,方便查看表中的中文
  5. desc 表名;------------------------------->查看当前表结构;-------------简单查看
  6. show create table 表名\G;--------->查看当前表结构;-------------详细查看
  7. select * from 表名;------------------->查看表的所有数据内容;

五:数据库表结构的操作命令

  1. create database 数据库--------------------->创建数据库,此时可以同时制定其编码

    create database 数据库名 character set utf8;

  2. use 数据库名----------------------------------->切换到新创建的数据库

  3. 创建表,同时制定表的列:-------create table 表名(…);

    穿建表时可以指定主键以及外键,指定列的约束,comment是标注,也可以在这里指定编码:charset utf8;

    create table yonghu(
    userId int primary key comment '用户编号',
    userName varchar(200) comment '用户账号',
    nickName varchar(40)  comment '用户昵称',
    userLeverl varchar(4) comment '用户等级',
    userScore int comment '用户积分',
    userCreatedate datetime comment '注册时间',
    userStatus char(2) comment '用户状态'
    )charset utf8;
    
    
  4. 表结构的修改

    • 在表的最后添加一列

      alter table 表名 add 列名  类型
      
    • 在表的指定位置添加一列,只能在指定的列后面添加

      alter table 表名 add 新增列名 类型 after 指定列名
      
    • 在表的第一行新增一列

      alter table 表名 add 新增列名 类型 first;
      
    • 删除字段

      alter table 表名 drop 列名,drop 列名,drop 列名......;
      
    • 修改字段类型

      alter table 表名 modify 列名 需要被修改的类型;
      
    • 修改名字和类型

      alter table 表名 change 旧字段名 新列名 新类型;
      
    • 删除主键约束

      如果主键有自增长:auto_increment
      		先删除主键自增:
      		   alter table 表名 change 自增长列 新列 int类型;
      		然后再删除主键约束:
      		   alter table 表名 drop primary key;
      		
      
    • 修改默认约束

      alter table 表名 alter 列名 set default 值;
      
    • 添加主键约束

      在表内:
      	列名 int primary key auto_increment ,
      	
      在表外:
      第一种:alter table 表名 add primary key(列名);
      第二种:alter table 表名 add constraint 主键名字 primary 		  key(列名);
      第三种:alter table 表名 modify 列名 类型 primary key;
      
    • 添加外键约束

      在表内创建时,必须先键主表,再建子表

      在表外可以先写完表再进行关联

      在表内:
      	列名 类型,
      	foreign key(本表的需要关联的外键列名) references 其他表名(需要被关联的列名)
      	
      在表外:
      	方法一:alter table 表名 foreign key(需要关联的外键列名) references 其他表名(需要被关联的列名)
      	方法二:alter table 表名  add 外键名 foreign key(需要关联的外键列名) references 其他表名(需要被关联的列名);
      	这个方法方便后面对此外键名进行修改操作
      

六: MYSQL数据库对数据进行CRUD操作的命令

1.增加数据

  1. 一次增加多行数据 insert into 表名 values(),(),(),…;

    • 对表中具有自动增长的表进行添加数据的操作
    第一种方法:
    insert into book values
    (null,'Java编程思想','张思康',36.00,300),
    (null,'JSP入门','李瑞',42.00,240),
    (null,'SQL2008','赵迈迈',50.00,200),
    (null,'软件测试','刘琴',25.00,100),
    (null,'项目管理','魏远',32.00,230),
    (null,'Struts','张翔',56.00,300);
    
    
    • 指定表的列名的添加数据,适用具有自增长和默认值的表
    第二种方法:
    insert into book(bookname,authorname,price,inventory) values
    ('Java编程思想','张思康',36.00,300),
    ('JSP入门','李瑞',42.00,240),
    ('SQL2008','赵迈迈',50.00,200),
    ('软件测试','刘琴',25.00,100),
    ('项目管理','魏远',32.00,230),
    ('Struts','张翔',56.00,300);
    

2.复制表

  1. 复制表结构和内容

    create table 新表名 as select * from 旧表名;
    
  2. 只复制表结构不赋值表内容

    create table 新表名 as select * from 旧表名 where 1<>1;
    

3.删除表内容

  1. 删除指定行

    delete from 表名 where 列名=值;
    
  2. 删除整个表内容

    delete from 表名;
    
  3. 删除整个表

    drop table 表名;
    

4.修改表内容

  1. 一次修改一行内容

    update 表名 set 需要修改的列名=新值 where 所在列=值(即定位所在行)
    
  2. 一次修改多行

    update 表名 set 需要修改的列名=新值,需要修改的列名=新值,需要修改的列名=新值... where 所在列=值(即定位所在行)
    

七:MYSQL内置函数

1.字符串的处理函数

①:select length(‘abc’)

指定字符串长度

②:select ascii(‘a’)

指定字符的ascii码

③:select char(97);

指定数字对应的字符

④:select upper(‘abc’);

指定字符转化为大写

⑤:select lower(‘ABC’)

指定字符转化为小写

⑥:去除字符串左边的空格

select ltrim(’ abc’)

⑦:去除字符串右边的空格

select rtrim('abc ');

⑧:去除左右两边空格

slect tirm(’ abc ');

⑨:连接字符串

concat(‘abc’,'efg);

⑩:找出字符串第一次出现的位置

instr(‘abc’,‘a’);下标从1开始

2.数学函数

①:返回圆周率的值

select pi();

②:返回绝对值

select abs(-1);

③: n次幂

select pow(2,3);

④:比数小的最大整数

select floor(3.1)

⑤:比数大的最小整数

select ceil(3.1);

⑥:产生随机小数[0,1)

select rand();

⑦:四舍五入

select round(4.5);

3.日期处理的函数

①:获取当前时间及日期

select now();

②:获取当前日期

select curdate();

③:获取当前时间

select curtime();

④:获取日期的某一部分

select concat (year(now()),‘年’,month(now()),‘月’,day(now()),‘日’,)

⑤:在指定日期上增加一个日期片段

select date_add(now(),interval 1day);

⑥:在指定日期上减去一个日期片段

select date_sub((now(),interval 1day);

⑦:求两个日期之差

select datediff(now(),‘2018-1-1’);返回的是天数

⑧:求两个日期的年差

select timestampdiff(year,startdate,now());

八:MySQL常见约束

1.primary key:主键约束

同时保证唯一性和非空

1.创建表时定义约束
	id int primary key;
2.外部定义主键约束
	alter table 表名 add primary key(列名);
	
3.删除主键约束
	alter table 表名 drop primary key;

2.foreign key:外键约束

用来声明两张表之间的连接关系

1.创建表时定义
	city varchar(20) foreign key;
2.外部定义外键约束
	alter table 表名 add  外键名 foreign key(字段) references 主表(字段);
3.删除外键越是
	alter table 表名 drop fordign key 约束名称;

3.unique:唯一约束

保证唯一性可以为空

1.在创建表时定义
	Sid int unique;
2.在外部添加
	alter table 表名 modify column 字段 字段类型 unique;
3.删除
	ater table 表名 drop index 字段;	

4.not null:非空约束

保证不为空

1.在创建时定义
	addr varchar(100) not null;
2.在表外部定义
	alter table 表名 modify column 字段 字段类型 noll null;
3.删除
	alter table 表名 modify column 字段 字段类型;

5.default:默认约束

初始化的值

1.在建表时定义
	sex char(2) default '男';
2.在外部定义
	alter table 表名 modify column 字段 字段类型 default 值;
3.删除
	alter table 表名 modify column 字段 字段类型;

6.auto_increment:自增长

一个表只有一个自增长字段,一般与主键以及使用

1.在建表时定义
	id int primary key outo_increment;
2.在外部定义
	alter table 表名 modify column 字段 字段类型 主键约束 auto_increment;
3.删除
	alter table 表名 modeify column 字段 字段类型 ;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值