1.登录MySql命令
mysql -h 主机名 –u 用户名 –p 密码
-h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
-u : 登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
2.开启服务和关闭服务
方式1: 我的电脑-----> (右键)管理---->服务和应用程序---->服务----找到MySQL服务右键启动或关闭(cmd输入services.msc)
方式2: 管理员方式打开cmd,使用命令: net start mysql80 开启MySQL服务; 使用命令:net stop mysql80 关闭MySQL服务
3.数据库语言类型
* 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
* 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等
* 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。
* 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等
4.变量类型
类型:int,double,date,VARCHAR(M),M为0~65535之间的整数,TEXT,允许长度0~65535字节
5.语法
创建数据库:
- create database 数据库名;
- create database 数据库名 character set 字符集;(utf8,gbk)
- 查看所有数据库:show databases;
- 查看数据库结构:show create database 数据库名;
- 查看正在使用的数据库:select database();
- 切换数据库:use 数据库名;
- 删除数据库:drop database 数据库名称;
- 创建数据表:create table 表名(字段名 类型(长度) 约束,字段名 类型(长度) 约束);
- CREAT TABLE users (
uid INT primary key,
uname VARCHAR(20),
uaddress VARCHAR(200)
# primary key(uid)
);- create table sort(sid INT primary key auto_increment, sname VARCHAR(100));
- 增加主键:alter table 表名 add primary key (column_name);
- 删除主键:alter table 表名 drop primary key;
约束的类型:
主键约束:PRIMARY KEY 非空,唯一
非空约束:NOT NULL
唯一约束:UNIQUE
外键约束:FOREIGN
- 查看数据库的所有表:show tables;
- 查看表结构:desc 表名;
- 删除表:drop table 表名;
- 修改表添加列:alter table 表名 add 列名 类型(长度) 约束;
- 修改表修改列的类型长度及约束:alter table 表名 modify 列名 类型(长度) 约束;
- 修改表列名:alter table 表名 change 旧列名 新列名 类型(长度) 约束;
- 修改表删除列:alter table 表名 drop 列名;
- 修改表名:rename table 表名 to 新表名;
- 修改表的字符集:alter table 表名 character set 字符集;
数据表中添加数据:
- insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
- insert into 表 values (值1,值2,值3..); --向表中插入所有列
更新表记录:
- update 表名 set 字段名=值,字段名=值;
- update 表名 set 字段名=值,字段名=值 where 条件;
删除记录:
- delete from 表名 [where 条件]; # 一条一条删除,不清空auto_increment记录数
- truncate table 表名; # 直接将表删除,重新建表,auto_increment将置为零,从新开始。
查询记录:
- 查询指定字段信息:select 字段1,字段2,...from 表名 [where条件];
- 查询表中所有字段:select * from 表名;
- distinct用于去除重复记录:select distinct 字段 from 表名;
- 表别名:select * from 表名 as 别名;
- 列别名:select 字段名 as 别名 from 表名;
运算:
and or not 不等于<> between A and B in(set) not in(set) is null is not null
like(通配符) %匹配多个字符,_ 匹配一个字符
条件查询:select 字段 from 表名 where 条件;
- SELECT * FROM finance WHERE name LIKE "%支出%"; # 查询出账务名称包含”支出”的账务信息
- SELECT * FROM finance WHERE name LIKE "_____"; # 五个下划线_ 查询出账务名称中是无五个字的账务信息
排序查询:SELECT * FROM 表名 ORDER BY 字段 ASC/DESC,默认升序ASC,可指定多个排序不同的字段,先者先排
聚合函数
* count:统计指定列不为NULL的记录行数;
* sum:计算指定列的数值和,如果指定列;
* max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串类型不是数值类型,那么计算结果为0排0序运算;
* min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
* avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
select count(*) as 'count' from finance;
select sum(money) from finance;
select max(money) from finance;
select min(money) from finance;
select avg(money) from finance;
SELECT SUM(money),name FROM finance GROUP BY name;
SELECT SUM(money) as 'getsum',name FROM finance GROUP BY name having getsum>5000;
drop,truncate,delete的区别:
- delete:删除表的内容,表的结构还存在,不释放空间,可以回滚恢复(rollback);
- truncate:删除表的内容,表的结构存在,可以释放空间,没有备份表之前要慎用;
- drop:删除表内容和结构,释放空间,没有备份表之前要慎用;