MySQL

一、安装和启动

官网下载:

      MySQL :: Download MySQL Installerhttps://dev.mysql.com/downloads/windows/installer/8.0.html图形化启动:开始|控制面板|管理工具|服务

安装步骤参考:超详细最新版MySQL 8.0安装及配置教程(亲测有效!!!)_mysql8.0安装教程_HNUJSY的博客-CSDN博客

命令行启动:

             查看服务命令:  net start

             关闭服务命令:   net  stop  MySQL80

             启动服务命令:   net start  MySQL80

控制台登录:

mysql -h 127.0.0.1 -uroot -p(password)

二、SQL语句:

SQL语句分类

2.1 数据查询语言(Data Query Language, DQL)是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句(关键字:select)

2.2 数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT(插入等同增)、UPDATE(更新,等同修改)、DELETE(删除)三种指令为核心,分别代表插入、更新与删除。主要操作表中的数据

2.3 数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由creat、alter 与 drop 三个语法所组成. DDL 主要操作的是 表的结构 不是表中的数据;凡是带有 create(增)、alter (改)、drop (删) 关键字的语句都是 DDL。

2.4 数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。对数据的权限进行控制的语言.例如:

                请求授权—— grant
                撤销授权 —— revoke

2.5 这里的TCL可不是王牌电视,事务处理语言(Transaction Control Language),它的语句能确保被DML语句影响的表的所有行及时得以更新。是一种事务控制语言。主要包括:

                事务提交 —— commit
                事务回滚 —— rollback

数据库的分类:①关系型数据库(把数据按照 的形式来进行组织(类似于Excle这种形式的).
关系型数据库能够对数据进行更严格的校验,带来更好的数据的完整性):Mysql、Sql server 、Oracle 、SqLite;②非关系型数据库(把数据按照 文档 的形式来进行组织,文档和文档之间的差别可以较大.更灵活的组织数据,效率更高,更容易在分布式环境下使用.):Redis 、 HBase 、MongoDB。

:任何表的都有行和列,数据库中 行(row): 被称为数据/ 记录,列 (column): 被称为字段。

三、数据库操作

1)查看数据库

show databases;

2)创建数据库

create database [数据库名];

//mysql> create database cpp100;
//Query OK, 1 row affected (0.00 sec)
//mysql有一个专门的表记录了新创建数据库的信息,每次新建数据库就相当于在这个表里插入了一条记录

不一定非得使用create database这样的语句来进行指定字符集(每次都得指定,比较麻烦)

  一劳永逸的办法,是直接修改mysql的配置文件,把字符集就固定设成utf-8就可以了

        ①找到Mysql的配置文件(my.ini)右键“属性”修改目标

        ②

3)选中/使用数据库

use  [ 数据库名 ]

要想对数据库进行更具体的操作 (建表、查询、…)就需要先确定是针对那个数据库进行的

4)删除数据库

 drop database [数据库名];
//数据库删除后,内部看不到对应的数据库,里边的表和数据全部被删除.

四、常用数据类型

1.数值类型

        分为整形和浮点型。

        和C/C++对应关

数据类型对应C/C++类型
BIT[(M)]char[]
TINYINTsigned char
SMALLINTshort int
INTint
BIGINTlong long int
FLOAT(M, D)float
DOUBLE(M, D)double
DECIMAL(M, D)char[]
NUMERIC(M, D)char[]

注意:

        1)bit 就表示一个二进制的数据,在方括号里我们可以指定该数据占多少个bit 位,M()就来指定有多少位,如果不指定的话,默认就为 1.

        2)float (M,D)的含义:float (3,1)—— 有效数字是 3 位,小数点后保留一位.

2.字符串类型

 3.日期类型

DATA:用来存储没有时间的日期(YYYY-MM-DD)

DATATIME:8字节,范围1000-9999年,不会进行时区的检索和转换(YYYY-MM-DD HH:MM:SS)

TIMESTAMP:4字节,范围从1970-2038,自动检索当前时区进行转换(同DATATIME)。

五、表的操作

需要操作数据库中的表时,需要先使用该数据库(use database;)

1.查看表结构

desc 表名;

2.创建表

create table table_name(
    field1 datatype,
    field2 datatype,
    field3 datatype    
);

(可以添加comment增加字段说明  也可以用 -- 表示注释)

事例:

