1. MySQL的基础语法命令

1. 数据库介绍

1.1 什么是数据库?

​ 存放数据的仓库,类似内存(机器重启数据丢失),记事本,excel
​ 软件开发中用专业软件存储数据,数据库软件

mysql软件管理—>仓库—>各个表—>数据

一行数据:记录  
一列数据:字段

1.2常见哪些数据库软件

oracle: oracle  收费  
DB2 : IBM 金融领域/银行 收费  
sqlserver: 微软  收费  
mysql: 瑞典 oracle: 免费

1.3 为啥有SQL语句

  • 所有数据库软件做的事情是一致:管理数据/将数据存入/取出/修改/删除
  • 为了避免各个公司产品底层不同差异性,相关标准组织定义一个标准 SQL

SQL: structer query language 结构化查询语句

DDL: data defition language:数据定义语言  对仓库创建/修改 对表进行创建/修改 (重点)
DML: data manipulation language:数据操作语言   对表上的数据插入/修改/删除  (重点)
DQL: data query languange:数据查询语言         将表上的数据查询            (重点)
DCL: data control languange:可以创建其它的用户 tom/mary/lucy ,让tom/mary/lucy登录系统

2. 对数据库的操作

2.1 查看mysql软件下的所有的仓库

show databases;

2.2 创建仓库

需求:在mysql软件创建自己的仓库 mydb1

语法格式: create database  仓库名称;
create database mydb1;

2.2 查看创建仓库语句,查看仓库默认编码

语法格式:
show create database mydb1;

2.3创建仓库的时候指定编码

需求:在mysql软件创建自己的仓库 mydb2,指定码表为utf8

语法格式: create database  仓库名称  character set 编码码表; 
create database mydb1 character set utf8;

2.4 删除仓库

需求:删除仓库mydb2

语法格式: drop database 仓库名称;
		 drop database mydb2;

2.5 修改仓库编码

需求:修改mydb1下编码修改为gbk

语法格式:  alter database 仓库名称 character set 码表
		  alter database mydb1 character set gbk;

2.6 查看当前在操作那个仓库

语法格式:  select database();

2.7 切换仓库

需求: 将当前操作切换到 mydb2;

语法格式:  use 仓库名称;

3. 对仓库下表结构操作

3.1 创建表

语法格式:

create table 表名(
   列名称  列类型(长度),
   列名称  列类型(长度),
   列名称  列类型(长度),
   列名称  列类型(长度)	
);

java支持类型:

  基本类型:  4类8种   byte short int long double float char boolean  整数/小数/字符/布尔  
  引用:	字符串 String  时间: Date

只要数据库软件,底层支持3大类类型

数字/字符串/时间日期

mysql支持类型

数字: int/bigint float/double
时间日期: date datetime timestamp  
字符/字符串/大段文本:char/varchar/text

区分char和varchar区别

需求,创建员工表 emp 姓名,密码,性别,生日信息

create table emp(
    name varchar(50),
	password varchar(50),
    sex char(10),
	birthday date
);

3.2 查看当前仓库下所有的表

show tables;

3.3 查看创建表结构

​ 格式: desc 表名; description:描述

3.4 创建表的时候为表上设置约束规则

​ 语法格式:列名 数据类型 约束规则

4个约束规则:

1_  自增长		auto_increment
2_  主键约束规则   当前列中的数据不允许重复,主键列的数据必须有,不能为空	primary key
3_  唯一约束	unique
4_  非空 		not null
create table emp2(
   id int primary key auto_increment,
   username varchar(50) unique not null,
   password varchar(50) not null,
   sex char(10),
   birthday date
);

3.5 修改表结构

(1)增加列

语法格式:  alter table 表名  add  列名  类型(长度) 约束
alter table emp2 add salary double;  
alter table emp2 add age int;

(2)修改现有列类型/长度/约束规则

语法格式:  alter table 表名  modify 列名 类型(长度) 约束;
alter table emp2 modify birthday date not null;
alter table emp2 modify username varchar(60) unique not null;

(3)修改列名称

语法格式 :  alter table 表名 change 旧列名 新列名  类型(长度) 约束规则;
alter table emp2 change username name char(40) unique not null;

(4)删除现有列

语法格式:  alter table 表名 drop 列名;
 alter table emp2 drop age;	 

(5)修改表名 rename:重命名

 语法格式:  rename talbe 旧表名 to 新表名
 rename table emp2 to person;

(6)修改表的编码集合

语法格式:alter table 表名  character set 编码集  
alter table person character set gbk;

(7)删除表

语法格式:drop table 表名;
drop table emp;

4. 对表上的数据进行控制

常见的操作: CRUD
create 创建 read:读取 update:更新 delete:删除

4.1 向表中插入数据

语法格式:
insert into 表名(列名1,列名2,列名3,列名4)  values(值1,值2,值3,值4);
insert into person(id,name,password,sex,birthday,salary)
   values(null,'tom','1234','nv','1992-2-2',30000);


insert into person values (null,'mary','1234','nv','1992-2-2',35000);
表中部分列插入数据 :如果某些列设置了非空约束,这些列必须插入数据  
insert into person(id,name,password,birthday) 
    values(null,'jack','11111','1990-1-1');
	
