1、安装完后添加环境变量 bin目录下 mysql.exe 开始运行
mysql -uroot -p -hlocalhost 连接mysql -u用户 -p密码 -h主机地址 (注意后面不要带空格)
2、数据库概念 数据库(databases) 数据表(table) 字段也叫列(column)(字段类型) 行 (row)
3、数据类型常用大概几种
int类型
根据数字大小 一般常用的 记住int()
浮点类型
一般用金额记住decimal(m,d)他不会四舍五入
字符串类型
常用类型:char(长度) 定长 不够空格不全 多了截掉 最大0-255字节
varchar(长度) 可变长度 根据设置的长度自动调整 最大 0-65535字节
text(长度) 最大 0-65535字节
时间类型
常用的 timestamp
字段名类型修饰
运算符
= (负值和判断都是 ) ! = < > <= >=
or (||)或 and(&&)并 between ... and 在什么范围内并 in(1,2,3,4)里面有返回true否则false not in(1,2,3,4)相反
SQL语句分类
DDL 数据库 和表的定义相关操作
查看所有数据库 SHOW DATABASES
切换数据库 USE 数据库名
创建数据库 CREATE DATABASE 数据库名
删除数据库 DROP DATABASE 数据库名
(表的定义)
创建表前先选择进入数据库 USE 库名
创建数据表及结构 CREATE TABLE 表名(列名 列类型 其他修饰关键词 ,.... , 列名 列类型)英文逗号分隔为一个字段
查看当前数据库的表 SHOW TABLES ;
查看表结构 DESC 表名
查看创建表的sql语句 SHOW CREATE TABLE 表名
删除表 DTOP TABLE 表名
添加表的字段 alter table 表名 add 字段名 数据类型; after 字段名 (表示加到哪个字段后面 不写默认加到最后)
删除表的字段 alter table 表名 drop 字段名 ;
修改表的类型和名 alter table 表名 change 字段名 要改的名 数据类型(如:int(10) not null);改名同时后面也可以改类型
修改表的字段名 alter table 表名 rename column 原名 to 新名
修改表字段的类型 alter table 表名 modify 字段名 要改的类型(如:varchar(10));
DML 表的记录相关操作(增删改)
插入 INSERT INTO 表名 (key,key) VALUES('值','值') ;
更新 update 表名 set 字段=值 where id=1;(加条件 否则全部修改)条件语句多样
删除 delete from 表名 where id=1; (加条件否则全删,数据全部删除后表字段结构还在) 自增id依然从之前开始
删表 truncate 表名 这样删除整表数据都删了 数据依然可以插入 自增id会从1开始
DCL数据控制和用户权限
控制权限
一般是运维使用的 如果没有运维一般我们用超级用户root连接 但是线上一般不允许使用root超级用户 首先只指定一个特定的IP连接 其他的都不让连接保证数据库的安全性
1、连接数据库 然后 show databases查看数据库 里面有个‘mysql’库自带的不能乱动里面存了一些权限的东西 进去mysql库 use mysql 进去后 查询那些表 show tables 里面有个user 里面存的能连接地址 有127.0.0.1,::1, localhost,三个地址 分别把两个删除只留下一个默认的localhost delete from user where host='::1' host='127.0.0.1' 你也可以修改成你指定的IP连接 比如你的数据库和服务器不是一台主机 设置一个可以连接的IP 这样就达到了指定连接 然后刷新权限 flush privileges 一定要刷新权限
2、修改密码 同样实在mysql 库 user表里面 updata password user set password=password('admin') where user = 'root'; password()表示加密 记得 flush privileges 才生效。 还有一种修改密码的方法 mysqladmin -uroot -h127.0.0.1 -padmin password 123456 admin 改123456
3、如果忘记密码 (1)先停止mysql (2) cmd终端输入 mysqld --skip-grant-tables # 表示跳过权限表,执行后会开启一个进程 (3)在新开一个cmd终端输入:mysql # 此时即可进入mysql (4)在按照上面方法1更改新密码 (5)按ctrl +c 关闭步骤2里的进程 (6)再启动mysql,用新密码进入mysql
创建用户
1、创建用户 同样进去mysql user表 create user 用户名 @'192.168.1.101 identified by '123456' (此用户只能在指定的ip地址上使用 )
如果你想让用户不限制地址 那么你可以设置地址为 ' % ' 一般我们不这样做不安全 创建的用户 是进去的 use mysql库的 flush privileges 刷新权限
2、分配权限 grant update,insert, delete on test.* to 用户名 @’192.168.1.101‘ ; (权限用逗号隔开 , on 数据库名.* 表示库里面所以的表 ,然后指定那个用户及IP地址)
3、撤销权限 revoke select,alter on test.* from 用户名 @’192.168.1.101‘
4、如果想给所有的数据库 就用 *.* 给所有的权限就给 ALL PRIVILEGES 一般不建议用
5、同时创建用户和授权 grant All on text.* to 用户名 @’192.168.1.101‘ identified by '123456'
6、查看权限 show grants for 用户名 @ip地址
7 删除用户 drop user 用户名 @ip地址
DQL数据的查询
select * from test where id=1 这是最简单的查询 你想要哪些字段你就用字段名去代替星号※ from 表名
过滤到重复值 select distinct 字段 from 表 ;
字段连接 select concat(name,age) from 表 ; -> name18
字段连接用个连接符 select concat_ws('===',name,age) from 表 ; -> name===18
查询出列 修改展示名 select name as '姓名' from 表 (不是修改的表中的只是临时的)
查询值中包含什么(模糊查询) select * from 表 where name like '%hello%' 如果只写前面%号表示以hello结尾的只写后面便是以hello开头 前后都写表示是否包含 。 ( sphinx)基于mysql全文搜索引擎
排序聚合分组查询
排序 #select * from 表名 order by id desc ; ( asc升序) , 计算总数 #select conun(*) from 表名
计算总和 # select sum(age) from 表名 ; , 计算平均值 #select avg(age) from 表名
最大值 #select max(age) from 表名 ; , 最小值 #select mim(age) from 表名
分组查询: select * from 表名 group by 字段 ; (按字段分组 可以配合 having 用)
连接查询
联合查询
限制查询条数