create table stu_test(
    id int,
    name varchar(20) comment '姓名',
    password varchar(50) comment '密码',
    age int,
    sex varchar(1),
    resume text
);

3.删除表

drop table table_name;

六、表的增删改查

  1.增加

        隐含列插入,给表中的所有字段添加数据

insert into table_name values (value [,value...]);

insert into table_name values(v1,v2....);

         指定列插入,只给表的某几个字段赋值,需要指定字段名

insert into table_name[(column[,column...])] values (value [,value...]);

        逐条插入

insert into table_name[(column[,column...])] values (value [,value...]);

        批量插入

insert into table_name[(column[,column...])] values (value [,value...]),(value [,value...]),(value [,value...]);

        注意:

  • 插入的数据应与字段的数据类型相同
  • 数据的大小应在规定的范围内
  • 在values中列出的数据位置必须与被加入的列位置相对应
  • 字符和日期类型应该包含在单引号中
  • 插入空值,不指定或指定为 null

        当插入时,主键出现冲突可以利用更新操作更改主键对应的其他数据。(找相同,先插后删)

insert into 表名(字段列表) values(值列表) on duplicate key update 字段=新值; 

        若主键没有冲突,直接插入数据

replace into 表名(包含字段) values(值列表);

2.修改

        

update tbl_name set col_name1=expr1, [, col_name2=expr2 ...] [where conditon] [limit n];

        注意

  • update 语法可以用新值更新原有表中的各列值
  • set子句指示要修改的列和要新赋的值 
  • where子句指定应更新哪些行。如果没有where子句,则更新所有行。
  • where子句后面指定limit,更新符合条件的限制数量的行。

3.删除

delete from  table_name [where condition];
 
truncate table table_name;

delete、truncate和drop删除整表的区别

    delete只删除表中数据,表的结构保留,不释放空间;truncate清空数据、释放空间;drop删除内容和定义,释放空间
    delete可以rollback,truncate不可以rollback
    delete属于DML,truncate和drop属于DDL
    delete后空间不变,truncate后空间回到初始化时,drop后所有空间被释放
    速度:drop > truncate > delete
    delete返回被删除的记录数,而truncate返回0
    清空表数据,建议使用truncate

delete注意:

    只能删除一行数据,不能删除一列数据

复制表结构:

create table new_table_name like exist_table_name; 

复制表中数据:

insert into new_table_name select * from exist_table_name;

4.查询

1)简单查询:

select [distinct] *| {column1,column2,...} from tbl_name [where condition];

--示例1:

select distinct math from student;
--distinct math 删除math重复项

--示例2:
--使用as起别名
select name,chinese+math+english+5 as total from student;

2)where子句

在select中使用where子句,进行查询过滤。where后不能用select语句后指定的别名

 3)order by子句

在select语句中使用order by子句排序查询结果

select column1,column2,... from table order by column  asc|desc,...;

        注意

  • order by 指定排序的列,排序的列可以使表中的列名,也可以是select语句后指定的别名
  • asc升序(默认),desc降序
  • order by 子句应该位于select语句的结尾

4)limit分页 

select 字段 from  表名 where 条件 limit 起始位置 ,记录条数 
select 字段 from  表名 where 条件 limit 记录条数  offset 起始位置

5.聚合函数

select count(*)|count(列名) from tbl_name where condition;

count(*)会统计一共的记录数,count(列名)会排除为null的情况

sum函数:返回满足where条件的列中数据的和

                        sum仅对数值起作用,否则结果无意义。

select sum(列名) {,sum(列名)...} from tbl_name [where condition];

avg:返回满足where条件的一列的平均值

select avg(列名) [,avg(列名),...] from tbl_name [where condition]; 

max/min:返回满足where条件的一列的大/小值

select max/min(列名) from tbl_name [where condition] 

6.group by子句

        在select中使用group by 子句可以对指定列进行分组查询

select column1, column2, .. from table group by column;

group by不能和where搭配使用,应该与having搭配

例如:

select avg(sal) as avg from emp group by deptno having avg<2000;

7.关键字优先级

SQL查询中各个关键字的执行先后顺序

    from > on > join > where > group by > with > having > select > distinct > order by > limit

SQL语句注意事项:

        1.一定不能忘记加分号,分号说明这条语句结束,可以写成多行
        2. 每个单词之间记得空格
        3. 这里展示所有的数据库,base后面 记得加s
        4. ctrl + c 可以终止当前输入
        5. mysql 中 不区分大小写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值