SQL--操作关系型数据库语言
在cmd中输入net stop/start mysql80
来 启用/关闭 MySQL.
在cmd中输入mysql -h 127.0.0.1 -P 3306 -u root -p
来连接到MySQL客户端,
或者直接打开MySQL的客户端终端.
关系型数据库使用表结构储存数据,使用统一的sql语言.
SQL的通用语法
1. sql语句可以多行或单行书写,以分号结尾.
2. MySQL数据库中的SQL语言不区分大小写.
3. 注释, --内容
,#内容
或者/*内容*/
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,定义数据库对象 |
DML | Data Manipulation Language | 数据操作语言,对数据库进行增删改 |
DQL | Data Query Language | 数据查询语言,查询表中数据 |
DCL | Data Control Language | 数据控制语言,创建用户,控制访问权限 |
DDL
数据库操作
- 查询:
show databases;
- 查询当前数据库:
select database();
- 创建:
create database [if no exists] 数据库名;
- 删除:
drop database 数据库名;
- 使用:
use 数据库名;
表操作
- 查询当前库所有表:
show tables;
- 查询表结构:
desc 表名;
- 查看表的建表语句:
show create table 表名;
- 创建表 --> 例:
mysql> create table tb_user(
-> id int comment '编号',
-> name varchar(50) comment '姓名',
-> age int comment '年龄',
-> gender varchar(1) comment '性别'
-> ) comment '用户表';
ps: varchar为字符串类型,括号中数字为字符串长度,会根据写入的字符串长度调整该数据的存储空间.
数值类型
类型 | 大小(byte) |
---|---|
tinyint | 1 |
smallint | 2 |
mediumint | 3 |
int | 4 |
bigint | 8 |
float | 4 |
double | 8 |
表操作
- 添加字段
alter table 表名 add 字段名类型 [comment 注释][约束];
- 修改某一字段的数据类型
alter table 表名 change 旧字段名 新字段名 类型 [comment 注释][约束];
- 删除字段
alter table 表名 drop 字段名;
- 修改表名
alter table 表名 rename to 新表名;
- 删除表
drop table [if exist] 表名;
- 删除指定表,并重新创建(只有表结构,而无数据)
truncate table 表名;
mysql图形化界面:sqlyog datagrip
DML
- 添加数据
insert into 表名 (字段1,字段2....) values (值1,值2....);
- 给全部字段添加数据
insert into 表名 values (值1,值2....);
例:
insert into employee (id,workno,name,gender) values (1,'1','idcast','男');
使用select * from employee;
查看表. - 修改数据
update 表名 set 字段1=值1,字段2=值2.... [where 条件];
- 例:
update employee set name= 'itheima' where id = 1;
若不带where条件语句,会更新整张表的内容
- 删除数据
delete from 表名 where 条件;
DQL
- 查询多个字段
select 字段1 字段2 .... from 表名;
或者select * from 表名;
- 设置别名
select 字段1[as 别名1],字段2[as 别名2]....from 表名;
- 去除重复记录
select distinct 字段列表 from 表名;
- 条件查询
select 字段列表 from 表名 where 条件列表;
条件 | >,<,<>,<=,>=,=,!=,between...and...,is null,in(...),like |
逻辑符 | and或&&,or或||,not或! |
例:
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;
ps:将15 和 20 调换后不可用,between后跟最小值,and后跟最大值.select * from emp where age in(18,20,25);
- 查询姓名为俩个字的员工信息
select * from emp where name like '__';
- 查询身份证最后一位是X的员工信息
select * from emp where idcard like '%X';
聚合函数
作用于某列数据
count --> 统计数量
max,min --> 最大最小值
avg --> 平均值
sum --> 求和
用法:select 聚和函数(字段列表) from 表名
例:
select count(id) from emp;
null不参与聚合函数的计算.select avg(age) from emp;
- 统计西安地区员工年龄之和
select sum(age) from emp where workaddress = '西安';
分组查询
select 字段列表 from 表名 [where 条件] group by 分组名字段 [having 分组后过滤条件];
例:按性别分组
select gender,count(*) from group by gender;
女 | 7 |
---|---|
男 | 9 |
select gender,avg(age) from group by gender;
女 | 31.4268 |
---|---|
男 | 46.8889 |