MYSQL基础知识

MYSQL基础知识

查询IP:ipconfig

打开数据库:(1)cmd中输入services.msc,找到mysql并启动(2)cmd中输入net start mysql启动
登录数据库:(1)输入mysql -uroot -p密码(2)输入mysql -uroot -p回车,密码
DDL:数据定义语言
操作对象:数据库和表
关键词:create alter drop
操作数据库:
创建数据库:(1)create database 数据库名称;
删除数据库:(1)drop database 数据库名称;
修改数据库:(1)关键词:alter,实际上根本用不上
操作表:
创建表:(1)create table 表名(字段描述1,字段描述2,…);
字段描述:字段名称 字段类型 [约束] //[]表示可有可无。
例如:
create table user(
id int,
username varchar(20)//20长度的字符创,最后一句话不能加“,”
)

修改表:
格式:alter table 表名 ...
修改表名:alter table 旧表名 rename to 新表名;
添加字段:alter table 表名 add [column] 字段描述;//[]可有可无
修改字段名:alter table 表名 change 旧字段名 新字段描述;//注意,这里是字段描述,要按照规定格式。
修改字段描述:alter table 表名 modify 字段名称 字段类型 [约束];//[]可有可无
删除字段:alter table 表名 drop 字段名;

删除表:drop table 表名;

常用命令:
查看所有数据库:show databases;
切换或者进入数据库:use 数据库名称;
查看当前数据库下所有的表:show tables;
查看表结构:desc 表名;
查看建表语句:show create table 表名;
给表起别名:表名 [as] 别名;//[]中的as可写可不写,随意。

DML:数据操作语言
操作对象:记录(行)
关键词:insert update delete

插入:
格式1:insert into 表名 values(字段值1,字段值2,...);
注意:默认插入全部字段,必须保证values后的类型和顺序跟表结构一致,字符创类型加单、双引号都行,数字可以省略单引号。
格式2:insert into 表名(字段名1,字段名2,...) values(字段值1,字段值2,...);
注意:插入指定字段,必须保证前后顺序与格式一致。

修改:
update 表名 set 字段名1=字段值1,字段名2=字段值2,... [where 条件];//[]可有可无,有可以限定修改的项,无就是修改全部。
例如:update user set username='张三' where id=1234;//将id为1234的username字段改为张三

删除:delete from 表名 [where 条件];//加了之后限定删除的项,不加删除所有。
例如:delete from user where id='123';

DQL:数据查询语言
关键词:select
格式:select … from 表名 where 条件 group by 分组字段 having 条件 order by 排序字段 ase|desc

基础查询:
查看表中所有内容:select * from 表名;
查询指定字段:select 字段名1,字段名2,... from 表名;
去重并显示操作:select distinct 字段名1,字段名2,... from 表名;//所写的所有字段名全部相同时去重,并不影响数据库本身
查询结果加上n:select 字段名+n from 表名;//并不影响数据库本身
字段起别名并显示:(1)select 字段名 新字段名 from 表名;(2)select 字段名 '新字段名' from 表名;

条件查询:
名称查询:select * from 表名 where 字段名=字段值;
范围查询:select * from 表名 where 字段名>n;//>,<,>=,<=,!=,<>	
模糊查询:select * from 表名 where 字段名 like "匹配规则";
匹配规则:
	匹配内容:%代表任意字符,_代表一个字符
		"龙"	值为龙
		"%龙"	值以龙结尾
		"龙%"	值以龙开头
		"%龙%"	值包含龙
多重查询:(1)select * from 表名 where 字段名1=字段值1 or 字段名2=字段值2 or 字段名3=字段值3 ...;(2)select * from 表名 where 字段名 in(字段值1,字段值2,字段值3,...);
区间查询:select * from 表名 where 字段名 between a and b;//[a,b]这个区间的所有值

排序查询:
默认查询:select * from 表名 order by 字段名;//默认排序
升序查询:select * from 表名 order by 字段名 asc;
降序查询:select * from 表名 order by 字段名 desc;
注意:查询可以组合,如模糊查询可与排序查询组合。

聚合函数:select f(字段名) from 表名;//聚合函数会自动忽略掉null
sum()求和,avg()平均值,max()最大值,min()最小值,count()计数;//计数可select count(*) from 表名;
保留小数点位数:round(值,保留小数位);

分组:(1)select 字段名,f(字段名) from 表名 group by 字段名;//按照字段名分组,并且按照f()函数得对应的值,也可不要f()函数。
分组且添加范围条件:select 字段名1,f(字段名2) from 表名 group by 字段名1 having f(字段名2)>n;//按字段名1进行分组且字段名2的聚合函数满足f(字段名2)>n的条件。

where和having的区别:
	1.where是对分组前的数据进行过滤,having是对分组后的数据进行过滤
	2.where后面不能使用聚合函数,having可以

