Mysql数据库的安装和使用

Wesley13
• 阅读 785

mysql数据库的安装:

选择 typical 类型 》install》next》next》 configure teh mysql server now 打勾 点击finish detailed configuration developer machine multifunctional database decisionsupport (dss)/olap character set 字符编码 utf8 设置密码 enable root access from remote machines 打勾 允许远程机器访问 exeute finish

数据库 mysql

数据库是用于维护业务数据,共享数据资源的管理系统。

为什么要用数据库管理数据?

第一:数据库可以不断的新增和更新数据,并且可以分布式存储。

第二:数据是企业最重要的资源。需要定期备份,数据库有自带功能强劲的备份功能。

第三:数据库系统可以做大量的数据计算货分析。为企业领导层做出正确决策提供帮助。

数据库的结构:

第一:数据库(Database)

第二:数据表(Table)每个数据库有多个表。

第三:字段(Field)每个表有多个字段。

第四:记录(Record)记录就是表中每条具体的数据。

目前流行的数据库都以sql语言为标准,都是关系型数据库。

非关系数据库也有。使用不多。

SQL语言简介

它是结构化查询语言,用于查询,更新,管理数据库。

SQL分三个部分:

第一:数据库定义语言(DDL),用来建库建表建列等,比如输入语句:create table(创建表),drop table(删除表)等。

第二:数据库操作语言(DML),用于数据表数据的增加(insert),删(delete),查(select),改(update)

第三:数据库控制语言(DCL),比如事务的提交或者回滚,权限的控制,网络远程访问的配置等。比如语句有:grant,commit ,rollback。

SQL语言内的数据类型

常用的数据类型:数值型,字符型,文本型,日期型。

数值型有:整型(int) 浮点型(float) 双精度(double)

字符型有:char(固定长度字符),varchar(可变长度字符),

文本类型有:text

日期类型:datetime,timestamp(后者范围比前者小。但是占的存储空间更加小)

MYSQL 5.0 的dos操作界面

输入密码进入

通过命令:show databases; 回车进入数据库中的库。

现在要如何使用库呢?首先进入。

通过命令:use mysql; 回车进入mysql这个库。

接着就打开这个库内的表(tables)了

通过命令:show tables;回车打开库中所有表。

接着查询表中数据。

通过命令:select * from 输入表名 ;回车就查询到这个表中所有数据。

通过以上的命令简单操作数据库。

库和表的创建 亏a特 通过命令:create database 数据库名字 例如:

create database testmysql;这样就创建了一个库。

使用命令:use testmysql;就可以打开这个库。

接着创建表

create table 表名(num<字段1 num> int not null auto_increment<自动增加的意思> ,name<字段2 name> varchar(20),primary key<主键>(某个字段 比如:num));

varchar(10)必须要给长度。

同一个库不能有相同的数据表。如果要覆盖已有的可以先删除在创建新表。 急哦扑 drop table if exists test1;假如存在test1表就删除。

create table test1(里面是字段,主键等信息)重新创建

增/删/查/改语句的掌握 音色特 给表中增加数据 通过语句:insert into 表名 (字段1,字段2。。。)values(值1,值2。。。); va 溜 也可以直接insert into 表名 values(值1,值2。。。); 值有 '2' '名字' 无论数字和中文都用单引号 框起来! 主键可以设置为null 自动增长 什么是主键 :主键是唯一用来定位某条数据的,所以主键值是不能重复的(不能重复也叫主键约束)

删除表内数据 通过语句:delete from 表名 where 条件 切记这里如果不加入where条件就会删除整个表的所有数据。

where条件后面的语句是计算真或者假的。比如删除所有名字为zlb2的人。

delete from car1 where name="zlb2";

where条件可以有多个。比如:

zlb2的人。

DELETE from orderinfo where ordernum='2185' and sex='0'; 删除ordernum为2185 并且 sex 为0的数据

delete from car1 where name="zlb2" (and or连接起来起到并且或者的意思); 色la可特 挑选 查询数据 通过语句:select * from 表名 where条件 这里的*表示所有列 如果需要查询你需要查询的列可以这样:select 这里输入列名可以多个 from car1;

where在这里的用法和delete一样

select * from users where toid='11';

在查询的时候可以给表取一个别名 表名 as 别名

select c.name from car1 as c

有时候我们会忘记name存入的是什么数据

c.name as '姓名' 当你查询数据的时候name那一列就显示的是姓名。

只用在命令行中。

更新和修改数据:通过语句:

修改数据 update 表名 set 字段1=值1 ,字段2=值2 where 条件

update testafei set testname='abc' where toid=9;

where的用法和其他语句一样,不加where条件,那么就会修改这个表的所有数据

mysql 高级知识

第一。多表关联

OA系统,部门和员工的管理

