MySql
卸载MySql:
- 去MySql的安装目录下找到my.ini文件
- 卸载MySql。
- 删除C:/ProgramData目录下的MySql文件夹。
配置
- MySql服务启动
- 手动。
- cmd–>services.msc 打开服务的窗口。
- 使用管理员打开cmd。
- net start mysql80; 启动mysql的服务。
- net stop mysql80; 关闭mysql服务。
- MySql登录
- mysql -uroot -p
回车后输入密码:tiancaik - 先弄清ip地址,输入 ipconfig/all查询ip地址。
mysql -h+ip地址 -uroot -p连接目标的密码。
- mysql -uroot -p
- MySql退出
- quit
- 直接关。
cmd窗口
- 单行注释"–空格"
- 多行注释"/…/"
DCL
用于权限安全访问的一些操作。
DDL
- 操作数据库,表。
DML
- 增删改表中的数据。
DQL
查询表中的数据。
DDL操作数据库,表。
1.操作数据库:CRUD
- 查询所有数据库的名称:
- show databases;
- 查询某个数据库的字符集:查询某个数据库的创建语句:
- show create database 数据库名称;
- 修改数据库的字符集:
- alter database 数据库名称 character set 字符集名称;
- alter database 数据库名称 character set 字符集名称;
- 删除数据库
- drop database 数据库名称;
- drop database 数据库名称;
- 判断数据库是否存在,存在则删除。
- drop database if exists 数据库名称;
- drop database if exists 数据库名称;
- 查询当前正现在使用的数据库名称
- select database();
- select database();
- 使用数据库
- use 数据库名称;
2.操作表
- 查询某个数据库中所有表的名称:
- show tables;
- 查询表结构:
- desc 表名;
- 创建表:
- create table stu(
id int,
name varchar(32),
age int,
score double(4,1),
birthday date,
insert_time timestamp
);
- create table stu(
- 数据库类型:
- int
- double
- date (年月日)
- datetime(年月日时分秒)
如果不给这个字段赋值或赋值为空,则默认使用当前系统时间,来自动赋值。 - varchar
- 删除表结构:
- drop table 表名;
- drop table if exists 表名;
- 复制表:
- create table 表名 like 被复制的表名;
- drop table if exists 表名;
- 修改表名:
- alter table 表名 rename to 新的表名;
- 修改表的列名称 类型:
- alter table 表名 change 列名 新列别 新数据类型;
- alter table 表名 modify 列名 新数据类型;
- 添加一列:
- alter table 表名 add 列名 数据类型;
客户端图形化工具:SQLYog
DML增删改表中数据
1.添加数据
- 语法:
- insert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n);
- 注意:
- 列名和值要一一对应。
- 如果表明后不定义列名,则默认给所有列添加值。
insert into 表名 values(值1,值2,…值n); - 除了数字类型,其他类型需要使用引号(单双引起来都可以)。
2.删除表
- truncate table 表名;
–删除表然后再创建一个一模一样的空表。 - delete from 表名;(有多少条语句就执行多少次,数据过多时不建议使用。)
DQL:查询语句
- 排序查询。
- 查询语句
- 语法:order by 子句(asc 默认升序排列)
- order by 排序字段1 排序方式1,排序字段2 排序方式2…
- desc:降序排列。
- order by 排序字段1 desc,排序字段2 desc…
- 语法:order by 子句(asc 默认升序排列)
- 如果有多个排序条件,则当前边的条件一样时,才会判断第二个条件。
- 聚合函数。
将一列数据作为一个整体,进行纵向的计算。(排除null值。可选择非空列或ifnull函数)
- count:计算个数。
- max:计算最大值。
- min:计算最小值。
- sum:计算和。
- avg:计算平均值。
- select 函数 from 表名
- 分组查询。
- 语法:group by 分组字段;
- 注意:
- 分组之后查询的字段:分组字段、聚合函数。
- where和having的区别?
- where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来。
- where后不可以跟聚合函数,having可以进行聚合函数的判断。
- 分页查询。
- 语法:limit 开始的索引,每页查询的条数;(只能在MySql语法中
- 例:每页显示三条记录
select * from 表名 LIMIT 0,3;
–第一页
select * from 表名 LIMIT 3,3;
–第二页
- 例:每页显示三条记录
- 语法格式:select * from 表名 LIMIT (当前的页码也就是当前第几页-1)*每页显示的条数,每页要显示的条数。
- 语法:limit 开始的索引,每页查询的条数;(只能在MySql语法中
计算列
- 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
- ifnull(表达式1,表达式2); null参与的运算,计算结果都为null。
- 表达式1代表哪个字段需要判断是否为null。
- 表达式2代表该字段为null后的替换值
起别名
- as:sa可以被省略。
约束
- 概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性。
- 分类:
- 主键约束:primary key
- 含义:非空且唯一,一张表只能有一个字段为主键。
- 在创建表时,添加主键约束:
CREATE TABLE stu(
id int priamry key,–给主键添加主键约束
name varchar(20)
); - 删除主键:
ALTER TABLE stu DROP - 自动增长:auto_increment
- 在创建表时,添加主键约束,并且完成主键自增长:
CREATE TABLE stu(
id int primary key AUTO_INCREMENT,
NAME VARCHAR(20)
);
- 在创建表时,添加主键约束,并且完成主键自增长:
- 删除自动增长
ALTER TABLE stu MODIFY id INT
- 在创建表时,添加主键约束:
- 非空约束:not null
- 创建表时添加约束:
CREATE TABLE stu(
id INT,
NAME VARCHAR(20) NOT NULL
);设置NAME为非空。 - 创建表完后,添加非空约束:
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL; - 删除name的非空约束 :
ALTER TABLE stu MODIFY NAME VARCHAR(20);
- 创建表时添加约束:
- 唯一约束:unique,值不能重复。
- 创建表时添加唯一约束:
CREATE TABLE stu(
id int,
phone_number VARCHAR(20) UNIQUE
); - 删除唯一约束:
ALTER TABLE stu DROP INDEX phone_number;
- 外键约束:foreign key
- 在创建表时添加外键:
- 语法:CREATE TABLE 表名(
constraint (外键名称) foreign key 外键列名称 reference 主表名称(主表列名称)
);
- 级联操作
- 定义:当有了外键约束的时候,必须先修改或删除副表中的所有关联数据,才能修改或删除主表!但是,我们希望直接修改或删除主表数据,从而影响副表数据。可以使用级联操作实现。(只要表之间有联系删一条别的表中相关联的都会被自动删除掉)
- 添加级联操作
- 语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称)REFERENCES 主表名称 ON UPDATE CASSCADE ON DELETE CASCADE;
- 分类:
- 级联更新:ON UPDATE CASCADE
- 级联删除:ON DELETE CASCADE