MySQL基础总结

一.数据库的简介

1、什么是数据库?

  存储数据的仓库,就是数据库。本质上就是一个文件系统,而且存储数据可以实现持久化存储!

2、与数据库紧密相关的角色、对象

数据库系统(database system)简称DBS,由数据库、数据库管理员、数据库管理系统构成.

二、数据库的分类

  数据库按照存储数据结构的分为关系型数据库和非关系型数据库:
  (1)关系型数据库(relational database):存储数据的典型结构就是二维表
     关系型数据库中存放数据的结构是表,首先要有数据库,再在数据库中创建表,然后在表中存放数据,关系型数据库内部,表与表之间是可以建立关联的.
       优点:数据结构鲜明,容易管理
       缺点:如果数据量过于庞大,那么在操作数据时,效率相对来说过于低下
  (2) 非关系型数据库:结构简单,数据之间毫无关系,这样就在架构层面做到了易扩展,数据库庞大时,性能也会很高.

三、sql语句认知

1.sql语句的分类

DDL(data definition language)数据定义语

针对数据库或者表结构的创建、删除、修改,通俗来说就是定义数据结构的sql语句。
create、drop、show、alter是其关键字

DML(data manipulation language)数据操作语言

主要针对表中的数据进行更新,更新了包含了添加、修改、删除。
insert、updata、delete是其关键字

DQL(data query language)数据查询语言

主要针对表中数据的查询操作,select是其关键字

DCL(data control language)数据控制语言
TCL(transaction control language)事务控制语言
CCL(cursor control language)指针控制语言

2、sql语句的书写规范

(1)、sql语句不区分大小写,也就是对大小写不敏感!但是要注意,
不区分大小的是sql语句的关键字,但是自定义的内容严格区分大小写!
(2)、sql语句关键字与内容之间使用空格隔开,目的在确保sql语句正确的前提下,提高代码的可读性
(3)、每一条sql语句最后都要以分号结尾
(4)、sql语句中的所有符号都是英文状态下的符号
(5)、sql语句如果非常复杂,为了提高代码的可读性,我们可以换行书写

六、sql语句的学习

1、DDL数据定义语言

作用:主要针对数据库、表的创建、删除、修改

DDL中针对数据库的操作

(1)创建数据库

创建数据库语句:create database 数据库名称
CREATE DATABASE day;

创建数据库时,判断是否存在。如果不存在则创建,如果存在则创建sql语句报错

create database if not exists 数据库名称;
CREATE DATABASE IF NOT EXISTS day1;

创建数据库时指定编码格式

create database 数据库名称 character set "编码格式";
CREATE DATABASE day2 CHARACTER SET "utf8";

(2)、查看MySQL管理的所有数据库

查看当前MySQL下总共有多少数据库
SHOW DATABASES;

(3)、切换数据库

use 数据库名称
USE day;

(4)、修改数据库的编码格式

alter database 数据库名称 character set "字符编码集";
ALTER DATABASE day1 CHARACTER SET "utf8";

(5)、查看当前数据库的创建语句、或者查看当前数据库的信息

show create database 数据库名称;
SHOW CREATE DATABASE day1;

(6)、删除数据库

drop database 数据库名;
DROP DATABASE day1;
DROP DATABASE day2;

MySQL常用类型:

整型用 int
浮点型用 double
字符串 varchar(长度)
日期类型
    date 年月日
    datetime 年月日时分秒(只要4位年份下都可)
    timestamp 年月日时分秒(1970-2038.01.19 03:14:07)

(1)、创建表

create table 表名(
    字段名 1 类型 约束,
    字段名 2 类型 约束,
    ...
);

CREATE TABLE student(
    sname VARCHAR(30),
    age INT,
    height DOUBLE,
    hobby VARCHAR(30)
);
约束可有可无,而且最后一个字段书写完毕不要写逗号
在创建表时,要先切换数据库到指定的数据库中

(2)、查看表结构

desc 表名;
DESC student;

(3)、查看创建表的语句、查看创建表的信息

show create table 表名;
SHOW CREATE TABLE student;

(4)、修改表名

alter table 旧表名 rename 新表名;
ALTER TABLE student RENAME stu;

(5)、新增一个字段,将其添加到所有字段的末尾

alter table 表名 add 字段名 类型 约束;
ALTER TABLE student ADD gender VARCHAR(2);

(6)、新增一个字段,将其添加到所有字段的首位

alter table 表名 add 字段名 类型 约束 first;
ALTER TABLE student ADD gender VARCHAR(2) FIRST;

(7)、新增一个字段,在某一列的后面添加

alter table 表名 add 字段名 类型 约束 after 已存在的列名;
ALTER TABLE student ADD gender VARCHAR(2)AFTER sname;

(8)、删除表中的字段

alter table 表名 drop 字段名;
ALTER TABLE student DROP weight;

(9)、修改字段的信息(字段名不该,只改变类型及约束)

alter table 表名 modify 字段名 新类型 新约束;
ALTER TABLE student MODIFY hobby VARCHAR(40);

(10)、修改字段,字段名、类型、约束全部都可以替换

alter table 表名 change 旧字段名 新字段名 类型 约束;
ALTER TABLE student CHANGE sname `name` VARCHAR(20);

(11)、删除表

drop table 表名;
CREATE TABLE teacher(
    tname VARCHAR(30)
);
DROP TABLE teacher;

2、DML数据操作语言

主要针对表中数据的更新(添加、修改、删除)

添加数据:
    添加数据的语法格式:
	insert into 表名 (字段1, 字段2, ...) values/value
	(值1, 值2, ...)
