AI智能
改变未来

【MySQL】5分钟学会数据库基本操作(一)

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

文章目录

  • 一、SQL是什么?[ul]SQL服务的启动
  • 分类:
  • 二、关于数据库CRUD操作a.查询
  • b.where条件:
  • 1.建表之后,对【表】进行操作:
  • 2.对表内数据进行管理:
  • [/ul]

  • 三、查询
      1. 排序查询
    • 2. 聚合函数(列的计算)
    • 3. 分组查询
    • 4. 排序查询
  • 四、约束
      实例操作:
    • 1.非空约束:not null
    • 2.唯一约束
    • 3.主键约束:primary key
    • 4.自动增长:auto_increment
  • 五、总结
      错误实例:

    一、SQL是什么?

    首先我们要知道什么是数据库?

    • 数据库在计算机中可以简单的理解为存储数据的仓库

    structured Query Language:结构化查询语言(一种可以操作所有关系型数据库的管理规则)

    今天我们看到数据库,那么,什么是数据库呢?我们知道database就是数据库。它是用来存储和管理数据的一个仓库,它和普通的文件系统不一样的是,它不仅仅可以持久化数据,而且我们知道SQL语句是一种较为统一的方式,可以对数据进行方便的管理,例如说我们用sql语句就可以对里面的数据进行管理。

    另外,数据库有不同的数据库软件,其中我们Java中比较常用的有MySQL数据库以及Oracle数据库,SQLserver在Java中的使用比较少。

    SQL服务的启动

    那么我们启动MySQL服务,
    ①在计算机管理中打开
    ②在cmd窗口中点击services.msc打开服务窗口
    ③net stop mysql或者net start mysql

    分类:

    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操作

    常见的命令:show databases、use 数据库名称、show tables

    #Createcreate database hzyc;create database if not exists hzyc98 character set gbk;#Retrieveshow databases;show create database hzyc98;#Updatealter database hzyc98 character set gbk;#Deletedrop database hzyc98;drop database if exists hzyc98; #查看当前使用的数据库select database();show tables;use hzyc98

    1.建表之后,对【表】进行操作:

    表名/表头为:zoomlist

    #查show tables; -- show tables_in_hzyc98desc 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:自定义名字展示,也可以不写asSELECT Name,scroe1+IFNULL(scroe2,0) 总分 FROM zoomlist; --ifnull遇到没有值的直接给赋值为0SELECT 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的数据就不参与计算,不会报错!

    1. count:统计个数
    2. 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的区别? [ul]where在分组前限定,having在分组之后限定;
    • where不符合条件的不参与分组,having不符合条件不会显示;
    • 只有having可以后跟聚合函数判断。

    [/ul]

    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个数据

    四、约束

    • 约束:
    1. 主键约束:primary key
    2. 非空约束:not null
    3. 唯一约束:unique
    4. 外键约束: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); --破除非空约束

    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;

    实例操作:


    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 keyalter 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_incrementalter table employee modify id int;

    五、总结

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

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

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

    错误实例:

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

  • 赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 【MySQL】5分钟学会数据库基本操作(一)