数据库基础

本文详细介绍了MySQL数据库的基本操作,包括创建数据库、选择数据库、创建和修改数据表、插入和修改数据、常用命令以及数据查询的各个方面,如where、groupby、聚合函数和排序等。
摘要由CSDN通过智能技术生成

一、创建数据库

create database (数据库库名);

二、选中数据库

use (数据库库名);

三、创建数据表

方法一:

create table (数据表名称)(
(关键字段名称) datatype()+(not)null+(primary key),
......
);

案例:

方法二:

         建议复合主键使用

create table (数据表名称)(
(关键字段名称) datatype()+(not)null,
......
primary key ((值1),(值2))
);

四、表中插入数据

insert into (表名) values(值)('','','');

五、表中修改数据

        注意:段落后不可以加标点

mysql> update 表名
    -> set 字段名=字段值
    -> where 主键=值;

六、常用指令

​
打开数据库(选中当前数据库)         use xxxxxx;

查看当前所有的数据库                show databases;

在数据表中查看当前库中的所有表       show tables;

查看数据库中表的创建信息             show create table xxxxx;

查看数据库的创建信息                show create database xxxxx;

查看指定表的结构                    desc xxxxxx;

以表的形式查看xxx表中的所有数据      select * from xxxx;
      

退出客户端    quit;或exit;

附:数据类型使用说明

         注意:插入数据时整型与浮点型不需要加引号

char            必须是x位
varchar         最多是x为 
int
tinyint         微小整型一位
decimal(m,n)  可以指定精度的浮点型,m为总长度,n为小数位数,小数点要占一位
float
double
text            文本型
datetime        日期时间型
 
auto_increment  字段值自动增长
primay key()    主键,常用于复合主键的设置
primay key(,)   复合

七、修改表结构

添加列

alter table 表名
add  新列定义;  

对列重命名

alter table 表名
change 旧列名 新列名列定义;
注意:只能修改列名

修改列类型(数据类型、空性)

alter table 表名
modify 列定义[first][default 默认值];

注:只能修改列类型

删除列

alter table 表名
drop 列名;
注:只能删除列

重命名该表

alter table 表名
rename 新表名;

添加主键

alter table 表名
add primary key (列名);    //括号必须加

添加外键

alter table biaoming
add foreign key (字段)
references 表名(字段);

父表(主表、被参照表)删除或更新行时,子表(从表或参照表)自动删除或更新匹配的行。-------------同步

关键字 cascade:  级联,与on delete或 on update 配合使用。

删除表

drop table 表名;

删除表的内容:

delete from 表名
[where;]

修改表的字段内容在原数据后添加内容

