mysql -h 127.0.0.1 -p 3306 -uroot; #连接客户端的完整命令
mysql -uroot -p #连接客户端的命令简写
show databases #查看所有的库名
\c #当你输的命令不对,又不想让客户端执行,可以用\c取消。
quit 和 exit #退出
cmd命令:
tasklist #列出当前系统中所有的进程列表(cmd命令)
tasklist |findstr mysqld # 将进程列表传递给findstr命令,并筛选出包含字符串"mysqld"的进程。findstr是用于在文本中搜索字符串的命令(cmd命令)。
taskkill /F /PID PID号 # 杀死进程(只有在管理员cmd下才能成功)(cmd命令)
sql命令:
mysqld --install #将mysql制作成系统服务
mysqld --remove #移除mysql系统服务
mysqladmin -uroot -p原密码 password 新密码 #设置新密码
mysqld --skip-grant-tables #让mysql跳过用户名和密码验证功能
update mysql.user set password=password(123456); #将所有的用户名的密码都修改为123456
update mysql.user set password=password(237230) where user= 'root' and host='localhost'; #将用户名是root,host是localhost的密码修改
flush privileges; #立刻将修改的数据刷到硬盘
针对数据库的增删改查:
增:
create database db1; #创建数据库
create database db1 charset='gbk'; #创建数据库并修改编码
查:
show create database db1; #查看单个数据库
改:
alter database db1 charset='utf8' #修改数据库编码
ALTER DATABASE current_name MODIFY NAME = new_name; #修改数据库名称
删:
drop database db1;
针对表的增删改查:
增:
use db1 #切换到库,在库里面做表的操作
create table 表名(
字段名(列名)1 类型(宽度) 约束条件1 约束条件2
字段名(列名)2 类型(宽度) 约束条件1 约束条件2,
字段名(列名)3 类型(宽度) 约束条件1 约束条件2
);
也可以用绝对路径的形式操作create table db1.t1(....);
查:
show tables; #查看当前目录下所有的表名
show create table t1; #查看单个
desc t1 #查看单个 全写:describe t1
改:
ALTER TABLE table_name ADD COLUMN column_name datatype; #添加列
ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name; #修改列的名称
ALTER TABLE table_name ALTER COLUMN column_name TYPE new_datatype; #修改数据类型
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT new_default_value;
参考来源:http://www.0791zd.com/sitemap.html
#修改列的默认值
删:
drop table t1;
针对数据的增删改查:
增:
insert into t1 values(1,"wff");
insert t1(column1, column2) values(1,"wff"),(2,"wjm");
查:
select * from t1 #查看所有数据
select id,name from t1 #查看指定数据(id,name)
改:
update t1 set name ='wff pro' where id > 1; #将t1里面的所有name改为wff pro 只改id>1的。
删:
delete from t1 where id > 1;
delete from t1 where name='wff';
delete from t1; #清空
show engines; # 用于显示当前数据库中可用的存储引擎列表。
create table t1(id int) engine = innodb; #创建一个名为"t1"的表,包含一个名为"id"的整数类型字段。使用innobd储存引擎。
show variables like "%mode"; #查看模式,其中的 like 是模糊匹配,%:匹配任意多个字符,_:匹配任意单个字符
修改严格模式:
set session #只在当前窗口有效
set global # 全局有效
set global sql_mode = 'STRICT_TRANS_TABLES'
select char_length(name) from t18; #char_length 统计字段的长度
创建存储时间类型的表
create table student2(
id int,
name varchar(16),
born_year year,
birth date,
study_time time,
reg_time datetime
);
存储时间
insert into student values(1,'egon','1880','1880-11-11','11:11:11','2020-11-11 11:11:11');
gender enum('male','female','others') default 'male'); #设置默认值,用在约束条件位置
id int unique; #将id字段的数据类型设置成不可重复,用在约束条件位置
unique(ip,port); # 将id和端口的组合值设置成不可重复,用在约束条件位置
create table t5(id int primary key); #将id字段设置为主键
id int primary key auto_increment; #设置自增主键
建立表与表之间的关系:
foreign key(dep_id) references dep(id) #声明关系
on update cascade # 联级更新:更新就同步更新
on delete cascade # 联级删除:删除就同步删除
select * from emp\G; #更改表的展示模式
between and #在....与....之间
group by 分组条件:
1、set global sql_mode = 'strict_trans_tables,only_full_group_by'; #开启严格模式以及分组设置。
2、select post from emp group by post; #将emp表中的数据按照post分组
按照什么分组就只能拿到分组,其他字段不能直接获取,需要借助一些方法(聚合函数):
max(最大值)
min(最小值)
sum(求和)
count(计数)
avg(平均)
as #给表取别名
where #筛选条件
having #分组之后的筛选条件,用法和where一样。
select distinct age from emp; #distinct:去重
order by #排序
select from emp order by age desc,salary asc; #先按照age降序排(desc),如果碰到age相同,则再按照salary升序排 (asc)
limit #限制展示条数
select from emp limit 5,5; #从第五个数字的后面开始,查询5位结束。
表查询
select from enp,dep; #结果叫 笛卡尔积
select from enp,dep where enp.dep_id = dep.id; #拼表操作
推荐写法:
inner join #内连接
left join #左连接
right join #右连接
union #全连接
select * from enp inner join dep on enp.dep_id = dep.id;
只拼接两张表中共有的数据
insert into dep(id,name) values(205,'sale');
select * from enp left join dep on enp.dep_id = dep.id;
左表所有的数据都展示出来 没有对应的项就用null
select * from enp right join dep on enp.dep_id = dep.id;
右表所有的数据都展示出来 没有对应的项就用null
左右两表所有的数据都展示出来,用法:
select from enp left join dep on enp.dep_id = dep.id
union
select from enp right join dep on enp.dep_id = dep.id;
select post,group_concat(name,'_HAHAHA') from emp group by post; #group_concat可以支持你获取分组后的其他字段值,还可以支持拼接操作
concat不分组的时候用
concat_ws:如果多个字段之间的连接符号是相同的情况下,可以使用concat_ws来完成用法:
select concat_ws(':',name,age,sex) from emp;
delimiter $$ 将sql语句的默认结束符号改为$$
trigger #触发器
IF condition THEN
-- 当条件为真时执行的代码块
ELSE
-- 当条件为假时执行的代码块
END IF;
start transaction; #开启事务
rollback #回滚
commit #确认
create procedure #存储过程语句
set @xxx = 10; #声明变量