注意事项:
1、如果只添加一条数据,使用values,如果想要一次性添加多条数据,使用value
   INSERT INTO student (sname, hobby, age, height)VALUES
        ("王二","卖酒","23","160");
2、字段的个数与类型要与值的个数与类型一致
3、如果想要为字段赋值为空
	不写此字段,忽略此字段的赋值
	字段赋值为null
	NSERT INTO student (hobby, age, height) VALUES
         ("遛狗", 21, 165);
    INSERT INTO student (sname, hobby, age, height) VALUES
         ("王小二", "喊客人", NULL, 160);
4、现在要为表中所有的字段完成赋值
	将字段挨个书写出来
	忽略字段的书写,直接写value,但是在写值要注意,个数与类型要与表中字段完全一致!
	INSERT INTO student VALUES ("张三", "吃鱼", 24, 170);
5、如果想要一次性添加多条数据,那么数据与数据之间使用逗号隔开!
    INSERT INTO student VALUE ("小倩", "吃凉皮", 17, 180),
		           ("刘大", "看书", 16, 170),
		           ("王五", "看电视", 22, 183);

修改数据
    修改数据的语法格式:
	update 表名 set 字段名 = 值, 字段名 = 值, ...
	[where 条件]
	[]内部的内容是可有可无,是为了方便理解,但是真有条件时,[]不写!
注意事项:
1、修改时没有条件,那么表中所有的记录修改的字段的值都会成为一致状态!
   UPDATE student SET age = 18;
2、修改时有条件,先通过条件筛选出满足的记录,修改这些记录中字段的值!
   UPDATE student SET hobby = "吃瓜" WHERE sname = "王二";
3、如果想要一次性改变多个字段的值,使用逗号隔开
   UPDATE student SET hobby = '看戏', age = 28 WHERE sname = "张三";
4、修改后的值,不能超出该字段的长度范围

删除数据:
    删除数据的语法格式:
	delete from 表名 [where 条件];
注意事项:
1、删除时没有条件,将表中所有记录都删除
    DELETE FROM student;
2、删除时携带条件,将满足条件的记录删除
    DELETE FROM student WHERE height < 150;
	TRUNCATE TABLE student;

	CREATE TABLE teacher (
	tid INT PRIMARY KEY AUTO_INCREMENT,
	tname VARCHAR(30)
	);
	INSERT INTO teacher VALUE (NULL, "王小二"),
			(NULL, "张小三"),
			(NULL, "赵四");
	DELETE FROM teacher;
	TRUNCATE TABLE teacher;
    删除表中所有的记录的sql语句
	delete from 表名;
	truncate table 表名;
1、delete删除,只是将表中的记录删除,没有操作表,所以像主键自增长的记录还在
	而truncate删除,是将表整体删除,再创建一张新表
2、delete属于dml操作、truncate属于ddl操作

3、DQL(数据查询语言)

查询数据的语法格式:
     select 字段1, 字段2, ... from 表名 [where 条件]
     获取所有学员的爱好及身高
     SELECT hobby,height FROM student;

如果想要获取所有字段的值
1、将字段挨个书写出来
   SELECT sname, hobby, age, height FROM student;
2、使用*通配所有字段
   SELECT *FROM student;

对结果集中的数据进行去重操作
SELECT DISTINCT height FROM student;

别名的设置:
	别名能够设置给字段以及表名
	别名的设置方法:as 别名  或者  省略as直接写别名
	最常见的用法还是给表起别名!!!
	
	#获取所有学生的姓名及年龄
    SELECT sname AS 姓名, age 年龄 FROM student;
    SELECY s.`sname`,s.`age` FROM student s;

#获取所有年龄在18岁以上的学生信息
SELECT * FROM student WHERE age > 18;

#获取所有年龄在18到30之间的学生信息(包含18和30)
SELECT * FROM student WHERE age >= 18 AND age <= 30;
SELECT * FROM student WHERE age BETWEEN 18 AND 30;

#获取年龄为24和55的学生信息
SELECT * FROM student WHERE age = 24 OR age = 55;
SELECT * FROM student WHERE age IN (24, 55);

判断一个值为空,可以使用is null 也可以使用 <=>
但是不能用=
SELECT * FROM student WHERE sname = NULL;
SELECT * FROM student WHERE sname <=> NULL;
SELECT * FROM student WHERE sname IS NULL;

判断一个不为空,可以使用is not null
但是不能使用!= 或者 <>
SELECT * FROM student WHERE age IS NOT NULL;
SELECT * FROM student WHERE age != NULL;(错)
SELECT * FROM student WHERE age <> NULL;(错)
SELECT * FROM student WHERE NOT(age <=> NULL);
SELECT * FROM student WHERE age != 18;
SELECT * FROM student WHERE age <> 18;

模糊查询的语法格式:
	where 字段名 like "模糊条件"
	模糊条件中有两个特殊的符号来代替关键内容
	_	模糊一个字符
	%	模糊0~n个字符
#获取学生姓名为两个字的学生信息
SELECT * FROM student WHERE sname LIKE "_ _";(此处不能有空格,只为方便观察为两个横杠)
#获取名字以张开头,三个字的学生信息
SELECT * FROM student WHERE sname LIKE "张_ _";(此处不能有空格,只为方便观察为两个横杠)
#获取名字以陈开头的学生信息
SELECT * FROM student WHERE sname LIKE "陈%";
#获取名字以红结尾的学生信息
SELECT * FROM student WHERE sname LIKE "%红";
#获取名字里面带飞的学生信息
SELECT * FROM student WHERE sname LIKE "%飞%";

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值