数据类型:
java mysql
byte tinyint
short smallint
int int
long bigint
char/String varchar|char
varchar:可变长度 mysql方言
char:固定长度
boolean tinyint|int 代替
float|double float|double
注意:double(5,2):该小数长度为5个,小数占2个 最大值:999.99
java.sql.Date date 日期
java.sql.Time time 时间
java.sql.Timestamp timestamp 时间戳 若给定制为null,数据库会把当前的系统时间存放到数据库中
datetime 日期+时间
java.sql.Clob(长文本) text mysql方言
java.sql.Blob(二进制) blob

约束:为了保证数据的有效性和完整性
mysql中常用的约束:主键约束(primary key) 唯一约束(unique) 非空约束(not null) 外键约束(foreign key)
主键约束:被修饰过得字段唯一非空,一张表只能有一个主键,这个主键可以包含多个字段
方式1:建表时约束:字段描述 primary key;//只能给一个字段添加主键
方式2:区域约束:primary key(字段1,字段2,…)//两个字段及其以上叫做联合主键,联合主键只有所有同时相同时才不可存在
如:
create table 表名(
id int,
username varchar(20),
primary key(id)
);
方式3:建表之后,通过修改表结构添加约束:alter table 表名 add primary key(字段名1,字段名2,…);

唯一约束:与主键约束用法一样,功能是使表中数据唯一

非空约束:只能创建的时候设置:create table 表名(字段描述1 not null,字段描述2,...);

truncate 清空表:truncate 表名;//干掉表,重新创建一张空表
和delete from区别:
1.delete属于DML语句 truncate属于DDL语句
2.delete逐条删除 truncate干掉表,重新创建一张空表

auto_increment 自增:字段描述 auto_increment//只能创建表时使用
要求:1.被修饰的字段类型支持自增,一般为int 2.被修饰的字段必须是一个key 一般是primary key
自增设置下一个的值(如果添加的数据id变得不规则时):alter table 表名 auto_increment=n+1;

表关系:
添加外键约束:alter table 多表名称 add foreign key(外键名称) references 一表名称(主键);//外键可以为null
外键特点:1、主表中不能删除从表已引用的数据;2、从表中不能添加主表中不存在的数据(即主表中有了该主键,从表才能用这个外键,不然不行,主表永远约束从表)
开发中处理一对多:在多表中添加一个外键,名称一般为主表名称_id,字段类型一般和主表的主键的类型保持一致,为了保证数据的有效性和完整性,在多表的外键上添加外键约束即可。
开发中处理多对多:引入一张中间表,存放两张表的主键,一般会将这两个字段设置为联合主键,这样就可以将多对多的关系拆分成两个一对多了,为了保证数据的有效性和完整性,需要在中间表上添加两个外键约束即可。

多表查询-子查询:
具体查询:select * from 表一 where 字段名1=(select 字段名2 from 表二 where 字段名3=‘字段值’);//由表二中的字段3查询得到表二中的字段2,查询得到表一中字段1等于表二中字段2的元组。
范围查询:select * from 表一 where 字段名1 in(select 字段名2 from 表二 where 字段名3>‘字段值’);//由表二中的字段3的范围查询得到表二中的所有字段2,查询得到表一中字段1分别等于表二中字段2的元组。
内连接:select 表一.,表二. from 表一 join 表二 on 链接条件;
合并查询1(笛卡尔积):select 表一.,表二. from 表一,表二;
合并查询2(查看关联1):select 表一.,表二. from 表一,表二 where 表一.字段1=表二.字段二;
合并查询3(查看关联2):select 表一.,别名表. from 表一,(select * from 表二 where 字段名>‘字段值’) as 别名表 where 表一.字段一=别名表.字段二;//将括号中的查询结果起一个别名,再在别名表中查询值与表一字段一相同的元组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL是一种关系型数据库管理系统,它可以用来存储和管理数据。以下是一些MySQL基础知识: 1. 数据库:MySQL中的数据库是一个容器,用于存储数据表和其他对象。 2. 数据表:数据表是MySQL中的基本对象,用于存储数据。每个数据表都有一个唯一的名称,并且包含一些列,每列都有一个数据类型。 3. 列:列是数据表中的一个字段,用于存储特定类型的数据。每个列都有一个名称和一个数据类型。 4. 行:行是数据表中的一个记录,包含一组值,每个值都对应一个列。 5. 主键:主键是数据表中的一个列,用于唯一标识每个记录。主键列的值必须是唯一的,并且不能为NULL。 6. 外键:外键是一个列,它引用了另一个表中的主键列。外键用于建立表之间的关系。 7. 索引:索引是一种数据结构,用于加快数据检索速度。MySQL支持多种类型的索引,包括B树索引和哈希索引。 8. 视图:视图是一个虚拟的表,它是由一个或多个数据表的查询结果组成的。视图可以简化复杂的查询,并提高查询性能。 9. 存储过程:存储过程是一种预编译的代码块,它可以接受参数并返回结果。存储过程可以简化复杂的操作,并提高数据库性能。 10. 触发器:触发器是一种特殊的存储过程,它会在数据表上执行特定的操作。触发器可以用于实现数据约束和业务逻辑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值