概述
一、启动MySQL
1、以管理员身份进入命令行
2、启动mysql 服务
net start mysql
3、停止mysql 服务
net stop mysql
二、登陆MySQL
1、命令行进入MySQL的安装路径的bin目录下,输入命令 mysql -u root -p 回车进入数据库
mysql -u root -p
连接认证语法:
mysql -h 主机ip地址 -P 端口号 -u 用户名 -p密码
mysql -h localhost -p 3306 -u root -ppassword
2、退出数据库,exit 或 quit 回车退出登陆
三、SQL语法
1、创建数据库
create database DatabaseName; --create database 数据库名;
2、查看所有数据库
show databases;
3、创建表
use DatabaseName; -- DatabaseName 为你要操作的数据库
create table TableName( --TableName 为表名
id int primary key auto_increment,--主键约束:primary key,被主键修饰过的字段,唯一非空。一张表只能有一个主键,但是主键可以包含多个字段;auto_increment自增。
name varchar(20),--数据类型varchar为可变长度的字符串。
chinese double(5,2),--该参数长度为5,小数位占两个,最大值:999.99
english double(5,2),
math double(5,2)
);
例如:在数据库 liarning 中 创建一个 scores表
4、查看当前数据库下的所有表
show tables;
例如:
5、查看表的结构
desc TableName; -- TableName 为你的表 的名称
例如:查看scores 表 的表结构
6、修改数据库表的名称
alter table TableName rename to NewTableName; --TableName:旧表名称,NewTableName:新表名称
例如:将表名 班级表 修改为 Class;
7、修改表的字段(字段名称和类型)(change/modify)
change 可以更改“列名”和“列类型” (每次都要把新列名和旧列名写上, 即使两个列名没有更改,只是改了类型)
modify 只能更改列属性,只需要写一次列名, 比change 省事点
change:
alter table TableName change FieldName NewFieldName; --alter table 表名 change 字段名称 新的字段名称;
例如: id int(11) 修改为 ID varchar(50)
-- change 修改列名 和 类型(注:只修改类型时,列名要写两次)
modify:更改列属性
1、进入MySQL数据库
2、输入命令:alter table 表名 modify 字段名 字段类型;
添加字段
1、 向building_manager中添加字段 instance_id
alter table building_manager add column instance_id varchar(255);
2、向building_manager 中添加字段 expire_time
alter table building_manager add column expire_time datetime;
删除字段
alter table `表名` DROP COLUMN 字段名;
1. 新增记录
insert into TableName value(字段值1,字段值2,字段值3...); -- TableName 为表名
或
replace into TableName value(字段值1,字段值2,字段值3...); -- TableName 为表名
MySQL 提供了Ignore 用来避免数据的重复插入.
IGNORE :
若有导致unique key 冲突的记录,则该条记录不会被插入到数据库中.
用法:INSERT IGNORE INTO .....
replace into 跟 insert 功能类似
不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
注:若添加中文报错,ERROR 1366 (HY000): Incorrect string value: 'xE5xBCxA0xE4xB8x89' for column 'name' at row 1
则修改中文列的编码格式如下:(若中文列有多列,可多次修改)
alter table students change name name varchar(255) character set utf8;
例如:(注:若主键没有默认值,则必须指定值(自增时不用))
insert into scores value(1,'张三',98,99,100);
insert into scores(id,name,english,math) values(2,"李四",89,231);
insert into scores(id,chinese) value(3,100);
-- 自增时
insert into scores value(default, '张三', 98, 99, 100)
insert into scores value(null, '张三', 98, 99, 100)
结果如下:
2. 修改记录
update 表名 set 字段名=新字值 where 条件;
例如:
3. 删除一条记录
delete from 表名 where 条件;
例如:
4. 查询记录
select * from 表名; -- 查看整个表
select 字段1,字段2 from scores; -- 查看仅含字段1和字段2 的数据内容
例如:
添加 distinct 去重,例如:
-- 将英语分数加10 后显示出来,在查询结果上进行运算,不影响数据库里面的值
添加注释
1. 给表添加注释
# 语法
ALTER TABLE 表名 COMMENT '注释';
# 示例
ALTER TABLE tb_user COMMENT '用户信息表2';
2. 给字段添加注释
修改字段备注,其实就是修改字段的定义
ALTER TABLE tb_user MODIFY COLUMN name VARCHAR(30) NOT NULL COMMENT '姓名2';
约束
MySQL唯一约束(UNIQUE KEY)
非外键约束
示例:
-- 删除表
drop table t_student;
-- 创建数据库表
creat table t_student(
sno int(6) auto_increment,
sname varchar(6) not null, -- not null 列级约束
sex char(1) default '男',
age int(3),
email varchar(15),
constraint pk_stu primary key (sno), -- 表级约束;pk_stu 主键约束的名字
constraint ck_stu_sex check (sex = '男' || sex = '女'), -- 表级约束
constraint ck_stu_age check (age >= 18 and age <= 50), -- 表级约束
constraint uq_stu_email unique (email)
);
外键约束
create table t_class(
cno int(4) primary key auto_increment,
cname varchar(10) not null,
room char(4)
);
create table t_student(
sno int(6) primary key auto_increment,
sname varchar(5) not null,
classno int(4),
constraint fk_stu_classno foreign key (classno) references t_class (cno)
);
MySQL设置时区
进入MySQL数据库之后,输入命令show variables like'%time_zone'; 看下有没有设置时区
show variables like'%time_zone';
结果如下:
如果你的system_time_zonetime_zone 的值也是SYSTEM那是还没有设置时区,
输入命令:set global time_zone = '+8:00';设置时区
set global time_zone = '+8:00';
结果如下设置成功:
书写顺序
select <要返回的列名>
from <表名>
join <join表> on <join条件>
where <where条件> like <%>
group by <分组条件> having <分组后的筛选条件>
order by <排序条件>
limit <行数限制>
操作两条属性用“ , ”,and是出现在where后面
升序:ASC 倒序:DESC
例如:select * from table_name where minor like '10%' order by minor DESC limit(20,30);
MySQL 中的 IN 运算符用来判断表达式的值是否位于给出的列表中;如果是,返回值为 1,否则返回值为 0。
NOT IN 的作用和 IN 恰好相反,NOT IN 用来判断表达式的值是否不存在于给出的列表中;如果不是,返回值为 1,否则返回值为 0。
SELECT
*
FROM
`gm_device_beacon`
WHERE
1 = 1
AND BUILD_ID = 123
AND FLOOR_NO = '5'
AND ( id ) NOT IN (
SELECT
id
FROM
`gm_device_beacon`
WHERE
1 = 1
AND TIME IS NOT NULL
AND BUILD_ID = 123
AND FLOOR_NO = '5'
)
结果 = sql.1 - sql.2
如:结果9条记录 = 第一个sql的44条记录 - 第二个sql的35条记录
MySQL UNION 操作符
- MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
-
DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
-
ALL: 可选,返回所有结果集,包含重复数据。
GROUP BY 语句
-
GROUP BY 语句根据一个或多个列对结果集进行分组。
-
在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
使用 MySQL 的 JOIN 在两个或多个表中查询数据。菜鸟教程JOIN...ON...
- INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
- LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
- RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
SELECT a.id, a.author, b.count FROM table1 a INNER JOIN table2 b ON a.author = b.author;
MySQL: left join 与 join 有所不同。 MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。
MySQL: right join 会读取右边数据表的全部数据,即便左边边表无对应数据。
MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。
为了处理这种情况,MySQL提供了三大运算符:
- IS NULL: 当列的值是 NULL,此运算符返回 true。
- IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
- <=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。
关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。
在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL 。
MYSQL 事务处理主要有两种方法:
1、用 BEGIN, ROLLBACK, COMMIT来实现
- BEGIN 开始一个事务
- ROLLBACK 事务回滚
- COMMIT 事务确认
2、直接用 SET 来改变 MySQL 的自动提交模式:
- SET AUTOCOMMIT=0 禁止自动提交
- SET AUTOCOMMIT=1 开启自动提交
扩展:数据库三大范式
第一范式:每个列都不可再拆分
第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分
第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其它非主键
MySQL忘记密码系列:
让MySQL登录的时候跳过密码验证,百度都是让改my.ini配置文件,但是我这里改过配置文件之后MySQL的服务就会自动停止,而且不能再次打开。参考连接:MySQL8.0忘记密码后重置密码
用以下方法不用修改my.ini 文件 ,
以管理员身份打开cmd,
1、先关掉MySQL服务,
net stop mysql
2、输入以下命令:
mysqld --console --skip-grant-tables --shared-memory
3、再次启动MySQL服务
net start mysql
4、服务启动后可以无密码,直接回车进入MySQL
mysql.exe -u root
5、然后执行sql命令将root用户密码设置为空
UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost';
6、再次设置密码:
ALTER USER '
root'
@
'localhost'
IDENTIFIED BY
'新密码'
;
然后下次登录就可以使用你的新密码登录啦,
一定要记好你的密码哈
最后
以上就是体贴寒风为你收集整理的数据库基础语法---MySQL8.0忘记密码怎么办?写在最后一、启动MySQL二、登陆MySQL三、SQL语法约束 MySQL设置时区 书写顺序扩展:数据库三大范式MySQL忘记密码系列:的全部内容,希望文章能够帮你解决数据库基础语法---MySQL8.0忘记密码怎么办?写在最后一、启动MySQL二、登陆MySQL三、SQL语法约束 MySQL设置时区 书写顺序扩展:数据库三大范式MySQL忘记密码系列:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复