control list 显示mysql_【MySQL】5分钟学会数据库基本操作(一)

(全文约5500字,预计阅读时间5分钟)

一、SQL是什么?

structured Query Language:结构化查询语言

分类:

1) DDL(Data Definition Language)数据定义语言

用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等

2) DML(Data Manipulation Language)数据操作语言

用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等

3) DQL(Data Query Language)数据查询语言

用来查询数据库中表的记录(数据)。关键字:select, where 等

4) DCL(Data Control Language)数据控制语言(了解)

用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

二、关于数据库CRUD操作

#Create

create database hzyc;

create database if not exists hzyc98 character set gbk;

#Retrieve

show databases;

show create database hzyc98;

#Update

alter database hzyc98 character set gbk;

#Delete

drop database hzyc98;

drop database if exists hzyc98;

#查看当前使用的数据库

select database();

show tables;

use hzyc98

1.操作表list:

表名/表头为:zoomlist

#查

show tables; -- show tables_in_hzyc98

desc zoomlist;

#增

create table zoomlist (

Name varchar(30),

Age int,

ID int,

Height double(5,1)

)

#删

drop table if exists zoomlist;

#改

alter table zoomlist rename to newzoomlist;

alter table zoomlist character set gbk;

alter table zoomlist add Name varchar(20);#加列

alter table zoomlist change Age newAge int;

alter table zoomlist modify Age char(8);

alter table zoomlist drop Name;

/*设置类型:*/

- int、double(5,1)、varchar(20)

- date #yyyy-MM-dd

- datetime #yyyy-MM-dd HH:mm:ss

- timestamp#时间戳 yyyy-MM-dd HH:mm:ss

2.对表内数据进行操作:

#除了数字,其他都需要引号来赋值

insert into zoomlist (Name, Age, ID, Height) value('美洲豹',5,'20201207',3.2);

insert into zoomlist ('美洲豹',5,'20201207',3.2);

#删除

delete from zoomlist where [条件];

delete from zoomlist;

TRUNCATE TABLE zoomlist;

#修改

update zoomlist set Name = '大笨象' Age = 12 where address = '深圳';

update zoomlist set address = '深圳';

a.查询

#查询

#尽量不要用 * 先desc一下表里面有啥,然后在决定展示什么东西。

SELECT * FROM zoomlist;

SELECT Name,Age FROM zoomlist; --只显示某个列,方便查看!

SELECT DISTINCT Name FROM zoomlist; --去除结果中[完全重复]的

SELECT Name,score1,score2,scroe1+scroe2 FROM zoomlist;--as:自定义名字展示,也可以不写as

SELECT Name,scroe1+IFNULL(scroe2,0) 总分 FROM zoomlist; --ifnull遇到没有值的直接给赋值为0

SELECT Name,score1,score2,scroe1+IFNULL(scroe2,0) AS 总分 --显示表头

FROM zoomlist,peoplelist; --从zoomlist、peoplelist里面获取

b.where条件:

* > 、< 、<= 、>= 、= 、!=、<>--不等号

* and、or、not --关键字比&&、||、!好用推荐

* BETWEEN...AND --范围内都符合就行

* IN( 集合) --特定值的范围

* LIKE:模糊查询(1)_:单个任意字符;(2)%:多个任意字符

* IS NULL

例子:

select Name, Age from Student where age between 12 and 20;

select Name, Age from Student where age in (12,14,16,18);

select Name, Age from Student where name like '%牛%'; --查名字里面包含了牛的学生

select Name, Age from Student where name is not null; -- 查询学生:名字空的不查

三、查询

1. 排序查询

select * from employee order by age;

select * from employee order by age asc; --升序

select * from employee order by age desc; --降序

select * from employee order by age desc height desc; --第一个一样的时候,才会用第二个方法排序(age降序,身高降序)

2. 聚合函数(列的计算)

排除了null数据,并且有null的数据就不参与计算,不会报错!

count:统计个数

min、max、sum、avg:求值

select count(*) from student;

select count(ifnull(age,20)) from student;

select count(age) from student;--如果没有就不记录

select count(id) from student; --我们一般选用主键来统计个数

select max(age) from student;

select min(age) from student;

select sum(age) from student;

select avg(age) from student;

3. 分组查询

group by 之后就是两个不同的组别了,他们不能再去查看一个独立的个体了。

分组之后查询的字段:分组字段、聚合函数。

where和having的区别?

where在分组前限定,having在分组之后限定;

where不符合条件的不参与分组,having不符合条件不会显示;

只有having可以后跟聚合函数判断。

select sex,count(name) from employee group by sex having count(name)<6;

select sex,count(name) from employee where name = '张四' group by sex ;

4. 排序查询

limit是一个MySQL的方言,用于分页

SELECT * FROM student LIMIT 0,5; -- 第1页,从0索引开始,读5个数据

SELECT * FROM student LIMIT 7,10; -- 第2页,从7索引开始(第8个数据),读10个数据

四、约束

约束:

主键约束:primary key

非空约束:not null

唯一约束:unique

外键约束:foreign key

1.非空约束:not null

-- 建表时添加非空约束:

create table employee(

name char(30),

sex char(8) not null

)

alter table employee modify sex char(8) not null; --添加非空约束

alter table employee modify sex char(8); --破除非空约束

5b485a53372348a90a2e3c7dce61d752.png

2.唯一约束

只可以有一个null值,不能再多了;

删除约束只可以用drop index来删除unique约束

-- 建表时添加唯一约束:

create table employee(

name char(30),

sex char(8),

score int unique --分数要唯一

)

--添加唯一约束

alter table employee modify name char(8) unique;

--破除唯一约束

-- alter table employee modify sex char(8); 不可用

--破除name身上的unique约束用drop index除去索引

alter table employee drop index name;

实例操作:

332adb97dea22728af45dde81401477c.png

c649306ebff740f3245fdb18e38b05a3.png

3.主键约束:primary key

一个表只有一个primary key,非空且唯一

做记录的唯一标识,相当于index

-- 建表时添加主键约束:

create table employee(

id int primary key, --给id加上主键约束

name char(30),

)

--添加唯一约束

alter table employee modify id int primary key;

--破除唯一约束

-- alter table employee modify id int; 不可用!

--破除id身上的primary key约束只能用drop primary key

alter table employee drop primary key;

4.自动增长:auto_increment

只对数值有用,而且一般可以放给主键做自动增长

-- 建表时添加auto_increment:

create table employee(

id int auto_increment, --给id加上auto_increment

name char(30),

)

--添加auto_increment,自动从1开始

alter table employee modify id int auto_increment;

--设置初值

alter table employee auto_increment = 100;

--破除auto_increment

alter table employee modify id int;

五、总结

我们学习了SQL是什么,做了一个简单的入门,也列举了一些MySQL的基本操作,还有查询、约束是怎么一回事。

但是我也是刚刚才接触MySQL,所以基本的操作手还比较生,要多学多练多去实践才能出真知。

在之后我们还会学习到MySQL的多重关系、多表查询、事务(还不太清楚是什么)、JDBC各个语句、数据库连接池druid、JDBCTemplate……还有好多东西要学,但是现在的任务还是在于把基本的东西梳理好,把基础巩固了才是硬道理!!!

错误实例:

如添加数据的时候不写列名,那必须给所有列值,不然报错!

fdd8f7797f68a3c71564a40c11fe67d6.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值