mysql数据库(基础)

数据库(基础)

基本概念

oracle:甲骨文

DB2:IBM

SQL Server:微软

Sybase:赛尔斯

Mysql:甲骨文

数据库:关系型数据库管理系统(DBMS\RDBMS)

区别表记录和表结构

RDBMS:n个仓库+管理员

数据库(仓库):n个table

table:表结构:定义表的列名

表记录: 一行一行的记录

question:

(1)常见的数据库有什么

(2)数据库软件是什么系统?

(3)表记录和表结构的区别?

(4)简述RDBMS和数据库、表、表记录的关系

mysql的中的程序和相关命令

mysqld:服务器程序,看服务器开没开

mysql:连接服务器

my.ini:配置文件,默认端口3306

.frm结尾的为数据库的表

服务器的开启:net start mysql

关闭:net stop mysql

退出:quit 或exit

登录:mysql -uroot -p123 -h(接ip地址如:localhost)

question:

(1)mysql数据库服务器的开启的命令行是什么?

(2)关闭数据库服务器的命令?

(3)退出

(4)登录mysql数据库

SQL(Structured Query Language):结构化查询语言

要点:

(1)不区分大小写,建议关键字大写

(2)分号结尾

DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等

(数据库或表的结构操作)

DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)(对表的记录进行更新(增、删、改))

DQL(Data Query Language)(严格来说,属于DML的一部分):对表的记录的查询,查询记录(难点)

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别(用户创建和授权)

(1)SQL叫什么?

(2)SQL分为哪几类?各有什么不同?

DDL

数据库的操作

  • 查询所有数据库: show databases;

  • 选择(切换)数据库:use 数据库名;

  • 创建数据库:create database[if not exists] 数据库名[charset = utf8];

    注意数据库名填写位置

​ ([]的内容表示选填,方括号不加)

  • 删除数据库:drop database 数据库名;

  • 修改数据库编码:alter database 数据库名 character set utf8(没有-)

注意是character而不是charset

  • 对数据库的操作都有关键字database(s),除了使用use

(1)查询数据库中的所有表语句是什么?

(2)切换选择数据库的语句是什么?

(3)创建数据库的语句是什么?

(4)删除数据库的语句是什么?

(5)修改数据库的编码的语句是什么?

数据类型

int:整型

double:浮点型 double(5,2)表示有5位,其中的5为中有两位为小数,最大值为999.99

decimal:浮点类型,用来表示钱,对十进制比较精确,不会出现精度缺失的问题。

char:固定长度字符串类型:char(255),数据长度不足指定长度,则会补足指定长度

varchar:可变长度字符串类型:varchar(65535),zhangshan,需要一个字节来专门存储字符的长度

text(独有):字符串类型:

blob:字节类型

date:日期类型 yyyy-mm-dd

time:时间类型hh:mm:ss

timestamp:时间戳类型 yyyy-mm-dd hh:mm:ss

(1)double(5,2)表示什么?

(2)decimal通常用来表示什么?

(3)char和varchar的区别?哪个的空间存储密度高?

(4)字节类型是什么?

(5)date和time和timestamp

操作表

创建表

create table 【if no exists】表名(圆括号

列名 类型,(逗号不是分号)

列名 类型,

……

列名 类型(没有逗号)

)

修改表的名字

ALTER TABLE sutdent RENAME TO student;

展示当前数据库中的所有表:

show tables;

查询表结构:

DESC(英文:describe描述) 表名;

删除表

drop table 表名;

修改表:

(1)增加列

alter table 表名 add(

列名 类型,(逗号不是分号)

列名 类型,

……

列名 类型(没有逗号)

);

(2)修改列类型

alter table 表名 modify 列名 类型;

不能向add一样多项操作

  • 修改时如果不带完整性约束条件,原有的约束条件将丢失,如果想保留修改时就得带上完整性约束条件

(3)删除列(不需要写类型,因为数据库的列名是不会重复的,列名便可以唯一确定)

alter table 表名 drop 列名 ;

不能向add一样多项操作

  1. 创建表的操作的语句是什么?
  2. 修改表的名字的语句是什么?
  3. 展示当前数据库的所有表的语句是什么?
  4. 查询表结构的语句是什么?
  5. 删除表的语句是什么?
  6. 增加一列的语句是什么?
  7. 修改列的类型的语句是什么?
  8. 删除列的语句是什么?

DML:

DQL: 查询表记录select * from 表名;(用来看操作是否成功)

在数据库中所有的字符串类型,必须使用单引,不能使用双引!

插入操作:

(1)insert into stu(列1,列2,列3)values(值1,‘值2’,值3);//未写的列默认值为null,

eg:

​ INSERT INTO student(id,NAME,address,score) VALUES(1,‘黄xx’,‘深圳’,‘90’);

(2)insert into stu values(值1,‘值2’,值3);

values为复数,顺序与创建表时的顺序一致,可读性低,不建议

eg:

​ INSERT INTO student VALUES (2,‘蚂蚁’,‘山东’,80);

修改记录

​ UPDATE 表名 SET 列名1=列值1,列名2=列值2,… [WHERE 条件]

条件(条件可选的):

条件必须是一个boolean类型的值或表达式:

eg:UPDATE t_person SET gender=‘男’,age=age+1 WHERE sid=‘1’;

运算符:=、!=、<>(和不等于等价表示大于小于)、>、<、>=、<=、BETWEEN…AND、 IN(…)、 IS NULL、 NOT、 OR、AND

set 与=等号使用,跟 Java 中的=不一样,跟Java中的==相同; gender=‘男’中的等号跟Java中的赋值相同。

BETWEEN…AND在…之间,现在把年龄全都展开,把这张三设置成38岁,把赵六设置成48岁:

用 IN(…) 语法把张三和李四的年龄改成36:

eg: update student set age = 36 where name in (‘张山’、李四);

只要条件 age=null 出现,返回值就是 false, 无论哪一列都是 false。 永远不要用它,想用它可以 age is null:

删除记录

delete 表名【where】

eg:

DELETE FROM student WHERE score =10 AND NAME = ‘蚂蚁’;

插入记录的语句是什么?两种

修改记录的语句是什么?

between…and,in的使用

DCL(了解)

  1. 创建用户

create user 用户名@ip地址(全部ip‘%’) identified by ‘密码’

  1. 给用户授权(撤销)

grant(revoke) 权限一,二… on 数据库.* from 用户名@ip地址;

  1. 查询权限

show grant for 用户名@IP地址

  1. 删除用户

drop user 用户名@IP地址

DQL

查表

:select *from 表名

  • 查询表中特定列:select 列1【列2,列3】from 表名;

eg:SELECT * FROM student;

SELECT id,address FROM student;

  • 去除完全重复行:select distinct *from 表名;

    ​ select distinct 列1【列2】from 表名

列运算:select *,ename*1.5(把无法做加减乘除的量当做0) from 表名;

eg:SELECT * ,score*10 FROM student;

  • 替换null的值:ifnull(列名,替换值):

SELECT id,NAME,address,IFNULL(score,0)FROM student;

  • mysql中不能用+号连接,mysql中字符串的连接用concat(字符1,字符2,‘自定义字符’)from 表;

​ 给列其别名 as,其中as可以省略

SELECT id AS 狗牌,NAME 狗名 FROM student;

经典坑人题:

SELECT id NAME,address,score FROM student;

该语句有没有错?

没错,可能会让人误以为少了逗号,实际上是取了别名

(1)查表的语句是什么

(2)查表显示不重复行的语句是什么?

(3)替换null的值的语句怎么写?

(4)mysql中字符串的连接怎么写?

条件查询

查询控制:

select * from 表名 where 条件

eg:

SELECT *FROM student WHERE score IS NOT NULL;

条件查询的语句怎么写?

模糊查询

select *from 表名 where 列名 like ‘__’;

SELECT *FROM student WHERE NAME LIKE ‘黄__’;

多少个-就表示后面的有多少个字符(相当于几个空,填空题)

不知道多少个字符的用“%”(匹配0-N个字符)

eg:SELECT *FROM student WHERE NAME LIKE ‘%黄%’;(包含黄字都都行,包括前后)

模糊查询的语句怎么写?

排序

select * from 表名 order by 列名;(默认升序)

SELECT *FROM student ORDER BY score 【排序类型】;

SELECT *FROM student ORDER BY score ASC;

SELECT *FROM student ORDER BY score DESC;

若排序列存在相同值引入第二列进行排序(多列排序):

select *from 表名 order by 列1 排序类型,列2,排序类型;

eg:

SELECT *FROM student ORDER BY score ASC ,address DESC;

排序的查询怎么写?

聚合函数

(纵向)

count:计算记录中不为null的总数

count(*或者数字(1、2、3)效果一样):查询有多少条记录(记录中的值不全为null的全都算1条记录)

SELECT COUNT(*) AS num FROM student;

count(列名):该列中不为null的所有总数

eg:SELECT COUNT(score) FROM student;

sum(列名):计算总和

eg:SELECT SUM(score)FROM student;

max(列名):

SELECT MAX(score) FROM student;

min(列名):

SELECT MIN(score) FROM student;

avg(列名):

SELECT AVG(score) FROM student;

整合:

SELECT MAX(score) 最大值 , MIN(score) 最小值, AVG(score) 平均值 FROM student;

常见的聚合函数有哪些?

分组查询:

group by

分组查询后能获得的都是组信息(共性),而组信息的为聚合函数,或者组类别。

SELECT score,MAX(score) //只能为group by后的列名或者聚合函数,其他列名不可 FROM student GROUP BY score;

分组条件查询:分组前条件where分组后having

SELECT score,AVG(score),MAX(id) FROM student WHERE score>18 (分组前)GROUP BY score having (分组后条件聚合函数);

语句顺序和程序执行顺序:

select

from

where

group by

having

order by

(1)分组查询的语句是什么?eg:student表中,分数大于18且按分数进行分组,分组后,组的平均值大于20的组的得分、平均值、最大值显示出来

(2)select 、from、 where、 group by、 having、 order by的顺序是什么

limit方言

limit 0,5,表示从序号为0(第一行)的行开始取,取5行,不到就取有的值

题:

一页的记录数为10,查询第3页的记录

limit 20,10 ;

公式:(当前页-1)*每页记录数,每页记录数

limit 0,5是什么意思?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值