< mysql_<MySQL>基础

MySQL入门

MySQL服务启动

手动

cmd--> services.msc 打开服务窗口

管理员打开cmd

net start mysql :启动服务

net stop mysql :关闭服务

MySQL登录

三种登录方式

直接登录,命令mysql -u用户名 -p密码

服务器登录,命令mysql -hip -u用户名 -p链接目标密码

两种退出

exit

quit

SQL

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

定义了操作所有关系型数据库的规则

SQL通用语法

SQL语句单行或者多行书写,封号结尾。

不区分大小写,关键字建议使用大写。

三种注释

单行: --注释内容 或者 # 注释内容(mysql特有)

多行注释 /* 内容 */

SQL分类

DDL:(Data Definition Language)数据定义语言,用来操作数据库和表。

DML:(Data Manipulation Language),数据操纵语言,用户通过它可以实现对数据库的基本操作。

DQL:(Data Query Language)数据查询语言标准语法

DCL:(Data Control Language) 数据控制语言,在SQL语言中,是一种可对数据访问权进行控制的指令

DDL:操作数据库,表

操作数据库:CRUD

C(Create):创建

create database xx创建数据库

create database if not exists xxx 判断是否存在,不存在就创建

create database xx character set 字符集名称

练习:create database if not exists xx character set gkb 判断+创建指定字符集

R(Retrieve):查询

show databases;查询所有数据库名称

show create database xxx(数据库名称)查询数据库的字符集:查看某个数据库的创建语句

select database()挑出正在使用的数据库名称

U(Update):修改

alter database xx character set gbk//设置xx的字符集为gbk

D(Delete):删除

drop database xx删除数据库

使用数据库

use xxx使用数据库

操作表

C(Create):创建

语法:

creat table 表名(

列名1 数据类型1,

列名2 数据类型2,

....

列名n,数据类型

)

create table 表1 like 表2//创建表1,和表2一模一样。

常用数据类型:

int 整数类型

double 需要指定精度double (a,b)最多5位,保留2位有效小数,最大值就是999.99

data 日期类,只包含年月日。yyyy-MM-dd

dataTime:日期,年月时分秒 yyyy-MM-dd HH:mm:ss

timestamp:时间错类型,年月时分秒 yyyy-MM-dd HH:mm:ss;如果不给这个字段赋值,或者赋值为null,就默认是当前系统时间

varchar 字符串,只要指定最大字符 : name varchar(20)最大2个字符 ,一个汉字是一个字符。

示例:

create table student(

id int,

name varchar(32),

age int,

score double(4,1),

birthday date,

insert_time timestamp);

Query OK, 0 rows affected (0.03

R(Retrieve):查询

show tables查询正在使用的数据库所有表的名称

desc xx 查询表结构

U(Update):修改

修改表名

alter table 表名 rename to 新表名

修改字符集

alter table 表名 character set 新字符集

添加一列

alter table 表名 add 列名 数据类型

修改列

alter table 表名 change 列名 新列名 新列的类型

只修改数据类型,modify是修改而change是整个的改变。

alter table 表名 modify 列名 新数据类型

删除列

alter table 表名 drop 列名

D(Delete):删除

删除表格

drop table 表名;

DML:增删表中的数据

添加数据:

语法:

insert into 表名(列名1,列名2,...列名n) value(值1,值2,...值n);

注意:

列名和值要一一对应。

如果表名后,不定义列名,则默认给所有列添加值

insert into 表名 values(值1,值2,...值n);

除了数字类型,其他类型需要使用引号(单双都可以)引起来

删除数据:

语法:

delete from 表名 [where 条件]

注意:

如果不加条件,则删除表中所有记录。

如果要删除所有记录

delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作

TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。

修改数据:

语法:

update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];

注意:如果不加任何条件,则会将表中所有记录全部修改。

DQL查询表中记录

语法:

select

字段列表

from

表名列表

where

条件列表

group by

分组字段

having

分组之后的条件,如果不满足结果,这个组会就被忽略

order by

排序

limit

分页限定

例子:

基础查询

多字段的查询

select 字段1,字段2.... from 表名

注意

如果查询所有字段,用* 代替字段列表。*select from 表名

去重复

在字段后面增加distinct,去重只能去两个完全相同的。