外键 foreign key 用于表示多个表之间的关联关系。保持数据的完整性

多表查询 建立了主外键关联的多表

第一:内连接查询:inner join on 只连接匹配的行 on后面是条件 使用别名

例如:select * from teachers_sql as t INNER JOIN student as s on t.teacher_id=s.id;

当然没有主外键关联的多表也可以查这样询。

上面的表达式和下面这个一样。

select * from teachers_sql as t ,student as s where t.teacher_id=s.id;

左连接查询:left join on 经常考试

以左表为准,去右表找数据,(左表数据全部出来) 右边表单如果没有匹配的数据则以null补空位。on 后面是条件

看查询表达式:

select * from teachers_sql t LEFT JOIN student s on t.teacher_id=s.id;

右连接 RIGHT JOIN

以右表为准,去右表找数据,如果左边表单没有匹配的数据则以null补空位。on 后面是条件

看查询表达式:

select * from teachers_sql as t RIGHT JOIN student as s on t.teacher_id=s.id;

where条件

where后面一般连接着比较运算符,如>,<,=,!=; 运算符表达式之间用and or等连接;使用between表示某个范围;

select * from student where age BETWEEN 22 and 24;

模糊查询:like

%表示任意字符;_ 表示单个字符。

select * from student as s where s.name like "%碧%";

关键字in 可以根据范围进行子查询,

select* from student as s where s.id in(1,2)

in内部是一个查询。看下面查询姓名为莫建立和何小林的人

select * from student as s where s.stuname in ( select stuname from student as a where s.stuname='莫建立' or s.stuname='何小林' );

select * from student as s where s.age in ( select s.age from student as a where s.age='20' or s.age='25' );

传入其他表的数据类似内连接 student表内age字段有符合条件的就会被查询出来,更多的时候in内的select语句是查询的主键.

select * from student as s where s.age in ( select t.teacher_age from teachers_sql as t where t.teacher_age=29 or t.teacher_age=31 or t.teacher_age=35 );

排序:order by asc/desc

asc:升序,默认

desc:降序

例如:select * from student as s order by s.age ase;

分组查询:group by 意思分组依据

面试问:根据什么就group by 什么

以下语句查询一个表中年龄最大的学生信息。 select * from student s where age in (SELECT MAX(s1.age) from student s1);

聚合函数:sum() mysql内置函数,用于求和。还有avg()平均,count()计数 max() min()等

select s.age,SUM(t.teacher_age) from student as s ,teachers_sql as t where t.studentid=s.id GROUP BY s.age;

以上代码命令就是根据年龄求和。

select * from student as s,grade as g where s.gradeid=g.toid AND s.age in(select MAX(s1.age) from student as s1 GROUP BY s1.gradeid );

以上查询每个班级 年龄最大的学生信息

having子句 在分组后过滤数据后面的条件一般包含聚合函数

select t.teacher_id ,MAX(s.age) from student as s,teachers_sql as t where s.tcid=t.teacher_id GROUP BY t.teacher_id HAVING MAX(s.age)<=200;

limit 字句限定结果数

select * from student LIMIT 10,10;

表示显示从第十条到第二十条数据

以下代码:查询每个班级中年龄最大的学生信息

SELECT * from student s1 where s1.age in( select MAX(s.age) from student s GROUP BY s.claid );

以下代码:关联2个表查询每个班级的信息并且显示这个班级中年龄最大的学生信息

select * from student s INNER JOIN class c on s.claid=c.num where s.age in( select MAX(age) from student GROUP BY claid) ORDER BY c.num;

这个语句如果一个班级中最大年龄学生年纪是10岁,并且还有一个学生年纪是9岁,而且另一个班级最大年纪的学生年纪是9岁,这时候就会把那个班级中的年龄为9岁的学生也查询出来。如果要避免这个问题,用下列查询语句:

select * from student s1 inner join (select MAX(age) maxage,claid from student GROUP BY claid) s2 on s1.age=s2.maxage and s1.claid=s2.claid;

以下代码:查询每个班级中有那些学生名字。并且显示最大年龄

select GROUP_CONCAT(s.studentname), MAX(s.age) from student s GROUP BY s.claid

Navicat 发音 :na v k特

INSERT into studenttable values(null,'张毅承','1','1','四川成都');

select * FROM studenttable where studentage='15';

update studenttable set studentname='张三丰' where studentname='张理斌' and studentage='15';

update studenttable set studentaddress='湖北武汉' where studentage='17';

DELETE from studenttable where studentage='18';

佛锐 king foreign key 外键 主外键关联 只是为了保证数据完整性。什么是完整性?就是保证你添加数据的时候必须和另外 一个表的主键对应的上。不做主外键关联同样可以查询出来 只不过你需要自己注意不要没法和另外一个表主键对不上

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这