insert into person(name,password,birthday) 
    values('lucy','11111','1990-1-1');

4.2 修改表上数据

语法格式:update 表名 set 列名1=值1 , 列名2=值2 ... where 条件语句
UPDATE person SET PASSWORD = 'abcdef' ;
UPDATE person SET salary=88888 WHERE NAME='张三'; 
UPDATE person SET NAME='zhaoliu' , PASSWORD='zhaoliu' WHERE id=3;

4.3 删除数据

语法格式1delete from 表名 [where 条件 ]
语法格式: truncate [table] 表名

DELETE FROM person WHERE NAME ='mary';
DELETE FROM person ;
TRUNCATE TABLE person;
TRUNCATE person;

delte from person ; truncate table person ;区别是什么?

  • truncate方式删除数据底层:先将表扔掉drop,重新创建一个和原先person结构一摸一样表结构,速度快
  • delete方式删除数据底层:按行擦除

4.4 查询数据

4.4.1查询表中的所有数据
select * from 表名;
4.4.2 查询表上的部分列数据
语法格式 select 列名1 , 列名2 , ....列名n from 表名
4.4.3 查看所有学生的姓名年龄
SELECT NAME , age FROM student;
4.4.4 按条件查询数据
语法格式 select 列名1 , 列名2 , ....列名n from 表名 where 条件  
SELECT * FROM student WHERE age >=24;

(1)关系运算符

可以出现关系运算符 列名 关系元素符  具体值
SELECT * FROM student WHERE age >24;
SELECT * FROM student WHERE age <24;
SELECT * FROM student WHERE age <=24;
SELECT * FROM student WHERE age !=24;
SELECT * FROM student WHERE age <> 24;

(2) and or not

查询年龄>23,并且成绩>80的同学信息
SELECT * FROM student WHERE  (age > 23) AND (score > 80);

查询成绩在80~100(包含)之间的学生信息
SELECT * FROM student WHERE (score>=80)  AND (score<=100);  

(3)between …and…

语法格式: select * from 表名  where 列名 between a and b ;  包括a和b
SELECT * FROM student WHERE score BETWEEN 84 AND 100;

(4)in

语法格式  select * FROM student where 列名 in (具体值1,具体值2,具体值3,具体值4)
SELECT * FROM student WHERE age IN(18,23,25);

(5)like

语法格式  select * from student where 列名 like  '%A_'   %:任意0个或者多个字符  _任意单个字符  

(6)不能通过 列名= null 方式来判断------------> 列名 is null

查询所有没有录入年龄的学生的信息
SELECT * FROM student WHERE age IS NULL;

(7)过滤重复值查询 distinct

SELECT DISTINCT age FROM student 

表中的数据什么时候属于重复的数据:

  • 如果查出来的结果仅仅有一列 ,age
  • 如果查出来的结果仅仅有2列 , 只有当着2个列的数据完全一致的时候,才是重复的数据
假如查询学生的姓名,年龄
stuName   stuAge  stuSex
tom        18     男
tom        19

(8)排序查询

单条件排序
语法格式: select * from 表名 order by 列名  asc
语法格式: select * from 表名 order by 列名  desc

多条件排序
语法格式: select * from 表名 order by 列名1  desc , 列名1 asc

(9)对列上起别名

语法格式:  select 列名1 as 别名1 , 列名2 as 别名1 , 列名3 as 别名1 from 表名 where 条件
select 列名1  别名1 , 列名2  别名1 , 列名3  别名1 from 表名 where 条件

需求1、给年龄和分数起别名
SELECT age AS '年龄' , score AS '成绩'  FROM student;

需求2、省略关键as 再次查询
SELECT age  '年龄' , score  '成绩'  FROM student;

(10)统计查询

  • 统计函数

    count函数: 统计个数
    语法格式: select count(*) from 表名
    语法格式: select count(列名) from 表名

  • sum函数 : 求和

    语法格式: select sum(列名) from 表名

  • avg函数使用

作用:对列中的数据求平均值

语法格式:  select avg(列名) from 表名;
  • max / min 函数使用

作用: 求最大/小值

语法格式:  select max(列名) , min(列名) from 表名;  

(11)ifnull

SELECT age ,score, age+ score FROM student;
如果某个值为null参与运算,整体的结果就是null
SELECT IFNULL(age,0) AS aa , score FROM student;
SELECT IFNULL(age,0)  , score , IFNULL(age,0)+score FROM student;

(12)作用:截取小数位数

语法格式: truncate(列名,小数的位数) 
SELECT IFNULL(age,0)  , score , TRUNCATE( IFNULL(age,0)+score ,2 ) FROM student;

(13)分组查询

select 分组条件 from student group by 分组条件

select 分组条件 , 聚合函数 from student group by 分组条件

5. 备份和恢复数据

5.1 备份数据

语法:mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径

5.2 恢复数据

语法:mysqldump -u 用户名 -p 数据库名 < 磁盘SQL文件路径

5.3 复制一张表

复制 employee 表 => employee2
create table employee2  like employee;
insert into employee2 select * from employee;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值