列相加

用字段名相加表示,如math+score

列相加,解决null的情况

如果有字段是null,他们相加的时候会变成null,因此可以用判断语句,IFNULL(字段,值),如果这个字段是NULL,它就是后面的值,如果不是,它就是原本的值

给列起别名

用AS +别名 如math+score AS 分数

也可以用 空格+别名math+score 分数

条件查询

运算符

、< 、<= 、>= 、= 、<>

BETWEEN...AND 在两数字之间

IN( 数字1,数字2,数字3) 在多个数字之间

LIKE:模糊查询

占位符:

_:单个任意字符

%:多个任意字符,也可以是空字符

LIKE 后面要用单/双引号包括起来

WHERE NAME LIKE '%化%'查询名字里有马的

IS NULL IS NOT NULL

and 或 &&

or 或 ||

not 或 !

进阶查询

排序查询

语法: order by 排序字段1 排序方式1,排序字段2 排序方式2。 多个排序条件,只有在前面一样的才会判断后面。

排序方式:

DESC 降序

ASC 升序

聚合函数

count :计算

一般选择非空的列:主键

max:计算最大值

min:计算最小值

sum:计算和

avg:计算平均值

注意:聚合函数的计算,排除null值

解决方案: IFNULL函数

分组查询

语法:

GROUP BY 划分字段 (按划分字段进行划分)

HAVING 条件 ,分组后的条件,判断这个组是否能被显示出来。

注意,在划分后的两组里,字段显示的是整体,因此个人的数据是毫无意义的,因此分组后的字段一般分为2种

分组字段

聚合函数

聚合函数会统计每一个组的,而不是所有数据的

SELECT sex,SUM(age) 年龄之和 FROM stu GROUP BY sex HAVING 年龄之和 >30;

分页查询

语法 :LIMIT 开始页码,显示几条数据

SELECT * FROM stu LIMIT 0,3;--显示从0开始3条数据

注意: LIMIT 是一个mysql的方言

约束

概念:对数据进行约定,保证数据的有效性。

分类:

主键约束 primary key

非空约束 not null

唯一约束 unique

外键约束 foreign key

非空约束NOT NULL

​1. 在创建表格在数据类型的后面进行约束

NAME VARCHAR(20) NOT NULL

利用alter modify添加非空约束

alter table stu modify varchar(20) not null

唯一约束 unique

添加唯一约束:

在创建表格在数据类型的后面进行约束

用modify 给对应的列名添加唯一约束

删除唯一约束:删除唯一约束,不能modify去修改,比较特殊,要用drop去删除索引。

ALTER TABLE stu DROP INDEX 列名

注意: 唯一约束可以允许有多个NULL

主键约束

主键:非空且唯一

添加主键约束:

创建时约束

ALTER TABLE 表格 MODIFY id INT PRIMARY KEY利用alter modify添加

删除主键约束:用ALTER + DROP 删除这个表的主键

ALTER TABLE stu DROP PRIMARY KEY

自动增长

自动增长:如果某一列是数值类型,用auto_increment 可以自动增长。一般和主键搭配使用

添加自动生长:在数据类型后面增加就额可以了(也能在创建的时候生成,和上面一样)。

ALTER TABLE stu MODIFY id INT AUTO_INCREMENT

删除:

ALTER TABLE 修改就可以 了

外键约束 foreign key

外键约束: 让表与表之间产生关系,从而保证数据的正确性

添加方式:

-- 添加方式1

create table 表名{

外键列1

constraint 外键名(自己起的) foreign key (外键列1) references 表2(表2的某个列名)

}

-- 添加方式2

ALTER TABLE 表 ADD constraint 外键名 foreign KEY (外键列) references 表2(表2的某个列名)

14349642.html

删除方式:

ALTER TABLE 表格 DROP FOREIGN KEY 外键名

级联操作

级联更新:链接外键约束,自动更新数据。

级联删除:链接外键约束,外键删除,会自动自身删除数据。

添加操作:

ALTER TABLE 表 ADD constraint 外键名 foreign KEY (外键列) references 表2(表2的某个列名)

+ 1. ON UPDATE CASCADE -- 自动更新

+ 2. ON DELETE CASCADE -- 自动删除

数据库的设计

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值