Mysql数据库操作


一、数据库的分类

关系型数据库:(SQL)

Mysql,Oracle,Sql Server…等类型数据库

通过表和表之间,行和列之间的关系进行数据存储,学员信息表,考勤表…

非关系型数据库:(NoSQL)

  • Redis, MongDB
  • 非关系数据库,对象存储,通过对象的自身的属性决定。

二、CMD操作数据库

安装SQLyog

命令提示符 CMD

-- 登录数据库
   Mysql -uroot -proot  --有时候不好使
-- 第二种方式
   mysql -u root -p 
   输入密码:root

// 修改用户密码
   UPdate mysql.user set authentication_string=password(`123456`)where user=`root` and Host = `localhost`; 

 --刷新权限
   flush privileges;

-- 退出连接
   exit; 

查看数据库、表

	CREATE DATABASE [IF NOT EXISTS] westos;   
--[IF NOT EXISTS] 如果不存在,添加的好处:新建重复数据库就不会报错,只是警告。
	create database 库名

--查看所有的数据库
	show databases;  

-- 查看数据库中所有的表
	show tables; 

-- 显示数据库中指定表的信息
	describe student; 
	
2、删除数据库
--[IF EXISTS] 如果存在
	DROP DATABASE [IF EXISTS] westos;   

3、使用数据库
--如果表名、字段名是关键字特殊字符,就需要带``,就不会高亮显示。
	USE `school`

4、查看数据库
	SHOW DATABASES --查看所有的数据库
Mysql约束
1)主键约束:主键唯一且不为空;一张表中只能存在一个主键  
  	id INT(10)PRIMARY KEY,
  	CONSTRAINT emp_id PRIMARY KEY(id); (emp_id是主键名)
  -- 复合主键——可以定义多行  语法同(2)2)默认值约束    若某行无定义值,将会使用默认值
 --无赋值就是默认值
 	id INT(10) default '10'3)唯一性约束:该列唯一不能出现重复数据
   建表时:
    id INT(10)UNIQUE;
   建表后:
    alter table 表名 add constraint 约束名称 约束类型(列名)

(4)外键约束:要求不能引用一个不存在的实体;删除的时候先删从表,在删主表;
 	CONSTRAINT emp_fk FOREIGN KEY(被约束列名) REFERENCES employee(参考列名);      
    // 删除有外键关键的表,必须先删除引用的表(从表),再删除自己(主表)5)非空约束,插入值不能为空.
	id INT(10)NOT NULL;
字段属性设置

Unsigned:

  • 无符号的整数
  • 声明了该列不能声明为负数

zerofill:

  • 0填充的
  • 不足的位数,使用0来填充,int(3),5 —> 005

Null not null (非空)

  • 假设设置为 not null , 如果不给它赋值,就会报错。

数据库操作

--1.创建数据库
create database if not exists 数据库名

-- 2.删除数据库
drop database if exists stu;
drop database 数据库名

-- 3.使用数据库`student`   " `` "Tab键上面的.
use `abb`;  
use `数据库名` 

-- 4.查看创建数据库的SQL语句
show create database school;

表操作

增加 表
show create table student    -- 查看创建student表的SQL语句
desc student; -- 显示表信息

--建表格式
create table if not exists `student`(
    `id` int(4) not null auto_increment comment'学号',
    `name` varchar(30) not null default '三毛' comment'姓名',
    `birthday` datetime default null comment '出生日期',
    `address` varchar(20) default null comment '家庭住址',
    primary key(`id`) 
) engine=innodb default charset=utf8;
-- 建表语句 Mysql 8.0 +
CREATE TABLE `lianlian_save_derive` (
  `id` bigint not null auto_increment comment'学号',
  `name` varchar(30) not null default '三毛' comment'姓名',
  `device_uid` varchar(50) NOT NULL COMMENT '设备SN',
  `product_key` varchar(64) NOT NULL COMMENT '设备Key',
  `is_deleted` tinyint(1) default '0' comment '逻辑删除(0:正常,1:删除)',
  `create_time` datetime default current_timestamp comment '创建时间',
  `update_by` varchar(64) default '' comment '更新者',
  `updated_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '更新时间',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=94175 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='学生表';

-- 添加数据
insert into student values
(5,'李四','2020-01-01','西安'),
(6,'李四','2020-01-02','湖北');

--  []中内容可写可不写
-- create table [if not exists] `表名`(
     `id` int(4) [not null] [auto_increment] [注释],
     `列名`列类型  [属性]     [索引]    [注释],
      ......
     `列名`列类型  [属性]     [索引]    [注释],
     `列名`列类型  [属性]     [索引]    [注释],                 
--) [表类型][字符集设置][注释]

增加字段(列)

-- 增加表的字段 (列)
alter table stu add sex varchar(2);
alter table 表名 add 列名 列属性(类型)
修改 表
-- 修改表名
alter table student2 rename as student;

alter table 旧表名 rename as 新表名

-- 修改表的字段 (修改约束) 
alter table student modify age int(2);

alter table 表名 modify 列名 列属性(类型)

-- 修改表的字段 (字段重名名)
alter table stu change sex age int(3);
alter table 表名 change 旧名字 新名字 列属性(类型)
删除 表
-- 删除表的字段
alter table stu drop sex;
alter table 表名 drop 列名

-- 删除表(如果表存在再删除)  if exists 如果表存在就删除(好处报错 变警告)
drop table if exists stu;  
drop table if exists 表名

三、SQL语句操作

添加数据 (Insert)

insert into 表名(字段1,字段2,字段3) values
('值1'),('值2'),'值3'....)

注意事项:

-- 增加语句?
	INSERT INTO 表名[(字段1,字段2,字段3,...)] VALUES('值1','值2','值3')
-- 结论:'字段1,字段2...'该部分可省略 , 但添加的值务必与表结构,数据列,顺序相对应,且数量一致.

-- 一次插入多条数据
INSERT INTO grade(gradename) VALUES ('大三'),('大四');

删除数据 (Delete)

-- 删除数据
delete FROM grade WHERE gradeid = 5
-- 删除表所有数据  
truncate grade
TRUNCATE [TABLE] 表名;

注意:区别于DELETE命令

  • 相同 : 都能删除数据 , 不删除表结构 , 但TRUNCATE速度更快
  • 不同 :
    • 使用TRUNCATE TABLE 重新设置AUTO_INCREMENT计数器
    • 使用TRUNCATE TABLE不会对事务有影响 (事务后面会说)

修改数据 (Update)

UPDATE 表名 SET column_name=value [,column_name2=value2,...] [WHERE 条件];

--将id为2,3的性别改为'女',姓名改为'222'
update student set sex='女' , `name`='222' where id=2 or id=3;

普通查询 (Select)

-- 查询所有学生信息
SELECT * FROM student;
-- 查询指定列(学号 , 姓名)
select 返回查询值 from student where 条件;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值