create table student2 as select studentid,name,sex,birth,concat(area,'省或
市') area,nation,classnumber
    -> from student;

select studentid,name,sex,birth,concat(area,'省或市'),nation,classnumber
    -> from student;
select studentid,name,sex,birth,concat(area,'省或市') area,nation,classnum
ber
    -> from student;

修改数据库的编码

ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin;

例:

ALTER DATABASE itcast DEFAULT CHARACTER SET gbk COLLATE gbk_bin;

国际编码utf8

中文编码gbk

添加索引:

create table 表名(
字段名 数据类型,
index(字段名)
);

唯一索引:

create table 表名(
字段 数据类型
unique index unique_字段(字段)
);

全文索引:

explain说明:

使用EXPLAIN语句进行查看select执行计划:

EXPLAIN SELECT * FROM t1 WHERE id=1;

八、备份与导入

数据库备份

mysqldump -u root -p 数据库名>d:\数据库名.sql

表结构的备份

create table 备份表名 like 表名;

表结构与内容的备份:

create table 备份名 as select * from 表名;

        不能复制自增长约束 

数据库导入

1.创建数据库

2.选中数据库

3.导入数据库语句

注意:路径为绝对路径,且不能有封号与引号

九、指定自增长字段值的初始值

方法一:

create table 表名(
	列定义 auto_increment,
)auto_increment = 100;

方法二:

create table 表名(
	列定义 auto_increment,
);
alter table 表名 auto_increment = 100;
 delete和truncate在删除后自增列的变化
  • delete 数据之后自动增长从断点开始
  • truncate 数据之后自动增长从默认起始值开始

十、唯一约束

         概念:唯一约束是指该字段的数据不能重复出现,但是可以都为NULL

                    比如不能存在两个相同的身份证号

create table 表名(
	列定义 unique      #指定唯一约束      //行业规范列名(unique_列名)
);

创建后添加

alter table 表名 add constraint unique_phone unique(字段名);

//行业规范列名(unique_列名)

例如:

删除唯一约束:

alter table 表名·
drop index 列名;     //行业规范列名(unique_列名)

补充:

1.在一个表中创建主键,同时也创建了一个primary key索引,实现字段值的唯一性。

2.表中创建唯一约束,会创建一个unique索引

主键约束和唯一约束的区别:

(1) 一个表只能有一个主键,但可以有多个唯一约束

(2)主键的值不能为NULL,唯一约束的字段的值可以为NULL  

  (3)产生的索引不同

十一、默认约束

MySQL默认约束用来指定某列的默认值,但是当赋值为NULL时,值依然为NULL

建表时添加

create table 表名(
	列定义 default 值 -- 指定默认约束    '字符串'
);

建表后增加

alter table 表名 modify 字段名 default 值;  '字符串'

为带有默认约束的表插入数据时,不改变默认值时,要跳过默认值。

即:insert into……values……语句中一定要在表名后面加上中添加数据的字段名

例:

  • 删除默认约束:
    alter table <表名> change column <字段名> <类型> default null;
    alter table <表名> modify <字段名> <字段名> <类型> default null;

    没有添加默认约束时,default约束的值为NULL ;删除默认约束意味着把默认值变为NULL

十二、数据查询

一、select语句

1.指定列

select [distinct] 列名1,列名2......

2.列别名

select 列名 as 别名

3.替换查询结果中的数据

case 
    when 条件1 then 替换值
    when 条件2 then 替换值
    ......
    else 替换值
end  as 列标题

4.计算列值

round(列名1*列名2,2)
2 表示保留小数点后两位

5.消除结构集中的重复行

distinct

select distinct 列名1,列名2

二、where子句

where <判定运算>

格式:

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

1.比较运算

= < <= > >= <=> <> !=

<=> 相等或都等于空

<>不等于

!=不等于

2.逻辑运算符

AND或&&    逻辑与    
OR或||     逻辑或
NOT或!     逻辑非
XOR        逻辑异或    

3.模式匹配

like运算符能够指出一个字符串是否与指定的字符串相匹配

常用符号

“_”    单个字符

"%"    0个或多个字符    

格式

select 字段1,字段2.....
    from 表名
        where 字段 like '%6_'

ESCAPE转义字符用法

使用“escape '#' "来定义"#"为转义字符

select 字段1,字段2
    from 表名
        where 字段 like '%#_%'escape '#';

这样"_"后面的"_"就失去了它原有的特殊含义

4.空值比较

判断一个表达式的值是否为空值的时候可以使用is null关键字

格式:

select * from 表名
    where 字段 is null;

5.in语句

select *
    from biaoming
        where 字段 in('','','');

三、from语句

一、多表连接

格式一:

from 表1 join 表2
on 表1.字段 =  表2.字段
join 表3 
on 表1.字段 = 表3.字段

格式二:

from 表1,表2,表3,
where 表1.字段 = 表2.字段
and 表1.字段 = 表3.字段;
1.全连接

        每行都与其他表中的每行交叉

2.内连接

        等值连接,显示最少的字段值

3.外连接

        左外连接和右外连接

       左外连接:left outer join

        结果表中除了匹配行外,还包括左表有但右表中不匹配的行,对于这样的行,从右表中选择的列被设置为null。

        右外连接:right outer join

           结果表中除了匹配行外,还包括右表有但左表中不匹配的行,对于这样的行,从左表中选择的列被设置为null。

4.指定某一字段进行连接

使用and

join score sc 
on sc.s_id=st.s_id and sc.c_id='01' 
5.自连接
select a.字段,b.字段
from 表名 a 
join 表名 b
on a.字段 = b.字段;
二、in子查询
格式:
select * from 表名
    where in (select 字段 from 表名 where 字段 = '值');
三、自查询
select * from 表名 A
    where 字段 = (select * from 表名 B where A.字段=B.字段);

四、分类汇总

聚合函数:

count    求组中的项数,返回int类型的整数
max      求最大值
min      求最小值
sum      返回表达式中所有值的和
avg      求组中值的平均值
        count格式:
select count(字段) as '别名'
    from 表名; 
        max、min、sum、avg格式
select max(字段)
    from 表名
        where 字段 = '值';

group by语句:

        通过字段对行进行分组

        group by分组的字段一定要在select字段中

        想要显示其他字段和分组字段需要搭配聚合函数使用

        可以与聚合函数搭配使用

        格式:
select 分组字段 from 表名
    group by 分组字段;
         分类小计:         

                对group by已经分类汇总的数据在进行小计

         格式:
select 字段,字段,sum(字段) as '别名'
    from 表名
        group by 字段,字段
            with rollup;
having语句

        目的与where语句一致,但having只能用在group by语句后面

       格式:

select 字段,字段,sum(字段)
    from 表名
        group by 字段,字段
            having sum(字段)>=值;

五、排序

order by 语句

        排序desc asc

        可以出现聚合函数

        格式:
select * from 表名
    order by 字段 desc|asc;

 多种字段条件可以按逗号隔开

limit语句

        限制返回的行数与偏移量

        格式:
select * from 表名
    where 字段 > 值
        limit 5;


    从第4行开始的六条数据
             [3,6]

十三、常用函数

1.yarn函数返回包含有年份的部分

select year(2008-11-17);

2.now获取当前的时间

select now();

3.curtime和curdate获取的是当前的时间和日期

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值